76 lines
1.9 KiB
C#
76 lines
1.9 KiB
C#
using UnityEngine;
|
|
|
|
namespace OctoberStudio.Upgrades
|
|
{
|
|
public class UpgradesManager : MonoBehaviour
|
|
{
|
|
private static UpgradesManager instance;
|
|
|
|
[SerializeField] UpgradesDatabase database;
|
|
|
|
private UpgradesSave save;
|
|
|
|
private void Awake()
|
|
{
|
|
if (instance != null)
|
|
{
|
|
Destroy(gameObject);
|
|
|
|
return;
|
|
}
|
|
|
|
instance = this;
|
|
|
|
DontDestroyOnLoad(this);
|
|
|
|
save = GameController.SaveManager.GetSave<UpgradesSave>("Upgrades Save");
|
|
save.Init();
|
|
|
|
for(int i = 0; i < database.UpgradesCount; i++)
|
|
{
|
|
var upgrade = database.GetUpgrade(i);
|
|
|
|
if(GetUpgradeLevel(upgrade.UpgradeType) < upgrade.DevStartLevel)
|
|
{
|
|
save.SetUpgradeLevel(upgrade.UpgradeType, upgrade.DevStartLevel);
|
|
}
|
|
}
|
|
}
|
|
|
|
public void IncrementUpgradeLevel(UpgradeType upgradeType)
|
|
{
|
|
var level = save.GetUpgradeLevel(upgradeType);
|
|
save.SetUpgradeLevel(upgradeType, level + 1);
|
|
}
|
|
|
|
public int GetUpgradeLevel(UpgradeType upgradeType)
|
|
{
|
|
return save.GetUpgradeLevel(upgradeType);
|
|
}
|
|
|
|
public bool IsUpgradeAquired(UpgradeType upgradeType)
|
|
{
|
|
var level = save.GetUpgradeLevel(upgradeType);
|
|
|
|
return level != -1;
|
|
}
|
|
|
|
public UpgradeData GetUpgradeData(UpgradeType upgradeType)
|
|
{
|
|
return database.GetUpgrade(upgradeType);
|
|
}
|
|
|
|
public float GetUpgadeValue(UpgradeType upgradeType)
|
|
{
|
|
var data = GetUpgradeData(upgradeType);
|
|
var level = GetUpgradeLevel(upgradeType);
|
|
|
|
if(level >= 0)
|
|
{
|
|
return data.GetLevel(level).Value;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
}
|
|
} |