245 lines
8.0 KiB
C#

using Assets.Scripts;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.InputSystem;
using UnityEngine.UI;
using Assets.Scripts.Player;
using Assets.Scripts.InteractableObjects;
public class Controls : MonoBehaviour
{
GameObject player;
GameObject fight;
GameObject worldGen;
GameObject playerCam;
UIHandler uihandler;
Vector3 input;
Vector2 view;
PlayerInput playerInput;
MoveDirection direction;
void Start()
{
player = GameObject.Find("Player");
fight = GameObject.Find("Fight");
worldGen = GameObject.Find("WorldGenerator");
playerCam = GameObject.Find("Main Camera");
uihandler = GameObject.Find("UIHandler").GetComponent<UIHandler>();
input = new Vector3();
view = new Vector2();
playerInput = GetComponent<PlayerInput>();
direction = MoveDirection.None;
}
// Update is called once per frame
void Update()
{
if (uihandler.state == UIState.GAME && playerInput.currentActionMap.name != "MainGame")
{
playerInput.SwitchCurrentActionMap("MainGame");
}
if (uihandler.state != UIState.GAME && playerInput.currentActionMap.name != "Menu")
{
playerInput.SwitchCurrentActionMap("Menu");
}
if (!player.GetComponent<PlayerGameObject>().takeDamage(0))
{
if (!uihandler.isPlayerInFight())
{
if (uihandler.canPlayerRotate())
{
playerCam.GetComponent<PlayerCamera>().lookAround(view, playerInput.currentControlScheme == "Controller");
}
if (uihandler.canPlayerMove())
{
player.GetComponent<PlayerGameObject>().move(input);
}
}
}
}
public void FixedUpdate()
{
if (direction != MoveDirection.None)
{
AxisEventData data = new AxisEventData(EventSystem.current);
data.moveDir = direction;
data.selectedObject = EventSystem.current.currentSelectedGameObject;
ExecuteEvents.Execute(data.selectedObject, data, ExecuteEvents.moveHandler);
}
if (playerInput.currentControlScheme == "Controller")
{
if (Cursor.lockState != CursorLockMode.Locked)
{
Cursor.lockState = CursorLockMode.Locked;
}
GameObject.Find("txtInteract").GetComponent<Text>().text = GameObject.Find("txtInteract").GetComponent<Text>().text.Replace("[E]", "[ButtonEast]");
GameObject.Find("txtInteraction_Tutorial").GetComponent<Text>().text = GameObject.Find("txtInteraction_Tutorial").GetComponent<Text>().text.Replace("[E]", "[ButtonEast]");
GameObject.Find("txtTutorialGoal").GetComponent<Text>().text = GameObject.Find("txtTutorialGoal").GetComponent<Text>().text.Replace("[ESC]", "[Start]");
}
else
{
if (uihandler.canPlayerRotate())
{
Cursor.lockState = CursorLockMode.Locked;
}
else
{
Cursor.lockState = CursorLockMode.Confined;
}
GameObject.Find("txtInteract").GetComponent<Text>().text = GameObject.Find("txtInteract").GetComponent<Text>().text.Replace("[ButtonEast]", "[E]");
GameObject.Find("txtInteraction_Tutorial").GetComponent<Text>().text = GameObject.Find("txtInteraction_Tutorial").GetComponent<Text>().text.Replace("[E]", "[ButtonEast]");
GameObject.Find("txtTutorialGoal").GetComponent<Text>().text = GameObject.Find("txtTutorialGoal").GetComponent<Text>().text.Replace("[Start]", "[ESC]");
}
}
public void OnLooking(InputValue value)
{
view = value.Get<Vector2>();
}
public void OnMovement(InputValue value)
{
try
{
input = value.Get<Vector3>();
}
catch
{
if (value.Get<Vector2>().x < 0)
{
direction = MoveDirection.Left;
}
else if (value.Get<Vector2>().x > 0)
{
direction = MoveDirection.Right;
}
else if (value.Get<Vector2>().y < 0)
{
direction = MoveDirection.Down;
}
else if (value.Get<Vector2>().y > 0)
{
direction = MoveDirection.Up;
}
}
}
public void OnInteraction()
{
if (uihandler.canPlayerMove())
{
GameObject target = playerCam.GetComponent<PlayerCamera>().interactWithObject();
if (target != null)
{
switch (target.tag.Split(':')[1])
{
case "Enemy":
fight.GetComponent<Fight>().startFight(worldGen.GetComponent<WorldGenerator>().getCurrentTile(), target, player);
break;
case "Tree":
player.GetComponent<PlayerGameObject>().getPlayer().getStat("TreeCount").changeAmount(1);
GameObject.Find("Inventory").GetComponent<Inventory>().addItem(new Item("Wood"));
break;
case "Stone":
GameObject.Find("Inventory").GetComponent<Inventory>().addItem(new Item("Rock"));
break;
case "NPC":
break;
case "Door":
break;
case "Chest":
break;
case "Ore":
if (target.name.ToLower().Contains("iron"))
{
GameObject.Find("Inventory").GetComponent<Inventory>().addItem(new Item("Iron ore"));
}
else if (target.name.ToLower().Contains("gold"))
{
GameObject.Find("Inventory").GetComponent<Inventory>().addItem(new Item("Gold ore"));
}
else if (target.name.ToLower().Contains("copper"))
{
GameObject.Find("Inventory").GetComponent<Inventory>().addItem(new Item("Copper ore"));
}
else if (target.name.ToLower().Contains("tin"))
{
GameObject.Find("Inventory").GetComponent<Inventory>().addItem(new Item("Tin ore"));
}
player.GetComponent<PlayerGameObject>().getPlayer().getStat("OreCount").changeAmount(1);
break;
}
target.GetComponent<InteractableObject>().OnInteraction(player);
}
}
}
public void OnInventory()
{
uihandler.switchInventory();
}
public void OnQuestlog()
{
uihandler.switchQuestLog();
}
public void OnPause()
{
uihandler.switchPauseMenu();
}
public void OnSkillOne()
{
if (uihandler.isPlayerInFight())
{
fight.GetComponent<Fight>().playerAction(1);
}
}
public void OnSkillTwo()
{
if (uihandler.isPlayerInFight())
{
fight.GetComponent<Fight>().playerAction(2);
}
}
public void OnSkillThree()
{
if (uihandler.isPlayerInFight())
{
fight.GetComponent<Fight>().playerAction(3);
}
}
public void OnSkillFour()
{
if (uihandler.isPlayerInFight())
{
fight.GetComponent<Fight>().playerAction(4);
}
}
public void OnSkillFive()
{
if (uihandler.isPlayerInFight())
{
fight.GetComponent<Fight>().playerAction(5);
}
}
public void OnSkillSix()
{
if (uihandler.isPlayerInFight())
{
fight.GetComponent<Fight>().playerAction(6);
}
}
}