private bool CheckIfShouldOpenCurrentChapterOrCurrentBackupChapter()
 {
     if (TutorialProxy.instance.CurrentTutorialChapterData != null)
     {
         int currentTutorialChapterID = TutorialProxy.instance.CurrentTutorialChapterData.id;
         if (TutorialProxy.instance.IsFirstStep())
         {
             TutorialChapterData currentTutorialChapterData = TutorialChapterData.GetTutorialChapterData(currentTutorialChapterID);
             if (CheckIfChapterIsQualified(currentTutorialChapterData))
             {
                 if (CheckIfShouldOpenCurrentChapter())
                 {
                     return(true);
                 }
             }
             else if (currentTutorialChapterData.HasBackupTutorialChapterData())
             {
                 TutorialChapterData backupTutorialChapterData = currentTutorialChapterData.GetBackupTutorialChapterData();
                 if (CheckIfChapterIsQualified(backupTutorialChapterData))
                 {
                     return(CheckIfShouldOpenCurrentBackupChapter());
                 }
             }
         }
     }
     return(false);
 }
Exemple #2
0
        public static TutorialView Open(TutorialChapterData tutorialChapterData, TutorialStepData tutorialStepData)
        {
            TutorialView.Close();
            TutorialView tutorialView = UIMgr.instance.Open <TutorialView>(PREFAB_PATH, EUISortingLayer.Tutorial, UIOpenMode.Replace);

            tutorialView.SetData(tutorialChapterData, tutorialStepData);
            return(tutorialView);
        }
        private bool CheckIfShouldOpenCurrentBackupChapter()
        {
            Debugger.Log("===== CheckIfShouldOpenCurrentBackupChapter =====");
            int currentTutorialChapterDataID         = TutorialProxy.instance.CurrentTutorialChapterData.id;
            TutorialChapterData currentBackupChapter = TutorialChapterData.GetBackupTutorialChapterData(currentTutorialChapterDataID);

            if (currentBackupChapter != null)
            {
                if (CheckIfChapterIsQualified(currentBackupChapter))
                {
                    TutorialProxy.instance.MoveToChapter(currentBackupChapter);
//					if (!UIMgr.instance.IsOpening(TutorialView.PREFAB_PATH))
                    TutorialView.Open(TutorialProxy.instance.CurrentTutorialChapterData, TutorialProxy.instance.CurrentTutorialStepData);
                    Debugger.Log("======[Turotial]::[OpenChapter]::[" + (TutorialProxy.instance.CurrentTutorialChapterData.isBackup ? "Backup:" : "Main:") + TutorialProxy.instance.CurrentTutorialChapterData.id + "]");
                    TutorialProxy.instance.IsCurrentTurorialChapterOpened = true;
                }
            }
            Debugger.Log("===== CheckIfShouldOpenCurrentBackupChapter =====");
            return(false);
        }
