|
- 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<CIGBuyOneBuildingGetOneFreeManager>.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<CIGBuyOneBuildingGetOneFreeManager>.Instance.StateChangedEvent -= this.OnBobgofStateChanged;
- base.Leave(newState);
- }
-
- private void OnDestroy()
- {
- if (SingletonMonobehaviour<CIGBuyOneBuildingGetOneFreeManager>.IsAvailable)
- {
- SingletonMonobehaviour<CIGBuyOneBuildingGetOneFreeManager>.Instance.StateChangedEvent -= this.OnBobgofStateChanged;
- }
- }
-
- public void Buy()
- {
- SingletonMonobehaviour<CIGBuyOneBuildingGetOneFreeManager>.Instance.Buy();
- }
-
- public void ShowBuildingInfo(CIGBuilding building)
- {
- BuildingInfoPopupState buildingInfoPopupState = base.fsm.SwitchState<BuildingInfoPopupState>();
- buildingInfoPopupState.SetBuildingAndContent(building, BuildingPopupContent.ReadOnly);
- }
-
- private void OnBobgofStateChanged()
- {
- CIGBuyOneBuildingGetOneFreeManager instance = SingletonMonobehaviour<CIGBuyOneBuildingGetOneFreeManager>.Instance;
- if (instance.State != CIGBuyOneBuildingGetOneFreeManager.BuyOneBuildingGetOneFreeState.Inactive)
- {
- this._view.UpdateInfo(instance.PaidBuilding, instance.FreeBuilding, instance.SaleTimeLeft);
- }
- else
- {
- SingletonMonobehaviour<PopupManager>.Instance.CloseRecursive(true);
- }
- }
-
- private IEnumerator UpdateTimeRemaining()
- {
- for (;;)
- {
- yield return new WaitForSecondsRealtime(1f);
- this._view.UpdateTimeLeft(SingletonMonobehaviour<CIGBuyOneBuildingGetOneFreeManager>.Instance.SaleTimeLeft);
- }
- yield break;
- }
-
- private BuyOneBuildingGetOneFreePopupView _view;
-
- private IEnumerator _updateTimeRemainingRoutine;
- }
|