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); }
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); }
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); }