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(); 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(); 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(); } }