public void Upgrade() { if (IsMaxed) { return; } GameContext.ResourceManager.Decrease(ResourceType.Gold, UpgradeCost); Level++; IsOpened = true; Settings = Configuration.GetSettings(Level); var nextSettings = Configuration.GetSettings(Level + 1); if (nextSettings != null) { IsMaxed = false; UpgradeCost = nextSettings.UpgradeCost; } else { IsMaxed = true; } IdleMining = CalculateIdleMining(); SaveState(Configuration.Id, Level, IsManagerAssigned, IdleMining); UnityEngine.Debug.Log(string.Format("{0} upgrade: Level -> {1}, Units -> {2} Load -> {3}, Move Time -> {4}, Work Time -> {5}", GetType().Name, Level, Settings.Units, Settings.Load, Settings.MoveTime, Settings.WorkTime)); }
public void UpdateSettings(IWorldObjectSettings settings, Manager manager) { Load = settings.Load; MoveTime = settings.MoveTime; WorkTime = settings.WorkTime; IsManagerAssigned = manager.IsAssigned; _manager = manager; }
public virtual void Initialize(IGameData gameData, T configuration) { GameData = gameData; Configuration = configuration; var levelData = GameData.GetWorldObjectLevelData(Configuration.Id); Level = levelData.Level; IsManagerAssigned = levelData.IsManagerAssigned; ManagerCost = Configuration.ManagerCost; if (Level > 0) { IsOpened = true; Settings = Configuration.GetSettings(Level); } else { Level = 1; IsManagerAssigned = false; Settings = Configuration.GetSettings(Level); if (Settings.UpgradeCost == 0) { IsOpened = true; } else { Level = 0; IsOpened = false; } } IdleMining = CalculateIdleMining(); var nextSettings = Configuration.GetSettings(Level + 1); if (nextSettings != null) { IsMaxed = false; UpgradeCost = nextSettings.UpgradeCost; } else { IsMaxed = true; } SaveState(Configuration.Id, Level, IsManagerAssigned, IdleMining); }