private IEnumerator LoadTutorial(TutorialModel model, TutorialID ID, Action OnLoaded) { KeyControl key = null; if (SingletonMonoBehaviour <UIShortCutMenu> .exist()) { SingletonMonoBehaviour <UIShortCutMenu> .Instance.LockTouchControl(isEnable : true); key = App.OnlyController; App.OnlyController = new KeyControl(); } req = Resources.LoadAsync("Prefabs/TutorialGuide/TutorialDialog_" + ID.ToString()); yield return(req); tutorialDialog = null; tutorialDialog = Util.Instantiate(req.asset).GetComponent <TutorialDialog>(); tutorialDialog.SetTutorialId(ID); model.SetKeyTutorialFlg((int)ID); tutorialDialog.SetOnLoaded(OnLoaded); req = null; if (SingletonMonoBehaviour <UIShortCutMenu> .exist()) { SingletonMonoBehaviour <UIShortCutMenu> .Instance.LockTouchControl(isEnable : false); App.OnlyController = key; } }
public Task ShowTutorialIfNewAsync( TutorialID id, List <GridRect> dynamicInteractableRects, List <Tool> dynamicInteractableTools) { if (TutorialWasAlreadyShown(id)) { return(Task.CompletedTask); } Tutorial tutorial = new Tutorial(tutorialMap[id]); if (tutorial.InteractableRects is null) { tutorial.InteractableRects = dynamicInteractableRects; } else { tutorial.InteractableRects.AddRange(dynamicInteractableRects); } if (tutorial.InteractableTools is null) { tutorial.InteractableTools = dynamicInteractableTools; } else { tutorial.InteractableTools.AddRange(dynamicInteractableTools); } return(ShowTutorialAsync(tutorial)); }
public bool CheckFirstTutorial(TutorialModel model, TutorialID ID) { if (!model.GetKeyTutorialFlg((int)ID) && CheckTutorialCondition(ID) && req == null) { return(true); } return(false); }
public bool CheckAndShowFirstTutorial(TutorialModel model, TutorialID ID, Action OnLoaded) { if (!model.GetKeyTutorialFlg((int)ID) && CheckTutorialCondition(ID) && req == null) { StartCoroutine(LoadTutorial(model, ID, OnLoaded)); return(true); } return(false); }
public Tutorial(Tutorial other) { ID = other.ID; Message = other.Message; ShowDismissButton = other.ShowDismissButton; LockBoard = other.LockBoard; InteractableTools = other.InteractableTools.ToList(); PlaybackButtonAvailable = other.PlaybackButtonAvailable; HighlightSpikeBalls = other.HighlightSpikeBalls; InteractableRects = other.InteractableRects.ToList(); }
private bool CheckTutorialCondition(TutorialID ID) { switch (ID) { case TutorialID.RepairInfo: return(SingletonMonoBehaviour <AppInformation> .Instance.CurrentDeck.GetShips().Any((ShipModel x) => (float)(x.NowHp / x.MaxHp) < 0.7f)); case TutorialID.SupplyInfo: return(SingletonMonoBehaviour <AppInformation> .Instance.CurrentDeck.GetShips().Any((ShipModel x) => x.AmmoRate < 50.0 || x.FuelRate < 50.0)); default: return(true); } }
public bool CheckAndShowFirstTutorial(TutorialModel model, TutorialID ID, Action OnLoaded, Action OnFinished) { Action onLoaded = delegate { if (OnLoaded != null) { OnLoaded(); } SingletonMonoBehaviour <TutorialGuideManager> .Instance.GetTutorialDialog().OnClosed = OnFinished; }; if (!model.GetKeyTutorialFlg((int)ID) && CheckTutorialCondition(ID) && req == null) { StartCoroutine(LoadTutorial(model, ID, onLoaded)); return(true); } if (OnFinished != null) { OnFinished(); } return(false); }
public void ShowFirstTutorial(TutorialModel model, TutorialID ID, Action OnLoaded) { StartCoroutine(LoadTutorial(model, ID, OnLoaded)); }
public Task ShowTutorialIfNewAsync(TutorialID id, List <GridRect> dynamicInteractableRects) => ShowTutorialIfNewAsync(id, dynamicInteractableRects, new List <Tool>());
public Task ShowTutorialIfNewAsync(TutorialID id) => ShowTutorialIfNewAsync(id, new List <GridRect>());
private static string TutorialIDToPrefsKey(TutorialID id) => $"TutorialCompleted:{Enum.GetName(typeof(TutorialID), id)}";
public bool TutorialWasAlreadyShown(TutorialID id) { string prefsKey = TutorialIDToPrefsKey(id); return(PlayerPrefs.GetInt(prefsKey, -1) >= 0); }