Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 3
0
 public bool CheckFirstTutorial(TutorialModel model, TutorialID ID)
 {
     if (!model.GetKeyTutorialFlg((int)ID) && CheckTutorialCondition(ID) && req == null)
     {
         return(true);
     }
     return(false);
 }
Ejemplo n.º 4
0
 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);
 }
Ejemplo n.º 5
0
 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();
 }
Ejemplo n.º 6
0
        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);
            }
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
 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);
        }