您不能選擇超過 %s 個話題 話題必須以字母或數字為開頭,可包含連接號 ('-') 且最長為 35 個字
 
 
 

71 行
2.3 KiB

  1. using System;
  2. using CIG.Translation;
  3. using CIGEnums;
  4. using SUISS.Core;
  5. using UnityEngine.SceneManagement;
  6. public class GameSceneCloudSaveResolver : SceneCloudSaveResolver
  7. {
  8. protected override void OnDestroy()
  9. {
  10. if (SingletonMonobehaviour<WorldMap>.IsAvailable)
  11. {
  12. SingletonMonobehaviour<WorldMap>.Instance.VisibilityChangedEvent -= this.OnWorldMapVisibilityChanged;
  13. }
  14. base.OnDestroy();
  15. }
  16. protected override void OnConflictAskPlayer()
  17. {
  18. SingletonMonobehaviour<WorldMap>.Instance.VisibilityChangedEvent += this.OnWorldMapVisibilityChanged;
  19. }
  20. protected override void OnConflictResultInvalidGameVersion()
  21. {
  22. SingletonMonobehaviour<WorldMap>.Instance.VisibilityChangedEvent += this.OnWorldMapVisibilityChanged;
  23. }
  24. private void OnWorldMapVisibilityChanged(bool visible)
  25. {
  26. if (!visible)
  27. {
  28. if (StorageController.CloudStorage.LastResolutionResult == ConflictResolver.ConflictSolution.AskPlayer)
  29. {
  30. this.OpenConflictPopup();
  31. }
  32. else if (StorageController.CloudStorage.LastResolutionResult == ConflictResolver.ConflictSolution.InvalidGameVersion)
  33. {
  34. this.OpenWrongGameVersionPopup();
  35. }
  36. }
  37. SingletonMonobehaviour<WorldMap>.Instance.VisibilityChangedEvent -= this.OnWorldMapVisibilityChanged;
  38. }
  39. private void OpenConflictPopup()
  40. {
  41. SingletonMonobehaviour<PopupManager>.Instance.RequestFirstPopup<CloudSaveConflictPopupState>(delegate(State state)
  42. {
  43. ((CloudSaveConflictPopupState)state).UpdateInfo(new Action(this.AskPlayerPickCloud), new Action(this.AskPlayerPickLocal), (!SingletonMonobehaviour<CIGGameState>.IsAvailable) ? 0 : SingletonMonobehaviour<CIGGameState>.Instance.Level, StorageController.CloudStorage.LastCloudGameState.PlayerLevel);
  44. });
  45. }
  46. private void OpenWrongGameVersionPopup()
  47. {
  48. SingletonMonobehaviour<PopupManager>.Instance.RequestFirstPopup<GenericPopupState>(delegate(State state)
  49. {
  50. ((GenericPopupState)state).UpdateInfo(UISpriteType.CloudSaveIcon, Localization.Key("conflict_gameversion_title"), Localization.Key("conflict_gameversion_body"), Localization.Key("ok"), null, null, null, null, false);
  51. });
  52. }
  53. private void AskPlayerPickLocal()
  54. {
  55. this.OnConflictResultPickLocal();
  56. }
  57. private void AskPlayerPickCloud()
  58. {
  59. this.OnConflictResultPickCloud();
  60. SceneManager.LoadScene("Game");
  61. }
  62. }