-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBuyables.cs
More file actions
121 lines (111 loc) · 3.16 KB
/
Copy pathBuyables.cs
File metadata and controls
121 lines (111 loc) · 3.16 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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
using UnityEngine;
using TMPro;
using System;
public class Buyables : MonoBehaviour
{
private bool canPurchase = false;
[SerializeField]
public string buyableName;
public int buyableCost;
public TextMeshProUGUI prompt;
private ScoreScript scoreManager;
private playerMove player;
AudioSource buySound;
void Start()
{
buySound = GetComponent<AudioSource>();
scoreManager = FindObjectOfType<ScoreScript>();
player = FindObjectOfType<playerMove>();
}
void OnTriggerEnter(Collider Player)
{
if (Player.tag == "Player")
{
// Check if player already has the perk
if (PlayerHasPerk())
{
prompt.enabled = false;
canPurchase = false;
}
else
{
Debug.Log("Near " + buyableName);
canPurchase = true;
prompt.text = "Press [E] to buy " + buyableName + " [Cost: " + buyableCost + "]";
prompt.enabled = true;
}
}
}
void Update()
{
if (canPurchase && Input.GetKeyDown(KeyCode.E))
{
if (scoreManager != null && scoreManager.GetCurrentScore() >= buyableCost)
{
PurchasePerk();
SoundManager.PlaySound(SoundType.BUY);
}
else
{
Debug.Log($"Not enough points! Current: {scoreManager.GetCurrentScore()}, Required: {buyableCost}");
}
}
}
void OnTriggerExit(Collider Player)
{
if (Player.tag == "Player")
{
Debug.Log("Bye bye " + buyableName);
canPurchase = false;
prompt.enabled = false;
}
}
// Cheking if the player hasd the perk
private bool PlayerHasPerk()
{
switch (buyableName)
{
case "Double Dealer":
return player.hasDoubleDealer;
case "Get Jacked":
return player.hasIronJack;
case "Ace Revive":
return player.hasAceRevive;
case "Quick Draw":
return player.hasQuickDraw;
case "Risky Runs":
return player.hasRiskRunner;
default:
return false;
}
}
// Handle the actual purchase logic
private void PurchasePerk()
{
switch (buyableName)
{
case "Double Dealer":
player.hasDoubleDealer = true;
break;
case "Get Jacked":
player.hasIronJack = true;
break;
case "Ace Revive":
player.hasAceRevive = true;
break;
case "Quick Draw":
player.hasQuickDraw = true;
break;
case "Risky Runs":
player.hasRiskRunner = true;
break;
default:
break;
}
// Deduct points and disable purchase prompt
scoreManager.AddScore(-buyableCost);
canPurchase = false;
prompt.enabled = false;
Debug.Log($"{buyableName} purchased");
}
}