169 lines
3.8 KiB
C#
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();
|
|
}
|
|
} |