public bool CanProcess( QuestTutorialMsgInfo _msgInfo) { List<int> listQuestID = new List<int>(); bool bCheckQuestID = false; foreach ( TutorialConditionBase condition in listCondition) { if( condition.type != TutorialConditionType.QUEST_ID) continue; TutorialConditionUseInt conQuestID = condition as TutorialConditionUseInt; listQuestID.Add( conQuestID.value); if( conQuestID.value < 0) { if( !ArkQuestmanager.instance.IsProgressQuest( conQuestID.value * -1) && !ArkQuestmanager.instance.IsCompleteQuest( conQuestID.value * -1) && !ArkQuestmanager.instance.IsClearQuest( conQuestID.value * -1)) { bCheckQuestID = true; break; } } else { if( ArkQuestmanager.instance.IsProgressQuest( conQuestID.value) == true) { bCheckQuestID = true; break; } } } if( bCheckQuestID == false) return false; // not complete achivement if( CheckCompleteAchievement() == false) return false; if( CheckActionAchievementCount() == false) return false; foreach ( TutorialConditionBase condition in listCondition) { if( condition.type == TutorialConditionType.QUEST_ID) continue; if( condition.CanProgress( _msgInfo) == false) return false; } return true; }
public TutorialStepInfo ProcessMessage( QuestTutorialMsgInfo _msgInfo) { // 시작 메시지를 찾는다 if( listStartStepMsg.Count > 0) { if( _msgInfo.message == listStartStepMsg[0].msg) { nowStep = listStep[0]; nowStepIdx = 0; return nowStep; } } // check next msg int count = 0; foreach ( TutorialStepInfo step in listStep) { if( _msgInfo.message == step.nextMsg) { if( _msgInfo.message == QuestTutorialMsg.TAP_INVEN_ITEM) { if( !listTapInvenItemID.Contains( _msgInfo.value)) return null; } else if( _msgInfo.message == QuestTutorialMsg.USE_ITEM) { if( !listUseItemID.Contains( _msgInfo.value)) return null; } else if( _msgInfo.message == QuestTutorialMsg.TAP_DESIGNATION) { if( !( listSelectDesgination.Contains( _msgInfo.value))) return null; } nowStep = listStep[count + 1]; nowStepIdx = count + 1; return nowStep; } count++; } return null; }
virtual public bool CanProgress( QuestTutorialMsgInfo _msgInfo) { return true; }
public override bool CanProgress( QuestTutorialMsgInfo _msgInfo) { if( type == TutorialConditionType.QUEST_ID) { if( value <= 0) { int realValue = value * -1; return !ArkQuestmanager.instance.IsProgressQuest( realValue) && !ArkQuestmanager.instance.IsCompleteQuest( realValue); } else return ArkQuestmanager.instance.IsProgressQuest( value); } else if( type == TutorialConditionType.SKILL_NOT_HAVE) { return !SkillBook.Instance.ContainSkillTableID( value); } else if( type == TutorialConditionType.NPC) { if( _msgInfo.message == QuestTutorialMsg.ACCEPT_QUEST) return true; if( AsHUDController.Instance.targetInfo != null) { if( AsHUDController.Instance.targetInfo.getCurTargetEntity != null) { if( AsHUDController.Instance.targetInfo.getCurTargetEntity.FsmType == eFsmType.NPC) { int npcId = AsHUDController.Instance.targetInfo.getCurTargetEntity.GetProperty<int>( eComponentProperty.NPC_ID); if( npcId == value) return true; } } } return false; } return true; }
public void ProcessQuestTutorialMsg( QuestTutorialMsgInfo _msgInfo) { // accept quest if( _msgInfo.message == QuestTutorialMsg.ACCEPT_QUEST) { foreach ( QuestTutorial tutorial in listTutorial) { if( tutorial.CanProcess( _msgInfo) == true) { nowSelectTutorial = tutorial; TutorialStepInfo stepInfo = nowSelectTutorial.ForcedStartStepZero(); if( stepInfo != null) { nowStep = stepInfo; ShowFinger( stepInfo); return; } } } } if( nowSelectTutorial == null) return; // clear Quest if( _msgInfo.message == QuestTutorialMsg.CLEAR_QUEST || _msgInfo.message == QuestTutorialMsg.DROP_QUEST) { nowStep = null; if( _msgInfo.message == QuestTutorialMsg.DROP_QUEST) { if( nowSelectTutorial.notProcessMsg == true) nowSelectTutorial.notProcessMsg = false; } nowSelectTutorial = null; HideFinger(); } else if( nowSelectTutorial != null) { // close Msg if( nowSelectTutorial.listCloseMsg.Contains( _msgInfo.message)) { Debug.LogWarning( "Close accept this msg = "+_msgInfo.message); nowStep = null; HideFinger(); // check restart step if( nowSelectTutorial.listStartStepMsg.Count == 0 && nowSelectTutorial.notRestartAfterClose == false) { TutorialStepInfo stepInfo = nowSelectTutorial.ForcedProgressStep( 0); if( stepInfo != null) { nowStep = stepInfo; ShowFinger( stepInfo); } } } else if( nowSelectTutorial.listUpdateMsg.Contains( _msgInfo.message)) { nowStep = nowSelectTutorial.ProcessUpdateMessage(); if( nowStep != null) ShowFinger( nowStep); } else { if( nowSelectTutorial.CanProcess( _msgInfo) == false) return; TutorialStepInfo step = nowSelectTutorial.ProcessMessage( _msgInfo); if( step == null) return; if( step.type == TutorialStepType.HIDE || step.type == TutorialStepType.LAST_HIDE) { nowStep = step; HideFinger(); if( step.type == TutorialStepType.LAST_HIDE) nowSelectTutorial.notProcessMsg = true; } else { // check not process ----> last hide if( nowSelectTutorial.notProcessMsg == false) { nowStep = step; if( nowStep.type == TutorialStepType.OVER_INVEN_ITEM) SetInvenPageExistThisItem( nowStep.listOption[0]); ShowFinger( step); } } } } }