UI와 Object를 관리하기 위해 UiManager와 GameManager Script를 생성
주로 UI를 담당하였으므로, UiManager를 세분화하여 TextManager와 ButtonManager Script를 생성
기본적인 변수(재화 등)를 미리 GameManager에 정의 후, getter와 setter 생성
변수를 관리하기 위한 ValueManager 클래스를 GameManager에 inner class로 생성
[SerializeField] private ButtonManager buttonManager;
[SerializeField] private TextManager textManager;
[SerializeField] private UiManager uiManager;
private static long won;
private static long dollar;
private static long gold;
private long wonPerMonth;
private long dollarPerMonth;
public class ValueManager
{
private int level;
private int max;
private int current;
public ValueManager()
{
level = 0;
max = 10;
current = 0;
}
public int GetLevel()
{
return level;
}
public int GetMax()
{
return max;
}
public int GetCurrent()
{
return current;
}
public bool AddCurrent()
{
if (current < max)
{
current++;
return true;
}
return false;
}
public bool SubCurrent()
{
if (current > 0)
{
current--;
return true;
}
return false;
}
public bool LevelUp(int maxLevel, String typeName)
{
if (level == maxLevel)
{
Debug.Log("Level Max");
return false;
}
if (DataBase.valueCost[typeName][level] > won) return false;
won -= DataBase.valueCost[typeName][level];
level++;
max++;
Debug.Log(typeName + " Level : " + level.ToString());
return true;
}
}
private ValueManager employeeValue;
private ValueManager teamValue;
private ValueManager appValue;
void Awake()
{
won = 0;
dollar = 0;
gold = 0;
wonPerMonth = 0;
dollarPerMonth = 0;
employeeValue = new ValueManager();
teamValue = new ValueManager();
appValue = new ValueManager();
}
public long GetWon()
{
return won;
}
public long GetDollar()
{
return dollar;
}
public long GetGold()
{
return gold;
}
public void AddWon(long amount)
{
won += amount;
textManager.SetWonText();
}
public void AddDollar(long amount)
{
dollar += amount;
textManager.SetDollarText();
}
public bool SubWon(long amount)
{
if (won < amount) return false;
won -= amount;
textManager.SetWonText();
return true;
}
public bool SubDollar(long amount)
{
if (dollar < amount) return false;
dollar -= amount;
textManager.SetDollarText();
return true;
}
public int GetDollarPerMonth()
{
return 0; // temp value
}
public ValueManager GetEmployeeValue()
{
return employeeValue;
}
public ValueManager GetTeamValue()
{
return teamValue;
}
public ValueManager GetAppValue()
{
return appValue;
}