Files
DeviantMobile-Rohan/Assets/New Lowpoly Models/Scripts/CashManager.cs
2026-06-26 22:41:39 +05:30

169 lines
3.8 KiB
C#

using UnityEngine;
public class CashManager : MonoBehaviour
{
public int currentCash = 0;
private TeamMember.Team team;
private static int totalPlayerCash = 0;
private static int totalEnemy1Cash = 0;
private static int totalEnemy2Cash = 0;
[SerializeField] private GameObject droppedCashPrefab;
[SerializeField] private int cashPerDrop = 100;
[SerializeField] private float dropRadius = 1.2f;
void Awake()
{
SetupTeam();
}
private void SetupTeam()
{
TeamMember teamMember = GetComponent<TeamMember>();
if (teamMember != null)
{
team = teamMember.CurrentTeam;
}
Debug.Log($"{gameObject.name} CashManager SetupTeam | Team={team}");
}
void Start()
{
switch (team)
{
case TeamMember.Team.PlayerTeam:
totalPlayerCash += currentCash;
break;
case TeamMember.Team.EnemyTeam1:
totalEnemy1Cash += currentCash;
break;
case TeamMember.Team.EnemyTeam2:
totalEnemy2Cash += currentCash;
break;
}
UpdateUI();
}
void UpdateUI()
{
if (UI_Manager.Instance == null)
return;
UI_Manager.Instance.UpdatePlayerCarryCash(totalPlayerCash);
UI_Manager.Instance.UpdateEnemy1CarryCash(totalEnemy1Cash);
UI_Manager.Instance.UpdateEnemy2CarryCash(totalEnemy2Cash);
}
public void AddCash(int amount)
{
currentCash += amount;
switch (team)
{
case TeamMember.Team.PlayerTeam:
totalPlayerCash += amount;
break;
case TeamMember.Team.EnemyTeam1:
totalEnemy1Cash += amount;
break;
case TeamMember.Team.EnemyTeam2:
totalEnemy2Cash += amount;
break;
}
UpdateUI();
}
public int DepositAllCash()
{
int amount = currentCash;
switch (team)
{
case TeamMember.Team.PlayerTeam:
totalPlayerCash -= currentCash;
break;
case TeamMember.Team.EnemyTeam1:
totalEnemy1Cash -= currentCash;
break;
case TeamMember.Team.EnemyTeam2:
totalEnemy2Cash -= currentCash;
break;
}
currentCash = 0;
UpdateUI();
return amount;
}
public void DropAllCash()
{
if (currentCash <= 0 || droppedCashPrefab == null)
return;
int droppedAmount = currentCash;
GameObject cash = Instantiate(
droppedCashPrefab,
transform.position + Vector3.up * 0.7f,
Quaternion.identity
);
DroppedCash droppedCash = cash.GetComponent<DroppedCash>();
if (droppedCash != null)
droppedCash.SetValue(droppedAmount);
switch (team)
{
case TeamMember.Team.PlayerTeam:
totalPlayerCash -= droppedAmount;
break;
case TeamMember.Team.EnemyTeam1:
totalEnemy1Cash -= droppedAmount;
break;
case TeamMember.Team.EnemyTeam2:
totalEnemy2Cash -= droppedAmount;
break;
}
currentCash = 0;
UpdateUI();
}
private void OnDestroy()
{
switch (team)
{
case TeamMember.Team.PlayerTeam:
totalPlayerCash -= currentCash;
break;
case TeamMember.Team.EnemyTeam1:
totalEnemy1Cash -= currentCash;
break;
case TeamMember.Team.EnemyTeam2:
totalEnemy2Cash -= currentCash;
break;
}
UpdateUI();
}
}