Advertisement
evelynshilosky

SelectionManager - Part 27

Dec 12th, 2023
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.51 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5.  
  6. public class SelectionManager : MonoBehaviour
  7. {
  8.  
  9.     public static SelectionManager Instance { get; set; }
  10.  
  11.  
  12.     public bool onTarget;
  13.  
  14.     public GameObject selectedObject;
  15.  
  16.     public GameObject interaction_Info_UI;
  17.     Text interaction_text;
  18.  
  19.     public Image centerDotImage;
  20.     public Image handIcon;
  21.  
  22.     public bool handIsVisible;
  23.  
  24.     public GameObject selectedTree;
  25.     public GameObject chopHolder;
  26.  
  27.  
  28.     private void Start()
  29.     {
  30.         onTarget = false;
  31.         interaction_text = interaction_Info_UI.GetComponent<Text>();
  32.     }
  33.  
  34.  
  35.     private void Awake()
  36.     {
  37.         if (Instance != null && Instance != this)
  38.         {
  39.  
  40.             Destroy(gameObject);
  41.  
  42.         }
  43.         else
  44.         {
  45.             Instance = this;
  46.         }
  47.     }
  48.  
  49.  
  50.     void Update()
  51.     {
  52.         Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
  53.         RaycastHit hit;
  54.         if (Physics.Raycast(ray, out hit))
  55.         {
  56.             var selectionTransform = hit.transform;
  57.  
  58.             InteractableObject interactable = selectionTransform.GetComponent<InteractableObject>();
  59.  
  60.             ChoppableTree choppableTree = selectionTransform.GetComponent<ChoppableTree>();
  61.  
  62.  
  63.             NPC npc = selectionTransform.GetComponent<NPC>();
  64.  
  65.             if (npc && npc.playerInRange)
  66.             {
  67.                 interaction_text.text = "Press \"E\" to Talk";
  68.                 interaction_Info_UI.SetActive(true);
  69.  
  70.                 if (Input.GetKeyDown(KeyCode.E) && npc.isTalkingWithPlayer == false)
  71.                 {
  72.                     npc.StartConversation();
  73.                 }
  74.  
  75.                 if (DialogueSystem.Instance.dialogueUIActive)
  76.                 {
  77.                     interaction_Info_UI.SetActive(false);
  78.                     centerDotImage.gameObject.SetActive(false);
  79.                 }
  80.  
  81.             }
  82.             else
  83.             {
  84.                 interaction_text.text = "";
  85.                 interaction_Info_UI.SetActive(false);
  86.             }
  87.  
  88.  
  89.  
  90.             if (choppableTree && choppableTree.playerInRange)
  91.             {
  92.                 choppableTree.canBeChopped = true;
  93.                 selectedTree = choppableTree.gameObject;
  94.                 chopHolder.gameObject.SetActive(true);
  95.  
  96.             }
  97.             else
  98.             {
  99.                 if(selectedTree != null)
  100.                 {
  101.                     selectedTree.gameObject.GetComponent<ChoppableTree>().canBeChopped = false;
  102.                     selectedTree = null;
  103.                     chopHolder.gameObject.SetActive(false);
  104.                 }
  105.             }
  106.  
  107.  
  108.  
  109.             if (interactable && interactable.playerInRange)
  110.             {
  111.  
  112.                 onTarget = true;
  113.                 selectedObject = interactable.gameObject;
  114.                 interaction_text.text = interactable.GetItemName();
  115.                 interaction_Info_UI.SetActive(true);
  116.  
  117.                 if (interactable.CompareTag("pickable"))
  118.                 {
  119.  
  120.                     centerDotImage.gameObject.SetActive(false);
  121.                     handIcon.gameObject.SetActive(true);
  122.  
  123.                     handIsVisible = true;
  124.  
  125.                 }
  126.                 else
  127.                 {
  128.                     handIcon.gameObject.SetActive(false);
  129.                     centerDotImage.gameObject.SetActive(true);
  130.  
  131.                     handIsVisible = false;
  132.  
  133.                 }
  134.  
  135.             }
  136.  
  137.             else //if there is a hit, but without an interactable script.
  138.             {
  139.                 onTarget = false;
  140.                 //interaction_Info_UI.SetActive(false);
  141.                 handIcon.gameObject.SetActive(false);
  142.                 centerDotImage.gameObject.SetActive(true);
  143.  
  144.                 handIsVisible = false;
  145.  
  146.             }
  147.  
  148.         }
  149.         else //if there is no hit at all.
  150.         {
  151.             onTarget = false;
  152.             interaction_Info_UI.SetActive(false);
  153.             handIcon.gameObject.SetActive(false);
  154.             centerDotImage.gameObject.SetActive(true);
  155.  
  156.             handIsVisible = false;
  157.  
  158.         }
  159.  
  160.  
  161.  
  162.     }
  163.  
  164.     public void DisableSelection()
  165.     {
  166.         handIcon.enabled = false;
  167.         centerDotImage.enabled = false;
  168.         interaction_Info_UI.SetActive(false);
  169.         selectedObject = null;
  170.     }
  171.  
  172.     public void EnableSelection()
  173.     {
  174.         handIcon.enabled = true;
  175.         centerDotImage.enabled = true;
  176.         interaction_Info_UI.SetActive(true);
  177.  
  178.     }
  179.  
  180.  
  181. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement