您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 

133 行
3.9 KiB

  1. using System;
  2. using CIG;
  3. using SUISS.Core;
  4. using SUISSEngine;
  5. using UnityEngine;
  6. public class BuildingSpeedupPopupState : PopupBaseState
  7. {
  8. public override void Enter(State oldState)
  9. {
  10. base.Enter(oldState);
  11. base.InvokeRepeating("UpdateInfo", 1f, 1f);
  12. }
  13. public override void Leave(State newState)
  14. {
  15. base.CancelInvoke("UpdateInfo");
  16. this._building = null;
  17. base.Leave(newState);
  18. }
  19. public void SetBuilding(CIGBuilding building)
  20. {
  21. this._building = building;
  22. this.UpdateInfo();
  23. }
  24. public void SpeedupCash()
  25. {
  26. base.ClosePopup();
  27. CIGGameState instance = SingletonMonobehaviour<CIGGameState>.Instance;
  28. if (instance.SpeedupWithCashEnabled)
  29. {
  30. instance.SpendCurrencies(new Currencies("Cash", this._cashcost), false, BuildingSpeedupPopupState.SpeedupBuildingAction(this._building));
  31. }
  32. }
  33. public void SpeedupGold()
  34. {
  35. base.ClosePopup();
  36. SingletonMonobehaviour<CIGGameState>.Instance.SpendCurrencies(new Currencies("Gold", this._goldcost), false, BuildingSpeedupPopupState.SpeedupBuildingAction(this._building));
  37. }
  38. public void SpeedupVideo()
  39. {
  40. base.ClosePopup();
  41. if (this._videoUpspeedingBuilding == null && SingletonMonobehaviour<VideoAds1Manager>.Instance.ShowAd(new Action<bool, bool>(this.OnVideoWatched)))
  42. {
  43. this._videoUpspeedingBuilding = this._building;
  44. }
  45. }
  46. private void OnVideoWatched(bool fullwatch, bool clicked)
  47. {
  48. if (fullwatch && this._videoUpspeedingBuilding != null)
  49. {
  50. Action<bool, Currencies> action = BuildingSpeedupPopupState.SpeedupBuildingAction(this._videoUpspeedingBuilding);
  51. action(true, Currencies.Zero);
  52. }
  53. this._videoUpspeedingBuilding = null;
  54. }
  55. private static Action<bool, Currencies> SpeedupBuildingAction(CIGBuilding building)
  56. {
  57. return delegate(bool success, Currencies spent)
  58. {
  59. if (success)
  60. {
  61. SingletonMonobehaviour<CIGGameStats>.Instance.AddSpeedupExecuted(Mathf.RoundToInt((float)spent.GetValue("Gold")));
  62. if (building.IsUpgrading)
  63. {
  64. building.FinishUpgrade();
  65. }
  66. else if (building.state == BuildingState.Constructing)
  67. {
  68. building.FinishConstruction();
  69. }
  70. else if (building.state == BuildingState.Demolishing)
  71. {
  72. building.FinishDemolishing();
  73. }
  74. else if (building.state == BuildingState.WaitingForDemolishing)
  75. {
  76. CityIsland.Current.isometricIsland.destroyer.CancelDestroyBuilding(building);
  77. }
  78. }
  79. };
  80. }
  81. private void UpdateInfo()
  82. {
  83. if (!this._isInState || this._building == null)
  84. {
  85. return;
  86. }
  87. double num;
  88. if (this._building.IsUpgrading)
  89. {
  90. num = this._building.UpgradeTimeLeft;
  91. }
  92. else if (this._building.state == BuildingState.Constructing)
  93. {
  94. num = this._building.ConstructionTimeLeft;
  95. }
  96. else
  97. {
  98. if (this._building.state != BuildingState.Demolishing && this._building.state != BuildingState.WaitingForDemolishing)
  99. {
  100. base.ClosePopup();
  101. return;
  102. }
  103. num = this._building.DemolishTimeLeft;
  104. }
  105. this._cashcost = this._building.SpeedupCostCash;
  106. this._goldcost = this._building.SpeedupCostGold;
  107. bool videoOnly = false;
  108. if (SingletonMonobehaviour<CIGWebService>.IsAvailable && SingletonMonobehaviour<VideoAds1Manager>.IsAvailable)
  109. {
  110. CIGWebService instance = SingletonMonobehaviour<CIGWebService>.Instance;
  111. videoOnly = (instance.VideoSpeedupEnabled && instance.VideoSpeedupMaxCurrency >= this._goldcost && (double)instance.VideoSpeedupMinSeconds < num && (this._building.state == BuildingState.Constructing || this._building.IsUpgrading) && SingletonMonobehaviour<VideoAds1Manager>.Instance.IsReady);
  112. }
  113. ((BuildingSpeedupPopupView)this.View).UpdateInfo(num, this._cashcost, SingletonMonobehaviour<CIGGameState>.Instance.SpeedupWithCashEnabled, this._goldcost, videoOnly);
  114. }
  115. private CIGBuilding _building;
  116. private decimal _cashcost;
  117. private decimal _goldcost;
  118. private CIGBuilding _videoUpspeedingBuilding;
  119. }