/// <summary> /// 显示NPC的任务信息 /// </summary> /// <param name="currMissState"></param> internal void ShowMissState(NpcMissState currMissState) { HideAllState(); if (currMissState != NpcMissState.None) { switch (currMissState) { case NpcMissState.AcceptNormal: currentMissTagWin = acceptWin; break; case NpcMissState.FinishNormal: currentMissTagWin = finishWin; break; case NpcMissState.ContinueNormal: currentMissTagWin = continueWin; break; default: break; } //currentMissTagWin.SetActiveRecursively(true); ShowCurrentState(); } }
public NpcMissState GetNpcMissState(int npcId) { _DBC_MISSION_DEMAND_LIST currMiss; NpcMissState state = GetNpcMissState(npcId, out currMiss); return(state); }
public NpcMissState GetNpcMissState(int npcId, out _DBC_MISSION_DEMAND_LIST currMiss) { currMiss = null; if (npcId == MacroDefine.INVALID_ID) { return(NpcMissState.None); } CDetailAttrib_Player myData = CDetailAttrib_Player.Instance; NpcMissState state = NpcMissState.None; foreach (_DBC_MISSION_DEMAND_LIST miss in sceneMissions) { bool alreadyHave = myData.GetMissionIndexByID(miss.n_MissionID) != MacroDefine.INVALID_ID; if (miss.n_AcceptNpcID == npcId && state == NpcMissState.None && !alreadyHave) { state = NpcMissState.AcceptNormal; currMiss = miss; } else if (miss.n_FinishNpcID == npcId) { if (myData.IsMissionCanCommit(miss.n_MissionID)) { state = NpcMissState.FinishNormal; currMiss = miss; break; } else if (alreadyHave) { state = NpcMissState.ContinueNormal; currMiss = miss; } } } return(state); }
void UpdateMission() { List <int> npcIds = new List <int>(); foreach (_DBC_MISSION_DEMAND_LIST miss in MissionList.Instance.SceneMissions) { if (!npcIds.Contains(miss.n_AcceptNpcID)) { npcIds.Add(miss.n_AcceptNpcID); } if (!npcIds.Contains(miss.n_FinishNpcID)) { npcIds.Add(miss.n_FinishNpcID); } } int currentScene = GameProcedure.s_pWorldManager.GetActiveSceneID(); foreach (int id in npcIds) { _DBC_MISSION_DEMAND_LIST currMiss; NpcMissState state = MissionList.Instance.GetNpcMissState(id, out currMiss); if (state == NpcMissState.None || currMiss == null) { continue; } if ((state == NpcMissState.AcceptNormal && currMiss.n_AcceptSceneId != currentScene) || ((state == NpcMissState.ContinueNormal || state == NpcMissState.FinishNormal) && currMiss.n_FinishSceneId != currentScene)) { continue; } _MISSION_INFO info = MissionStruct.Instance.ParseMissionInfo(currMiss.n_MissionID, currMiss.n_ScriptID); MAP_POS_DEFINE item = new MAP_POS_DEFINE(); item.nServerID = currMiss.n_MissionID + (int)state * 100; string iconName = ""; string tip = ""; if (state == NpcMissState.AcceptNormal) { iconName = missAcceptIconName; tip = "可接任务:" + info.m_misName; item.pos = new Vector2(currMiss.n_AcceptPosX, currMiss.n_AcceptPosZ); } else if (state == NpcMissState.ContinueNormal) { iconName = missContinueIconName; tip = "已接任务:" + info.m_misName; item.pos = new Vector2(currMiss.n_FinishPosX, currMiss.n_FinishPosZ); } else if (state == NpcMissState.FinishNormal) { iconName = missFinishIconName; tip = "可交任务:" + info.m_misName; item.pos = new Vector2(currMiss.n_FinishPosX, currMiss.n_FinishPosZ); } bool alreadyExist; UIButton newWin = AddNewWin(item, iconName, out alreadyExist); if (newWin == null || alreadyExist) { continue; } newWin.data = UIString.Instance.ParserString_Runtime(tip); } }