Exemple #4
0
        public void SetData(TutorialChapterData tutorialChapterData, TutorialStepData tutorialStepData)
        {
            _tutorialChapterData = tutorialChapterData;
            _tutorialStepData    = tutorialStepData;
            _waitMSGIDList       = new List <string>(_tutorialStepData.waitMSGIDList);
            for (int index = 0, count = _waitMSGIDList.Count; index < count; index++)
            {
                Observers.Facade.Instance.RegisterObserver(_waitMSGIDList[index].ToString(), OnReceiveWaitMSG);
            }

            if (_tutorialStepData.forceCompleteMSGIDList.Count > 0)
            {
                _forceCompleteMSGIDList = new List <string>(_tutorialStepData.forceCompleteMSGIDList);
                for (int index = 0, count = _forceCompleteMSGIDList.Count; index < count; index++)
                {
                    Observers.Facade.Instance.RegisterObserver(_forceCompleteMSGIDList[index].ToString(), OnReceiveForceCompleteMSG);
                }
            }
            else
            {
                _forceCompleteMSGIDList = null;
            }

            _handRootOffset  = tutorialStepData.handIndicatorOffset;
            _arrowRootOffset = tutorialStepData.arrowIndicatorOffset;

            maskImage.gameObject.SetActive(_tutorialStepData.enableMask);
            maskImage.GetComponent <UnityEngine.UI.Mask>().showMaskGraphic = _tutorialStepData.showMask;
            nextStepButton.gameObject.SetActive(_tutorialStepData.enableNextStepButton);
            if (_tutorialStepData.showDialog)
            {
                AnchorType dialogAnchorType = (AnchorType)Enum.Parse(typeof(AnchorType), _tutorialStepData.dialogAnchor);
                dialogRootRectTransform.anchorMin        = GetAnchoredVector2(dialogAnchorType);
                dialogRootRectTransform.anchorMax        = GetAnchoredVector2(dialogAnchorType);
                dialogRootRectTransform.pivot            = GetAnchoredVector2(dialogAnchorType);
                dialogRootRectTransform.anchoredPosition = _tutorialStepData.dialogOffset;
                dialogText.text = Localization.Get(_tutorialStepData.dialogContentID);
            }
            if (_tutorialStepData.showNPC)
            {
                NPCShowData npcShowData = NPCShowData.GetNPCShowData(_tutorialStepData.npcShowID);
                string      npcBodyPath = ResPath.GetNPCTexturePath(npcShowData.npc_name);
                string      npcFacePath = ResPath.GetNPCTexturePath(npcShowData.faceDic[_tutorialStepData.npcFace]);
                npcBodyRawImage.texture = ResMgr.instance.Load <Texture>(npcBodyPath);
                npcBodyRawImage.SetNativeSize();
                npcBodyRawImage.transform.localScale = new Vector3(_tutorialStepData.npcFlip ? -1 : 1, 1, 1);
                npcFaceRawImage.texture = ResMgr.instance.Load <Texture>(npcFacePath);
                npcFaceRawImage.SetNativeSize();
                npcFaceRawImage.rectTransform.anchorMin        = Vector2.zero;
                npcFaceRawImage.rectTransform.anchorMax        = Vector2.zero;
                npcFaceRawImage.rectTransform.pivot            = Vector2.zero;
                npcFaceRawImage.rectTransform.anchoredPosition = npcShowData.facePosition;

                AnchorType npcAnchorType = (AnchorType)Enum.Parse(typeof(AnchorType), _tutorialStepData.npcAnchor);
                npcBodyRawImage.rectTransform.anchorMin        = GetAnchoredVector2(npcAnchorType);
                npcBodyRawImage.rectTransform.anchorMax        = GetAnchoredVector2(npcAnchorType);
                npcBodyRawImage.rectTransform.pivot            = GetAnchoredVector2(npcAnchorType);
                npcBodyRawImage.rectTransform.anchoredPosition = _tutorialStepData.npcOffset;
            }
            if (_tutorialStepData.showIllustrateImage)
            {
                illustrateRawImage.texture = ResMgr.instance.Load <Texture>(ResPath.GetTutorialIllustrateImagePath(_tutorialStepData.illustrateImageName));
                illustrateRawImage.SetNativeSize();
                illustrateRawImage.rectTransform.anchoredPosition = _tutorialStepData.illustrateImageAnchoredPosition;
            }
            illustrateRawImage.gameObject.SetActive(_tutorialStepData.showIllustrateImage);
            dialogRootRectTransform.gameObject.SetActive(_tutorialStepData.showDialog);
            npcBodyRawImage.gameObject.SetActive(_tutorialStepData.showNPC);

            // Add for masked ui path
            Transform maskedTarget    = null;
            Transform maskedTransform = null;

            for (int index = 0, count = _tutorialStepData.maskedUIPathList.Count; index < count; index++)
            {
                maskedTarget = UIMgr.instance.GetParticularUITransform(_tutorialStepData.maskedUIPathList[index][0], _tutorialStepData.maskedUIPathList[index][1]);
                _maskedTargetTransformList.Add(maskedTarget);
                maskedTransform = Instantiate(maskedTarget);
                DestroyImmediate(maskedTransform.GetComponent <Button>());
                DestroyImmediate(maskedTransform.GetComponent <Toggle>());

                Image[] images = maskedTransform.GetComponentsInChildren <Image>();
                for (int i = 0, imagesCount = images.Length; i < imagesCount; i++)
                {
                    images[i].color = new Color(0, 0, 0, 0);
                }
                RawImage[] rawImages = maskedTransform.GetComponentsInChildren <RawImage>();
                for (int i = 0, rawImagesCount = rawImages.Length; i < rawImagesCount; i++)
                {
                    rawImages[i].color = new Color(0, 0, 0, 0);
                }

                maskedTransform.SetParent(maskedGameObjectsRoot, false);
                maskedTransform.position = new Vector3(maskedTarget.position.x, maskedTarget.position.y, 0);
                maskedTransform.SetAsFirstSibling();
                _maskedTransformList.Add(maskedTransform);
            }
            // Add for masked ui path

            skipButton.gameObject.SetActive(_tutorialChapterData.isSkippable);
            SetTargetTransform();
        }
        private bool CheckIfChapterIsQualified(TutorialChapterData tutorialChapterData)
        {
            if (tutorialChapterData == null)
            {
                TutorialView.Close();
                return(false);
            }
            if (!_initialized)
            {
                TutorialView.Close();
                return(false);
            }
            if (!TutorialProxy.instance.IsFirstStep())
            {
                return(false);
            }
            if (tutorialChapterData == null)
            {
                TutorialView.Close();
                return(false);
            }
            if (Game.Model.GameProxy.instance.PlayerInfo == null)
            {
                TutorialView.Close();
                return(false);
            }
            // check player level
            if (Game.Model.GameProxy.instance.PlayerInfo.level < tutorialChapterData.playerLevel)
            {
                TutorialView.Close();
                return(false);
            }
            // check pass dungeon
            if (tutorialChapterData.passDungeon > 0)
            {
                Dungeon.Model.DungeonInfo requiredPassDungeonInfo = Dungeon.Model.DungeonProxy.instance.GetDungeonInfo(tutorialChapterData.passDungeon);
                if (requiredPassDungeonInfo == null || requiredPassDungeonInfo.star <= 0)
                {
                    TutorialView.Close();
                    return(false);
                }
            }

            // check if task complete
            if (tutorialChapterData.taskID > 0 &&
                !Logic.UI.Task.Model.TaskProxy.instance.IsTaskComplete(tutorialChapterData.taskID))
            {
                TutorialView.Close();
                return(false);
            }
            // check dungeon total star count
            if (tutorialChapterData.dungeonTotalStarCount > 0 &&
                Logic.Dungeon.Model.DungeonProxy.instance.GetDungeonTotalStarCount() < tutorialChapterData.dungeonTotalStarCount)
            {
                TutorialView.Close();
                return(false);
            }
            // check active ui panel path
            if (tutorialChapterData.atUIViewPath != null &&
                UI.UIMgr.instance.LastOpenedUIPath != tutorialChapterData.atUIViewPath)
            {
                TutorialView.Close();
                return(false);
            }
            if (!FunctionOpen.Model.FunctionOpenProxy.instance.IsFunctionOpen((Enums.FunctionOpenType)tutorialChapterData.functionOpenID))
            {
                TutorialView.Close();
                return(false);
            }
            return(true);
        }
 private bool LOBBY2CLIENT_LOGIN_SUCCESS_Handler(Observers.Interfaces.INotification note)
 {
     if (IsTutorialOpen)
     {
         LoginResp loginResp             = note.Body as LoginResp;
         int       lastTutorialChapterID = loginResp.guideNo > 0 ? loginResp.guideNo : TutorialChapterData.GetFirstTutorialChapterData().id;
         TutorialProxy.instance.Init(lastTutorialChapterID);
         _initialized = true;
     }
     return(true);
 }
        private bool CheckIfShouldOpenCurrentChapter()
        {
            Debugger.Log("===== CheckIfShouldOpenCurrentChapter =====");

            int currentTutorialChapterID = TutorialProxy.instance.CurrentTutorialChapterData.id;
            TutorialChapterData currentTutorialChapterData = TutorialChapterData.GetTutorialChapterData(currentTutorialChapterID);

            TutorialProxy.instance.MoveToChapter(currentTutorialChapterData);

            // check if should ignore chapter
            TutorialChapterData tutorialChapterData            = currentTutorialChapterData;
            TutorialChapterData latestCanNotIgnoredChapterData = null;

            while (tutorialChapterData != null && tutorialChapterData.canIgnore)
            {
                tutorialChapterData = tutorialChapterData.GetNextTutorialChapterData();
                if (tutorialChapterData != null && !tutorialChapterData.canIgnore)
                {
                    latestCanNotIgnoredChapterData = tutorialChapterData;
                }
            }

            if (latestCanNotIgnoredChapterData != null && CheckIfChapterIsQualified(latestCanNotIgnoredChapterData))
            {
                TutorialProxy.instance.MoveToChapter(latestCanNotIgnoredChapterData);
                currentTutorialChapterData = TutorialProxy.instance.CurrentTutorialChapterData;
            }
            // check if should ignore chapter

            if (currentTutorialChapterData == null)
            {
                if (UIMgr.instance.IsOpening(TutorialView.PREFAB_PATH))
                {
                    TutorialView.Close();
                }
                return(false);
            }
            if (!_initialized)
            {
                if (UIMgr.instance.IsOpening(TutorialView.PREFAB_PATH))
                {
                    TutorialView.Close();
                }
                return(false);
            }
            if (!TutorialProxy.instance.IsFirstStep())
            {
                return(false);
            }
            if (currentTutorialChapterData == null)
            {
                if (UIMgr.instance.IsOpening(TutorialView.PREFAB_PATH))
                {
                    TutorialView.Close();
                }
                return(false);
            }
            if (Game.Model.GameProxy.instance.PlayerInfo == null)
            {
                if (UIMgr.instance.IsOpening(TutorialView.PREFAB_PATH))
                {
                    TutorialView.Close();
                }
                return(false);
            }
            // check player level
            if (Game.Model.GameProxy.instance.PlayerInfo.level < currentTutorialChapterData.playerLevel)
            {
                if (UIMgr.instance.IsOpening(TutorialView.PREFAB_PATH))
                {
                    TutorialView.Close();
                }
                return(false);
            }
            // check pass dungeon
            if (currentTutorialChapterData.passDungeon > 0)
            {
                Dungeon.Model.DungeonInfo requiredPassDungeonInfo = Dungeon.Model.DungeonProxy.instance.GetDungeonInfo(currentTutorialChapterData.passDungeon);
                if (requiredPassDungeonInfo == null || requiredPassDungeonInfo.star <= 0)
                {
                    if (UIMgr.instance.IsOpening(TutorialView.PREFAB_PATH))
                    {
                        TutorialView.Close();
                    }
                    return(false);
                }
            }
            // check if task complete
            if (currentTutorialChapterData.taskID > 0 &&
                !Logic.UI.Task.Model.TaskProxy.instance.IsTaskComplete(currentTutorialChapterData.taskID))
            {
                if (UIMgr.instance.IsOpening(TutorialView.PREFAB_PATH))
                {
                    TutorialView.Close();
                }
                return(false);
            }
            // check dungeon total star count
            if (currentTutorialChapterData.dungeonTotalStarCount > 0 &&
                Logic.Dungeon.Model.DungeonProxy.instance.GetDungeonTotalStarCount() < currentTutorialChapterData.dungeonTotalStarCount)
            {
                if (UIMgr.instance.IsOpening(TutorialView.PREFAB_PATH))
                {
                    TutorialView.Close();
                }
                return(false);
            }
            // check active ui panel path
            if (currentTutorialChapterData.atUIViewPath != null &&
                UI.UIMgr.instance.LastOpenedUIPath != currentTutorialChapterData.atUIViewPath)
            {
                if (UIMgr.instance.IsOpening(TutorialView.PREFAB_PATH))
                {
                    TutorialView.Close();
                }
                return(false);
            }
            if (!FunctionOpen.Model.FunctionOpenProxy.instance.IsFunctionOpen((Enums.FunctionOpenType)currentTutorialChapterData.functionOpenID))
            {
                if (UIMgr.instance.IsOpening(TutorialView.PREFAB_PATH))
                {
                    TutorialView.Close();
                }
                return(false);
            }
//			if (!UIMgr.instance.IsOpening(TutorialView.PREFAB_PATH))
            TutorialView.Open(TutorialProxy.instance.CurrentTutorialChapterData, TutorialProxy.instance.CurrentTutorialStepData);
            Debugger.Log("=====[Turotial]::[OpenChapter]::[" + (TutorialProxy.instance.CurrentTutorialChapterData.isBackup ? "Backup:" : "Main:") + TutorialProxy.instance.CurrentTutorialChapterData.id + "]");
            TutorialProxy.instance.IsCurrentTurorialChapterOpened = true;
            Debugger.Log("===== CheckIfShouldOpenCurrentChapter =====");
            return(true);
        }