You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

72 lines
2.3 KiB

  1. using System;
  2. using System.Collections;
  3. using CIGEnums;
  4. using SUISS.Core;
  5. using UnityEngine;
  6. public class BuyOneBuildingGetOneFreePopupState : PopupBaseState
  7. {
  8. public override void Enter(State oldState)
  9. {
  10. base.Enter(oldState);
  11. CIGBuyOneBuildingGetOneFreeManager instance = SingletonMonobehaviour<CIGBuyOneBuildingGetOneFreeManager>.Instance;
  12. instance.StateChangedEvent += this.OnBobgofStateChanged;
  13. this._view = (BuyOneBuildingGetOneFreePopupView)this.View;
  14. this._view.UpdateInfo(instance.PaidBuilding, instance.FreeBuilding, instance.SaleTimeLeft);
  15. base.StartCoroutine(this._updateTimeRemainingRoutine = this.UpdateTimeRemaining());
  16. }
  17. public override void Leave(State newState)
  18. {
  19. base.StopCoroutine(this._updateTimeRemainingRoutine);
  20. SingletonMonobehaviour<CIGBuyOneBuildingGetOneFreeManager>.Instance.StateChangedEvent -= this.OnBobgofStateChanged;
  21. base.Leave(newState);
  22. }
  23. private void OnDestroy()
  24. {
  25. if (SingletonMonobehaviour<CIGBuyOneBuildingGetOneFreeManager>.IsAvailable)
  26. {
  27. SingletonMonobehaviour<CIGBuyOneBuildingGetOneFreeManager>.Instance.StateChangedEvent -= this.OnBobgofStateChanged;
  28. }
  29. }
  30. public void Buy()
  31. {
  32. SingletonMonobehaviour<CIGBuyOneBuildingGetOneFreeManager>.Instance.Buy();
  33. }
  34. public void ShowBuildingInfo(CIGBuilding building)
  35. {
  36. BuildingInfoPopupState buildingInfoPopupState = base.fsm.SwitchState<BuildingInfoPopupState>();
  37. buildingInfoPopupState.SetBuildingAndContent(building, BuildingPopupContent.ReadOnly);
  38. }
  39. private void OnBobgofStateChanged()
  40. {
  41. CIGBuyOneBuildingGetOneFreeManager instance = SingletonMonobehaviour<CIGBuyOneBuildingGetOneFreeManager>.Instance;
  42. if (instance.State != CIGBuyOneBuildingGetOneFreeManager.BuyOneBuildingGetOneFreeState.Inactive)
  43. {
  44. this._view.UpdateInfo(instance.PaidBuilding, instance.FreeBuilding, instance.SaleTimeLeft);
  45. }
  46. else
  47. {
  48. SingletonMonobehaviour<PopupManager>.Instance.CloseRecursive(true);
  49. }
  50. }
  51. private IEnumerator UpdateTimeRemaining()
  52. {
  53. for (;;)
  54. {
  55. yield return new WaitForSecondsRealtime(1f);
  56. this._view.UpdateTimeLeft(SingletonMonobehaviour<CIGBuyOneBuildingGetOneFreeManager>.Instance.SaleTimeLeft);
  57. }
  58. yield break;
  59. }
  60. private BuyOneBuildingGetOneFreePopupView _view;
  61. private IEnumerator _updateTimeRemainingRoutine;
  62. }