using System; using CIG.Translation; using CIGEnums; using SUISS.Core; using UnityEngine.SceneManagement; public class GameSceneCloudSaveResolver : SceneCloudSaveResolver { protected override void OnDestroy() { if (SingletonMonobehaviour.IsAvailable) { SingletonMonobehaviour.Instance.VisibilityChangedEvent -= this.OnWorldMapVisibilityChanged; } base.OnDestroy(); } protected override void OnConflictAskPlayer() { SingletonMonobehaviour.Instance.VisibilityChangedEvent += this.OnWorldMapVisibilityChanged; } protected override void OnConflictResultInvalidGameVersion() { SingletonMonobehaviour.Instance.VisibilityChangedEvent += this.OnWorldMapVisibilityChanged; } private void OnWorldMapVisibilityChanged(bool visible) { if (!visible) { if (StorageController.CloudStorage.LastResolutionResult == ConflictResolver.ConflictSolution.AskPlayer) { this.OpenConflictPopup(); } else if (StorageController.CloudStorage.LastResolutionResult == ConflictResolver.ConflictSolution.InvalidGameVersion) { this.OpenWrongGameVersionPopup(); } } SingletonMonobehaviour.Instance.VisibilityChangedEvent -= this.OnWorldMapVisibilityChanged; } private void OpenConflictPopup() { SingletonMonobehaviour.Instance.RequestFirstPopup(delegate(State state) { ((CloudSaveConflictPopupState)state).UpdateInfo(new Action(this.AskPlayerPickCloud), new Action(this.AskPlayerPickLocal), (!SingletonMonobehaviour.IsAvailable) ? 0 : SingletonMonobehaviour.Instance.Level, StorageController.CloudStorage.LastCloudGameState.PlayerLevel); }); } private void OpenWrongGameVersionPopup() { SingletonMonobehaviour.Instance.RequestFirstPopup(delegate(State state) { ((GenericPopupState)state).UpdateInfo(UISpriteType.CloudSaveIcon, Localization.Key("conflict_gameversion_title"), Localization.Key("conflict_gameversion_body"), Localization.Key("ok"), null, null, null, null, false); }); } private void AskPlayerPickLocal() { this.OnConflictResultPickLocal(); } private void AskPlayerPickCloud() { this.OnConflictResultPickCloud(); SceneManager.LoadScene("Game"); } }