-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathQuestTrigger.cs
More file actions
84 lines (72 loc) · 2 KB
/
Copy pathQuestTrigger.cs
File metadata and controls
84 lines (72 loc) · 2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
using UnityEngine;
using UnityEngine.Events;
public class QuestTrigger : MonoBehaviour
{
[SerializeField] private float interactionRange = 3f;
[SerializeField] private KeyCode interactionKey = KeyCode.E;
[SerializeField] private GameObject questAvailableIndicator;
private QuestManager questManager;
private bool playerInRange;
public UnityEvent onQuestOffered;
public UnityEvent onQuestAccepted;
public UnityEvent onPlayerEnterRange;
public UnityEvent onPlayerExitRange;
private void Start()
{
questManager = FindObjectOfType<QuestManager>();
UpdateQuestIndicator();
}
private void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
playerInRange = true;
onPlayerEnterRange?.Invoke();
ShowQuestPrompt();
}
}
private void OnTriggerExit(Collider other)
{
if (other.CompareTag("Player"))
{
playerInRange = false;
onPlayerExitRange?.Invoke();
HideQuestPrompt();
}
}
private void Update()
{
if (playerInRange && Input.GetKeyDown(interactionKey))
{
OfferQuest();
}
}
private void OfferQuest()
{
onQuestOffered?.Invoke();
Quest newQuest = questManager.GenerateNewQuest();
if (newQuest != null)
{
questManager.AddNewQuest(newQuest);
onQuestAccepted?.Invoke();
UpdateQuestIndicator();
}
}
private void ShowQuestPrompt()
{
// Implement your UI prompt here
Debug.Log("Press " + interactionKey + " to accept quest");
}
private void HideQuestPrompt()
{
// Hide your UI prompt here
Debug.Log("Quest prompt hidden");
}
private void UpdateQuestIndicator()
{
if (questAvailableIndicator != null)
{
questAvailableIndicator.SetActive(true); // You might want to add conditions here
}
}
}