| using System; |
| using System.Collections; |
| using System.Collections.Generic; |
| using UnityEngine; |
| using UnityEngine.UI; |
|
|
| public class SelectionManager : MonoBehaviour |
| { |
| public static SelectionManager Instance { get; set; } |
|
|
| public bool onTarget; |
| public GameObject selectedObject; |
| public GameObject interaction_Info_UI; |
| Text interaction_text; |
|
|
| public Image centerDotIcon; |
| public Image handIcon; |
|
|
| public bool handIsVisible; |
|
|
| public GameObject selectedTree; |
| public GameObject chopHolder; |
|
|
| private void Awake() |
| { |
| if (Instance != null && Instance != this) |
| { |
| DestroyObject(gameObject); |
| } |
| else |
| { |
| Instance = this; |
| } |
|
|
| } |
|
|
| private void Start() |
| { |
| onTarget = false; |
|
|
| interaction_text = interaction_Info_UI.GetComponent<Text>(); |
| } |
|
|
| void Update() |
| { |
| Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); |
| RaycastHit hit; |
| if (Physics.Raycast(ray, out hit)) |
| { |
| var selectionTransform = hit.transform; |
|
|
| InteractableObject interactable = selectionTransform.GetComponent<InteractableObject>(); |
|
|
|
|
| if (interactable) |
| { |
| ChoppableTree choppableTree = selectionTransform.GetComponent<ChoppableTree>(); |
|
|
| if (interactable.transform.Find("base_tree")) |
| { |
| choppableTree = interactable.transform.Find("base_tree").transform.GetComponent<ChoppableTree>(); |
| } |
|
|
| if (choppableTree && choppableTree.playerInRanger) |
| { |
| choppableTree.canBeChopped = true; |
| selectedTree = choppableTree.gameObject; |
| chopHolder.gameObject.SetActive(true); |
| } |
| else |
| { |
| if (selectedTree != null) |
| { |
| selectedTree.gameObject.GetComponent<ChoppableTree>().canBeChopped = false; |
| selectedTree = null; |
| chopHolder.gameObject.SetActive(false); |
| } |
| } |
| interaction_text.text = interactable.GetItemName(); |
| interaction_Info_UI.SetActive(true); |
| if (interactable.playerInRanger) |
| { |
| onTarget = true; |
| selectedObject = interactable.gameObject; |
|
|
| if (interactable.CompareTag("pickable")) |
| { |
| centerDotIcon.gameObject.SetActive(false); |
| handIcon.gameObject.SetActive(true); |
| handIsVisible = true; |
| } |
| else |
| { |
| centerDotIcon.gameObject.SetActive(true); |
| handIcon.gameObject.SetActive(false); |
| handIsVisible = false; |
|
|
| } |
| } |
| else |
| { |
| onTarget = false; |
| centerDotIcon.gameObject.SetActive(true); |
| handIcon.gameObject.SetActive(false); |
| handIsVisible = false; |
|
|
| } |
|
|
| } |
| else |
| { |
| onTarget = false; |
| interaction_Info_UI.SetActive(false); |
| centerDotIcon.gameObject.SetActive(true); |
| handIcon.gameObject.SetActive(false); |
| handIsVisible = false; |
|
|
| } |
|
|
| } |
| else |
| { |
| onTarget = false; |
| interaction_Info_UI.SetActive(false); |
| centerDotIcon.gameObject.SetActive(true); |
| handIcon.gameObject.SetActive(false); |
| handIsVisible = false; |
|
|
| } |
| } |
|
|
| public void DisableSelection() |
| { |
| handIcon.enabled = false; |
| centerDotIcon.enabled = false; |
| interaction_Info_UI.SetActive(false); |
| selectedObject = null; |
| } |
|
|
| public void EnableSelection() |
| { |
| handIcon.enabled = true; |
| centerDotIcon.enabled = true; |
| interaction_Info_UI.SetActive(true); |
| } |
| } |