using System; using System.Collections; using CIGEnums; using SUISS.Core; using UnityEngine; public class BuyOneBuildingGetOneFreePopupState : PopupBaseState { public override void Enter(State oldState) { base.Enter(oldState); CIGBuyOneBuildingGetOneFreeManager instance = SingletonMonobehaviour.Instance; instance.StateChangedEvent += this.OnBobgofStateChanged; this._view = (BuyOneBuildingGetOneFreePopupView)this.View; this._view.UpdateInfo(instance.PaidBuilding, instance.FreeBuilding, instance.SaleTimeLeft); base.StartCoroutine(this._updateTimeRemainingRoutine = this.UpdateTimeRemaining()); } public override void Leave(State newState) { base.StopCoroutine(this._updateTimeRemainingRoutine); SingletonMonobehaviour.Instance.StateChangedEvent -= this.OnBobgofStateChanged; base.Leave(newState); } private void OnDestroy() { if (SingletonMonobehaviour.IsAvailable) { SingletonMonobehaviour.Instance.StateChangedEvent -= this.OnBobgofStateChanged; } } public void Buy() { SingletonMonobehaviour.Instance.Buy(); } public void ShowBuildingInfo(CIGBuilding building) { BuildingInfoPopupState buildingInfoPopupState = base.fsm.SwitchState(); buildingInfoPopupState.SetBuildingAndContent(building, BuildingPopupContent.ReadOnly); } private void OnBobgofStateChanged() { CIGBuyOneBuildingGetOneFreeManager instance = SingletonMonobehaviour.Instance; if (instance.State != CIGBuyOneBuildingGetOneFreeManager.BuyOneBuildingGetOneFreeState.Inactive) { this._view.UpdateInfo(instance.PaidBuilding, instance.FreeBuilding, instance.SaleTimeLeft); } else { SingletonMonobehaviour.Instance.CloseRecursive(true); } } private IEnumerator UpdateTimeRemaining() { for (;;) { yield return new WaitForSecondsRealtime(1f); this._view.UpdateTimeLeft(SingletonMonobehaviour.Instance.SaleTimeLeft); } yield break; } private BuyOneBuildingGetOneFreePopupView _view; private IEnumerator _updateTimeRemainingRoutine; }