FlyingFrog

PlayerDialogue

Dec 26th, 2023
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.64 KB | None | 0 0
  1. using UnityEngine;
  2.  
  3. public class PlayerDialog : MonoBehaviour
  4. {
  5.     [SerializeField] private Dialogue _dialogue;
  6.     [SerializeField] private DialoguePanelController _dialoguePanelController;
  7.     [SerializeField] private float _range;
  8.     [SerializeField] private float _dialogOutDistance;
  9.  
  10.     private PlayerInventory _inventory;
  11.  
  12.     private void Start()
  13.     {
  14.         _inventory = GetComponent<PlayerInventory>();
  15.     }
  16.  
  17.     private void Update()
  18.     {
  19.         Look();
  20.     }
  21.  
  22.     private void Look()
  23.     {
  24.         var ray = Camera.main.ScreenPointToRay(Input.mousePosition);
  25.         RaycastHit hit;
  26.         if (Physics.Raycast(ray, out hit, _range))
  27.         {
  28.             if (hit.collider.TryGetComponent(out DialogueNPC dialogueNPC) && Input.GetKeyDown(KeyCode.E))
  29.             {
  30.                 if (_dialogue.GetDialogueNpc() == null)
  31.                 {
  32.                     _dialogue.SetNPC(dialogueNPC);
  33.                     _dialoguePanelController.EnablePanel();
  34.                     _dialogue.NextPhrase(_inventory);
  35.                 }
  36.                 else if (dialogueNPC != _dialogue.GetDialogueNpc())
  37.                 {
  38.                     _dialogue.SetNPC(dialogueNPC);
  39.                     _dialogue.ResetPhrases();
  40.                     _dialogue.NextPhrase(_inventory);
  41.                 }
  42.                 else if (_dialogue.GetDialogueNpc() != null && _dialogue.CurrentIndex < _dialogue.GetDialogueNpc().GetPhrasesCount() - 1)
  43.                 {
  44.                     _dialogue.NextPhrase(_inventory);
  45.                 }
  46.                 else
  47.                 {
  48.                     ResetDialogue();
  49.                 }
  50.             }
  51.  
  52.             if (_dialogue.GetDialogueNpc() != null &&
  53.         Vector3.Distance(transform.position, _dialogue.GetDialogueNpc().transform.position) > _dialogOutDistance)
  54.             {
  55.                 ResetDialogue();
  56.             }
  57.         }
  58.     }
  59.  
  60.     private void ResetDialogue()
  61.     {
  62.         _dialogue.ResetNPC();
  63.         _dialogue.ResetPhrases();
  64.         _dialoguePanelController.DisablePanel();   
  65.     }
  66. }
  67.  
Advertisement
Add Comment
Please, Sign In to add comment