|
- 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<CIGGameState>.Instance;
- if (instance.SpeedupWithCashEnabled)
- {
- instance.SpendCurrencies(new Currencies("Cash", this._cashcost), false, BuildingSpeedupPopupState.SpeedupBuildingAction(this._building));
- }
- }
-
- public void SpeedupGold()
- {
- base.ClosePopup();
- SingletonMonobehaviour<CIGGameState>.Instance.SpendCurrencies(new Currencies("Gold", this._goldcost), false, BuildingSpeedupPopupState.SpeedupBuildingAction(this._building));
- }
-
- public void SpeedupVideo()
- {
- base.ClosePopup();
- if (this._videoUpspeedingBuilding == null && SingletonMonobehaviour<VideoAds1Manager>.Instance.ShowAd(new Action<bool, bool>(this.OnVideoWatched)))
- {
- this._videoUpspeedingBuilding = this._building;
- }
- }
-
- private void OnVideoWatched(bool fullwatch, bool clicked)
- {
- if (fullwatch && this._videoUpspeedingBuilding != null)
- {
- Action<bool, Currencies> action = BuildingSpeedupPopupState.SpeedupBuildingAction(this._videoUpspeedingBuilding);
- action(true, Currencies.Zero);
- }
- this._videoUpspeedingBuilding = null;
- }
-
- private static Action<bool, Currencies> SpeedupBuildingAction(CIGBuilding building)
- {
- return delegate(bool success, Currencies spent)
- {
- if (success)
- {
- SingletonMonobehaviour<CIGGameStats>.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<CIGWebService>.IsAvailable && SingletonMonobehaviour<VideoAds1Manager>.IsAvailable)
- {
- CIGWebService instance = SingletonMonobehaviour<CIGWebService>.Instance;
- videoOnly = (instance.VideoSpeedupEnabled && instance.VideoSpeedupMaxCurrency >= this._goldcost && (double)instance.VideoSpeedupMinSeconds < num && (this._building.state == BuildingState.Constructing || this._building.IsUpgrading) && SingletonMonobehaviour<VideoAds1Manager>.Instance.IsReady);
- }
- ((BuildingSpeedupPopupView)this.View).UpdateInfo(num, this._cashcost, SingletonMonobehaviour<CIGGameState>.Instance.SpeedupWithCashEnabled, this._goldcost, videoOnly);
- }
-
- private CIGBuilding _building;
-
- private decimal _cashcost;
-
- private decimal _goldcost;
-
- private CIGBuilding _videoUpspeedingBuilding;
- }
|