using System; using CIG; using SUISS.Core; using SUISSEngine; using UnityEngine; public class BuildingSpeedupPopupState : PopupBaseState { public override void Enter(State oldState) { base.Enter(oldState); base.InvokeRepeating("UpdateInfo", 1f, 1f); } public override void Leave(State newState) { base.CancelInvoke("UpdateInfo"); this._building = null; base.Leave(newState); } public void SetBuilding(CIGBuilding building) { this._building = building; this.UpdateInfo(); } public void SpeedupCash() { base.ClosePopup(); CIGGameState instance = SingletonMonobehaviour.Instance; if (instance.SpeedupWithCashEnabled) { instance.SpendCurrencies(new Currencies("Cash", this._cashcost), false, BuildingSpeedupPopupState.SpeedupBuildingAction(this._building)); } } public void SpeedupGold() { base.ClosePopup(); SingletonMonobehaviour.Instance.SpendCurrencies(new Currencies("Gold", this._goldcost), false, BuildingSpeedupPopupState.SpeedupBuildingAction(this._building)); } public void SpeedupVideo() { base.ClosePopup(); if (this._videoUpspeedingBuilding == null && SingletonMonobehaviour.Instance.ShowAd(new Action(this.OnVideoWatched))) { this._videoUpspeedingBuilding = this._building; } } private void OnVideoWatched(bool fullwatch, bool clicked) { if (fullwatch && this._videoUpspeedingBuilding != null) { Action action = BuildingSpeedupPopupState.SpeedupBuildingAction(this._videoUpspeedingBuilding); action(true, Currencies.Zero); } this._videoUpspeedingBuilding = null; } private static Action SpeedupBuildingAction(CIGBuilding building) { return delegate(bool success, Currencies spent) { if (success) { SingletonMonobehaviour.Instance.AddSpeedupExecuted(Mathf.RoundToInt((float)spent.GetValue("Gold"))); if (building.IsUpgrading) { building.FinishUpgrade(); } else if (building.state == BuildingState.Constructing) { building.FinishConstruction(); } else if (building.state == BuildingState.Demolishing) { building.FinishDemolishing(); } else if (building.state == BuildingState.WaitingForDemolishing) { CityIsland.Current.isometricIsland.destroyer.CancelDestroyBuilding(building); } } }; } private void UpdateInfo() { if (!this._isInState || this._building == null) { return; } double num; if (this._building.IsUpgrading) { num = this._building.UpgradeTimeLeft; } else if (this._building.state == BuildingState.Constructing) { num = this._building.ConstructionTimeLeft; } else { if (this._building.state != BuildingState.Demolishing && this._building.state != BuildingState.WaitingForDemolishing) { base.ClosePopup(); return; } num = this._building.DemolishTimeLeft; } this._cashcost = this._building.SpeedupCostCash; this._goldcost = this._building.SpeedupCostGold; bool videoOnly = false; if (SingletonMonobehaviour.IsAvailable && SingletonMonobehaviour.IsAvailable) { CIGWebService instance = SingletonMonobehaviour.Instance; videoOnly = (instance.VideoSpeedupEnabled && instance.VideoSpeedupMaxCurrency >= this._goldcost && (double)instance.VideoSpeedupMinSeconds < num && (this._building.state == BuildingState.Constructing || this._building.IsUpgrading) && SingletonMonobehaviour.Instance.IsReady); } ((BuildingSpeedupPopupView)this.View).UpdateInfo(num, this._cashcost, SingletonMonobehaviour.Instance.SpeedupWithCashEnabled, this._goldcost, videoOnly); } private CIGBuilding _building; private decimal _cashcost; private decimal _goldcost; private CIGBuilding _videoUpspeedingBuilding; }