25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

643 lines
23 KiB

  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using CIG;
  5. using CIG.Translation;
  6. using CIG3.ExtensionMethods;
  7. using CIGEnums;
  8. using Engine.DependencyTree;
  9. using SUISS.Cloud;
  10. using SUISS.Core;
  11. using SUISSEngine;
  12. using UnityEngine;
  13. public class HUDState : State
  14. {
  15. public override bool IsHUDState
  16. {
  17. get
  18. {
  19. return true;
  20. }
  21. }
  22. public void Start()
  23. {
  24. SingletonMonobehaviour<WorldMap>.Instance.VisibilityChangedEvent += this.OnWorldMapVisibility;
  25. SingletonMonobehaviour<CIGIslandsManager>.Instance.VisitingStartedEvent += this.OnVisitingStarted;
  26. SingletonMonobehaviour<CIGIslandsManager>.Instance.VisitingStoppedEvent += this.OnVisitingStopped;
  27. SingletonMonobehaviour<CIGDailyQuestManager>.Instance.UpdatedEvent += ((HUDView)this.View).UpdateDailyQuestButtons;
  28. }
  29. public override void Init()
  30. {
  31. base.Init();
  32. SingletonMonobehaviour<CIGGameState>.Instance.ValueChangedEvent += this.GameStateValueChanged;
  33. if (SingletonMonobehaviour<CIGPurchasedBuildingsManager>.IsAvailable)
  34. {
  35. SingletonMonobehaviour<CIGPurchasedBuildingsManager>.Instance.BuildingCountChangedEvent += this.UpdateShopButtonBadge;
  36. this.UpdateShopButtonBadge();
  37. }
  38. this.tutorial = UnityEngine.Object.FindObjectOfType<CIGTutorialManager>();
  39. VideoAds1Manager instance = SingletonMonobehaviour<VideoAds1Manager>.Instance;
  40. if (!instance.IsUnlocked)
  41. {
  42. instance.UnlockedEvent += this.OnVideoAvailabilityChanged;
  43. }
  44. instance.AvailabilityChangedEvent += this.OnVideoAvailabilityChanged;
  45. this.OnVideoAvailabilityChanged();
  46. if (SingletonMonobehaviour<DependencyTree>.IsAvailable)
  47. {
  48. SingletonMonobehaviour<DependencyTree>.Instance.DependencyAchievedChangedEvent += this.OnDependencyAchievedChanged;
  49. SingletonMonobehaviour<DependencyTree>.Instance.DependencyActiveChangedEvent += this.OnDependencyActiveChanged;
  50. SingletonMonobehaviour<DependencyTree>.Instance.DependencyRewardClaimedEvent += this.OnDependencyRewardClaimed;
  51. }
  52. }
  53. protected override void OnUpdate()
  54. {
  55. base.OnUpdate();
  56. if (UnityEngine.Input.GetKeyDown(KeyCode.Escape) && SingletonMonobehaviour<CIGIslandsManager>.Instance.CurrentIsland.IsValid())
  57. {
  58. if (SingletonMonobehaviour<WorldMap>.IsAvailable && SingletonMonobehaviour<WorldMap>.Instance.IsVisible)
  59. {
  60. if (this._hideWorldMapRoutine != null)
  61. {
  62. base.StopCoroutine(this._hideWorldMapRoutine);
  63. }
  64. base.StartCoroutine(this._hideWorldMapRoutine = this.HideWorldMapRoutine());
  65. }
  66. else
  67. {
  68. CIGApp.Quit();
  69. }
  70. }
  71. }
  72. protected void OnDestroy()
  73. {
  74. if (SingletonMonobehaviour<CIGGameState>.IsAvailable)
  75. {
  76. SingletonMonobehaviour<CIGGameState>.Instance.ValueChangedEvent -= this.GameStateValueChanged;
  77. }
  78. if (SingletonMonobehaviour<CIGDailyQuestManager>.IsAvailable)
  79. {
  80. SingletonMonobehaviour<CIGDailyQuestManager>.Instance.UpdatedEvent -= ((HUDView)this.View).UpdateDailyQuestButtons;
  81. }
  82. if (SingletonMonobehaviour<CIGPurchasedBuildingsManager>.IsAvailable)
  83. {
  84. SingletonMonobehaviour<CIGPurchasedBuildingsManager>.Instance.BuildingCountChangedEvent -= this.UpdateShopButtonBadge;
  85. }
  86. if (SingletonMonobehaviour<VideoAds1Manager>.IsAvailable)
  87. {
  88. VideoAds1Manager instance = SingletonMonobehaviour<VideoAds1Manager>.Instance;
  89. instance.UnlockedEvent -= this.OnVideoAvailabilityChanged;
  90. instance.AvailabilityChangedEvent -= this.OnVideoAvailabilityChanged;
  91. }
  92. if (SingletonMonobehaviour<WorldMap>.IsAvailable)
  93. {
  94. SingletonMonobehaviour<WorldMap>.Instance.VisibilityChangedEvent -= this.OnWorldMapVisibility;
  95. }
  96. if (SingletonMonobehaviour<DependencyTree>.IsAvailable)
  97. {
  98. SingletonMonobehaviour<DependencyTree>.Instance.DependencyAchievedChangedEvent -= this.OnDependencyAchievedChanged;
  99. SingletonMonobehaviour<DependencyTree>.Instance.DependencyActiveChangedEvent -= this.OnDependencyActiveChanged;
  100. SingletonMonobehaviour<DependencyTree>.Instance.DependencyRewardClaimedEvent -= this.OnDependencyRewardClaimed;
  101. }
  102. if (SingletonMonobehaviour<CIGIslandsManager>.IsAvailable)
  103. {
  104. SingletonMonobehaviour<CIGIslandsManager>.Instance.VisitingStartedEvent -= this.OnVisitingStarted;
  105. SingletonMonobehaviour<CIGIslandsManager>.Instance.VisitingStoppedEvent -= this.OnVisitingStopped;
  106. }
  107. }
  108. public override void Enter(State oldState, bool openView)
  109. {
  110. base.Enter(oldState, openView);
  111. SingletonMonobehaviour<PopupManager>.Instance.PopupsMayOpen = true;
  112. this.DetermineViewState();
  113. this.HideArrow();
  114. this.HideTutorialDialog();
  115. if (openView)
  116. {
  117. this.UpdateAll();
  118. }
  119. this.CheckTutorialButton();
  120. this.UpdateRewardBadge();
  121. this.OnVideoAvailabilityChanged();
  122. }
  123. public override void Leave(State newState, bool closeView)
  124. {
  125. SingletonMonobehaviour<PopupManager>.Instance.PopupsMayOpen = false;
  126. base.Leave(newState, false);
  127. this.HideArrow();
  128. this.HideTutorialDialog();
  129. }
  130. public void PushSettingsExclamationRequest(object obj)
  131. {
  132. if (this._settingsExclamationRequests.Count == 0)
  133. {
  134. ((HUDView)this.View).SetSettingsAttention(true);
  135. }
  136. this._settingsExclamationRequests.Add(obj);
  137. }
  138. public void PopSettingsExclamationRequest(object obj)
  139. {
  140. if (this._settingsExclamationRequests.Remove(obj) && this._settingsExclamationRequests.Count == 0)
  141. {
  142. ((HUDView)this.View).SetSettingsAttention(false);
  143. }
  144. }
  145. public void OnIslandChange(IsometricIsland oldIsland, IsometricIsland newIsland)
  146. {
  147. if (oldIsland != null)
  148. {
  149. oldIsland.islandState.ValueChanged -= this.GameStateValueChanged;
  150. }
  151. if (newIsland != null)
  152. {
  153. newIsland.islandState.ValueChanged += this.GameStateValueChanged;
  154. ((HUDView)this.View).UpdateDropChestButton(newIsland.DropChestManager);
  155. }
  156. this.UpdateAll();
  157. }
  158. public void CheckTutorialButton()
  159. {
  160. ((HUDView)this.View).SetTutorialButton(!(this.tutorial == null) && !this.tutorial.IsFinished);
  161. }
  162. public void UpdateAll()
  163. {
  164. this.GameStateValueChanged("Level", null, null);
  165. this.GameStateValueChanged("GiftedBalance", null, null);
  166. this.GameStateValueChanged("EarnedBalance", null, null);
  167. this.GameStateValueChanged("Happiness", null, null);
  168. this.GameStateValueChanged("Population", null, null);
  169. this.GameStateValueChanged("Employees", null, null);
  170. this.GameStateValueChanged("Transport", null, null);
  171. ((HUDView)this.View).UpdateDailyQuestButtons();
  172. this.RefreshEyeButtonToggle();
  173. this.RefreshShowLevelsButtonToggle();
  174. }
  175. public void UpdateShopButtonBadge()
  176. {
  177. ((HUDView)this.View).UpdateShopBadge();
  178. }
  179. public void OpenCurrencyPopup(ShopMenuTabs shopMenuTab)
  180. {
  181. SingletonMonobehaviour<PopupManager>.Instance.RequestFirstPopup<ShopPopupState>(delegate (State state)
  182. {
  183. ((ShopPopupState)state).OpenPopup(shopMenuTab, false);
  184. });
  185. }
  186. public void OpenRewardsPopup()
  187. {
  188. SingletonMonobehaviour<PopupManager>.Instance.RequestFirstPopup<QuestsPopupState>(delegate (State state)
  189. {
  190. ((QuestsPopupState)state).Init(QuestsMenuTabs.OngoingQuests);
  191. });
  192. }
  193. public void ConfirmStateEntered()
  194. {
  195. this.DetermineViewState();
  196. }
  197. public void OpenShopPopup()
  198. {
  199. SingletonMonobehaviour<PopupManager>.Instance.RequestFirstPopup<ShopPopupState>(delegate (State state)
  200. {
  201. CIGTutorialManager instanceIfAvailable = SingletonMonobehaviour<CIGTutorialManager>.InstanceIfAvailable;
  202. if (instanceIfAvailable != null)
  203. {
  204. if (instanceIfAvailable.state == CIGTutorialState.BuildFarm)
  205. {
  206. ((ShopPopupState)state).OpenPopup(ShopMenuTabs.Commercial, false);
  207. return;
  208. }
  209. if (instanceIfAvailable.state == CIGTutorialState.BuildHouse)
  210. {
  211. ((ShopPopupState)state).OpenPopup(ShopMenuTabs.Residential, false);
  212. return;
  213. }
  214. }
  215. ((ShopPopupState)state).OpenPopup(ShopMenuTabs.Gold, true);
  216. });
  217. }
  218. public void OpenDailyQuest()
  219. {
  220. SingletonMonobehaviour<PopupManager>.Instance.ShowDailyQuestPopup();
  221. }
  222. public void OpenBuildDemolishPopup(BuildDemolishTabs buildDemolishTab)
  223. {
  224. SingletonMonobehaviour<PopupManager>.Instance.ShowBuildDemolishPopup(buildDemolishTab);
  225. }
  226. public void OpenSocialPopup()
  227. {
  228. SingletonMonobehaviour<PopupManager>.Instance.RequestFirstPopup<SparkSocMenuPopupState>(null);
  229. }
  230. public void OpenFacebook()
  231. {
  232. Application.OpenURL(SingletonMonobehaviour<CIGGameConstants>.Instance.SSFacebookUrl);
  233. }
  234. public void OpenGameFacebook()
  235. {
  236. Application.OpenURL(SingletonMonobehaviour<CIGGameConstants>.Instance.FacebookUrl);
  237. }
  238. public void OpenTelegram()
  239. {
  240. Application.OpenURL("https://t.me/MagnetGame_CityIsland3");
  241. }
  242. public void OpenWorldMap()
  243. {
  244. if (this._showWorldMapRoutine != null)
  245. {
  246. base.StopCoroutine(this._showWorldMapRoutine);
  247. }
  248. base.StartCoroutine(this._showWorldMapRoutine = this.ShowWorldMapRoutine());
  249. }
  250. public void OpenRoadSelectionPopup()
  251. {
  252. SingletonMonobehaviour<PopupManager>.Instance.OpenRoadMenu();
  253. }
  254. public void OpenSettingsPopup()
  255. {
  256. SingletonMonobehaviour<PopupManager>.Instance.RequestFirstPopup<SettingsPopupState>(null);
  257. }
  258. public void OpenLeaderboardsPopup()
  259. {
  260. SingletonMonobehaviour<PopupManager>.Instance.RequestFirstPopup<LeaderboardsPopupState>(null);
  261. }
  262. public void OpenCityAdvisorPopup()
  263. {
  264. CIGGameState instance = SingletonMonobehaviour<CIGGameState>.Instance;
  265. instance.SetValue("cityAdvisorOpened", true);
  266. SingletonMonobehaviour<CIGCityAdvisor>.Instance.Show();
  267. }
  268. public void ToggleBuildingsHidden()
  269. {
  270. IsometricIsland.Current.builder.TilesHidden = !IsometricIsland.Current.builder.TilesHidden;
  271. this.RefreshEyeButtonToggle();
  272. }
  273. public void ToggleUpgradeLevelView()
  274. {
  275. UpgradableBuilding.SetLevelIconsHidden(!UpgradableBuilding.LevelIconsHidden, IsometricIsland.Current.grid);
  276. this.RefreshShowLevelsButtonToggle();
  277. }
  278. public void StartDestroying()
  279. {
  280. if (CityIsland.Current != null)
  281. {
  282. CityIsland.Current.StartDestroying();
  283. }
  284. else
  285. {
  286. UnityEngine.Debug.LogWarning("Have no CityIsland");
  287. }
  288. }
  289. public void StopVisiting()
  290. {
  291. SingletonMonobehaviour<CIGIslandsManager>.Instance.StopVisiting();
  292. }
  293. public void ShowArrowAboveButtonIndex(int index, int duration = 0)
  294. {
  295. ((HUDView)this.View).ShowArrowAboveButtonIndex(index, duration);
  296. }
  297. public void HideArrow()
  298. {
  299. ((HUDView)this.View).HideArrow();
  300. }
  301. public void ShowTutorialDialog(ILocalizedString tutorialText, Action dialogHiddenAction)
  302. {
  303. ((HUDView)this.View).ShowTutorialDialog(tutorialText);
  304. this._dialogHiddenAction = dialogHiddenAction;
  305. }
  306. public void HideTutorialDialog()
  307. {
  308. ((HUDView)this.View).HideTutorialDialog();
  309. if (this._dialogHiddenAction != null)
  310. {
  311. this._dialogHiddenAction();
  312. this._dialogHiddenAction = null;
  313. }
  314. }
  315. public void QuitTutorial()
  316. {
  317. SingletonMonobehaviour<PopupManager>.Instance.ShowOkCancelPopup(UISpriteType.DemolishIcon, Localization.Key("quit_tutorial"), Localization.Key("tutorial_quit_confirm"), delegate ()
  318. {
  319. if (this != null && this.tutorial != null)
  320. {
  321. this.tutorial.QuitTutorial();
  322. if (this._isInState)
  323. {
  324. this.HideArrow();
  325. this.HideTutorialDialog();
  326. ((HUDView)this.View).SetTutorialButton(false);
  327. }
  328. }
  329. }, null);
  330. }
  331. public void UpdateBuildQueueButton()
  332. {
  333. ((HUDView)this.View).UpdateBuildQueueButton();
  334. }
  335. public void UpdateDemolishQueueButton()
  336. {
  337. ((HUDView)this.View).UpdateDemolishQueueButton();
  338. }
  339. public void WatchVideo()
  340. {
  341. Action greenButtonAction = delegate ()
  342. {
  343. if (SingletonMonobehaviour<VideoAds1Manager>.Instance.ShowVideoQuestAd())
  344. {
  345. ((HUDView)this.View).SetWatchVideoButtonVisible(false);
  346. }
  347. };
  348. if (SingletonMonobehaviour<VideoAds1Manager>.Instance.IsReady)
  349. {
  350. decimal m = 1m;
  351. Dependency dependency = SingletonMonobehaviour<DependencyTree>.Instance["quests"];
  352. Dependency child = dependency.GetChild((Dependency q) => q.Identifier == "game/videos_gold");
  353. if (child != null)
  354. {
  355. Dependency dependency2 = child.GetChild((Dependency l) => !l.IsAchieved || !l.RewardClaimed) ?? child.Children[child.Children.Count - 1];
  356. m = dependency2.Reward.GetValue("Gold");
  357. }
  358. SingletonMonobehaviour<PopupManager>.Instance.RequestFirstGenericPopup(UISpriteType.GoldLarge, Localization.Key("watch_video"), Localization.Format(Localization.Key("watch_video_popup_text"), new ILocalizedString[]
  359. {
  360. Localization.Integer(m),
  361. Localization.Key("gold")
  362. }), Localization.Key("ok"), Localization.EmptyLocalizedString, greenButtonAction, null, null, true);
  363. }
  364. }
  365. public void Like()
  366. {
  367. bool flag = false;
  368. CIGSparkSocServices instanceIfAvailable = SingletonMonobehaviour<CIGSparkSocServices>.InstanceIfAvailable;
  369. if (instanceIfAvailable != null)
  370. {
  371. flag = instanceIfAvailable.IsLogedInAndLinked();
  372. }
  373. if (!flag)
  374. {
  375. SingletonMonobehaviour<PopupManager>.Instance.RequestFirstPopup<SparkSocLoginPopupState>(delegate (State state)
  376. {
  377. ((SparkSocLoginPopupState)state).SetLoggedInCallback(new Action(this.OnLoggedIn));
  378. });
  379. }
  380. else
  381. {
  382. CIGIslandsManager instanceIfAvailable2 = SingletonMonobehaviour<CIGIslandsManager>.InstanceIfAvailable;
  383. if (instanceIfAvailable2 != null && instanceIfAvailable2.IsVisiting)
  384. {
  385. LeaderboardEntry visitingPlayer = SingletonMonobehaviour<CIGIslandsManager>.Instance.VisitingPlayer;
  386. if (LikeRegistrar.HaveVotedFor(visitingPlayer.InstallUuid))
  387. {
  388. UnityEngine.Debug.LogError("Interface should have stopped double vote for player");
  389. }
  390. else
  391. {
  392. instanceIfAvailable.VoteForPlayer(visitingPlayer.InstallUuid);
  393. LikeRegistrar.SaveVoteFor(visitingPlayer.InstallUuid);
  394. int num = LikeRegistrar.GetNumberOfLikes(visitingPlayer.InstallUuid);
  395. num = Mathf.Max(num, Mathf.Max(visitingPlayer.Votes, 0));
  396. LikeRegistrar.SaveNumberOfLikes(visitingPlayer.InstallUuid, num + 1);
  397. ((HUDView)this.View).SetLikeButton();
  398. }
  399. }
  400. else
  401. {
  402. UnityEngine.Debug.LogError("No SparkSoc service!");
  403. }
  404. }
  405. }
  406. private void OnLoggedIn()
  407. {
  408. CIGIslandsManager instanceIfAvailable = SingletonMonobehaviour<CIGIslandsManager>.InstanceIfAvailable;
  409. if (instanceIfAvailable != null && instanceIfAvailable.IsVisiting)
  410. {
  411. ((HUDView)this.View).SetLikeButton();
  412. }
  413. }
  414. protected void UpdateSpeedupCost()
  415. {
  416. }
  417. protected void GameStateValueChanged(string key, object oldValue, object newValue)
  418. {
  419. CIGGameState instance = SingletonMonobehaviour<CIGGameState>.Instance;
  420. CIGIslandState cigislandState = UnityEngine.Object.FindObjectOfType<CIGIslandState>();
  421. HUDView hudview = (HUDView)this.View;
  422. if (key.StartsWith("UnlockedIsland"))
  423. {
  424. if (!true.Equals(oldValue) && true.Equals(newValue))
  425. {
  426. hudview.ShowWorldMapExclamationMark();
  427. }
  428. return;
  429. }
  430. if (key.Equals("Level"))
  431. {
  432. hudview.UpdateLevel(instance);
  433. }
  434. if (cigislandState == null)
  435. {
  436. return;
  437. }
  438. int num = cigislandState.Population;
  439. int num2 = cigislandState.Housing;
  440. int num3 = cigislandState.Employees;
  441. int num4 = cigislandState.Jobs;
  442. int num5 = cigislandState.AvailableHappiness;
  443. if (this.alwaysShowGlobalState || SingletonMonobehaviour<WorldMap>.Instance.IsVisible)
  444. {
  445. num = instance.GlobalPopulation;
  446. num2 = instance.GlobalHousing;
  447. num3 = instance.GlobalEmployees;
  448. num4 = instance.GlobalJobs;
  449. num5 = instance.GlobalHappiness;
  450. }
  451. int num6 = Mathf.Max(Mathf.Max(Mathf.Max(num2, num4), num5), num);
  452. if (key.Equals("EarnedBalance") || key.Equals("GiftedBalance"))
  453. {
  454. hudview.UpdateBalance(instance);
  455. }
  456. if (key.Equals("Happiness") || key.Equals("Housing") || key.Equals("GlobalHappiness") || key.Equals("GlobalHousing"))
  457. {
  458. hudview.UpdateHappiness(num5, num2);
  459. }
  460. if (key.Equals("Population") || key.Equals("Housing") || key.Equals("GlobalPopulation") || key.Equals("GlobalHousing"))
  461. {
  462. float progress = (num6 != 0) ? ((float)num / (float)num6) : 0f;
  463. hudview.UpdatePopulation(progress, num, num2);
  464. }
  465. if (key.Equals("Employees") || key.Equals("Jobs") || key.Equals("GlobalEmployees") || key.Equals("GlobalJobs"))
  466. {
  467. float progress2 = (num6 != 0) ? ((float)num3 / (float)num6) : 0f;
  468. hudview.UpdateEmployees(progress2, num3, num4);
  469. }
  470. }
  471. protected void DetermineViewState()
  472. {
  473. if (SingletonMonobehaviour<CIGIslandsManager>.IsAvailable && SingletonMonobehaviour<CIGIslandsManager>.Instance.IsVisiting)
  474. {
  475. if (SingletonMonobehaviour<WorldMap>.IsAvailable && SingletonMonobehaviour<WorldMap>.Instance.IsVisible)
  476. {
  477. ((HUDView)this.View).SetViewState(HUDViewState.VisitingWorldMap);
  478. }
  479. else
  480. {
  481. ((HUDView)this.View).SetViewState(HUDViewState.VisitingIsland);
  482. }
  483. }
  484. else if (SingletonMonobehaviour<WorldMap>.IsAvailable && SingletonMonobehaviour<WorldMap>.Instance.IsVisible)
  485. {
  486. ((HUDView)this.View).SetViewState(HUDViewState.WorldMap);
  487. }
  488. else if (base.fsm != null && base.fsm.CurrentState is HUDConfirmState)
  489. {
  490. ((HUDView)this.View).SetViewState(HUDViewState.Confirm);
  491. }
  492. else
  493. {
  494. ((HUDView)this.View).SetViewState(HUDViewState.Island);
  495. }
  496. }
  497. private IEnumerator ShowWorldMapRoutine()
  498. {
  499. yield return SingletonMonobehaviour<CinematicEffect>.Instance.ShowAnimated();
  500. SingletonMonobehaviour<WorldMap>.Instance.ShowInstant();
  501. yield return SingletonMonobehaviour<CinematicEffect>.Instance.HideAnimated();
  502. yield break;
  503. }
  504. private IEnumerator HideWorldMapRoutine()
  505. {
  506. yield return SingletonMonobehaviour<CinematicEffect>.Instance.ShowAnimated();
  507. SingletonMonobehaviour<WorldMap>.Instance.HideInstant();
  508. yield return SingletonMonobehaviour<CinematicEffect>.Instance.HideAnimated();
  509. yield break;
  510. }
  511. private void OnVideoAvailabilityChanged()
  512. {
  513. ((HUDView)this.View).SetWatchVideoButtonVisible(SingletonMonobehaviour<VideoAds1Manager>.Instance.IsReady);
  514. }
  515. private void OnVisitingStarted()
  516. {
  517. ((HUDView)this.View).SetVisitingInfo(SingletonMonobehaviour<CIGIslandsManager>.Instance.VisitingPlayer);
  518. }
  519. private void OnVisitingStopped()
  520. {
  521. this.DetermineViewState();
  522. }
  523. private void RefreshEyeButtonToggle()
  524. {
  525. ((HUDView)this.View).SetEyeButtonToggle(IsometricIsland.Current != null && IsometricIsland.Current.builder.TilesHidden);
  526. }
  527. private void RefreshShowLevelsButtonToggle()
  528. {
  529. ((HUDView)this.View).SetShowLevelsButtonToggle(!UpgradableBuilding.LevelIconsHidden);
  530. }
  531. private void OnWorldMapVisibility(bool visible)
  532. {
  533. this.DetermineViewState();
  534. this.HideArrow();
  535. this.HideTutorialDialog();
  536. this.UpdateAll();
  537. }
  538. protected void OnDependencyAchievedChanged(Dependency dependency, bool achieved)
  539. {
  540. this.UpdateRewardBadge();
  541. }
  542. protected void OnDependencyActiveChanged(Dependency dependency, bool active)
  543. {
  544. this.UpdateRewardBadge();
  545. }
  546. protected void OnDependencyRewardClaimed(Dependency dependency, bool claimed)
  547. {
  548. this.UpdateRewardBadge();
  549. }
  550. protected void UpdateRewardBadge()
  551. {
  552. int num = 0;
  553. Dependency dependency = SingletonMonobehaviour<DependencyTree>.Instance["quests"];
  554. int count = dependency.Children.Count;
  555. for (int i = 0; i < count; i++)
  556. {
  557. Dependency dependency2 = dependency.Children[i];
  558. if (dependency2.IsActive)
  559. {
  560. int count2 = dependency2.Children.Count;
  561. for (int j = 0; j < count2; j++)
  562. {
  563. Dependency dependency3 = dependency2.Children[j];
  564. if (dependency3.IsAchieved && !dependency3.RewardClaimed)
  565. {
  566. num++;
  567. }
  568. }
  569. }
  570. }
  571. ((HUDView)this.View).SetRewardBadge(num > 0);
  572. }
  573. public bool alwaysShowGlobalState = true;
  574. private CIGTutorialManager tutorial;
  575. private Action _dialogHiddenAction;
  576. private IEnumerator _showWorldMapRoutine;
  577. private IEnumerator _hideWorldMapRoutine;
  578. private List<object> _settingsExclamationRequests = new List<object>();
  579. }