209 lines
7.6 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;
public class Controls : MonoBehaviour
{
GameObject player;
GameObject fight;
GameObject worldGen;
GameObject playerCam;
UIHandler uihandler;
GameObject currentHouse;
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(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]");
}
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);
}
}
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":
GameObject.Find("Inventory").GetComponent<Inventory>().addItem(new Item("Wood"));
Destroy(target);
break;
case "Stone":
GameObject.Find("Inventory").GetComponent<Inventory>().addItem(new Item("Rock"));
Destroy(target);
break;
case "NPC":
target.GetComponent<NPC>().interact();
break;
case "Door":
target.GetComponent<Door>().interact();
break;
case "Chest":
target.GetComponent<Chest>().interact();
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"));
}
Destroy(target);
break;
}
}
}
}
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);
}
}
}