/// <summary> /// 刷新npc任务状态表示 /// </summary> /// <param name="taskId"></param> private void OnUpdateNpcTaskStatus(uint taskId, Client.GameEventID eventID) { long uid = 0; string icon = ""; bool enable = false; switch (eventID) { case GameEventID.TASK_ACCEPT: case GameEventID.TASK_CANACCEPT: case GameEventID.TASK_DONING: case GameEventID.TASK_CANSUBMIT: { enable = RoleStateBarManager.TryGetQuestStatusIcon(taskId, out uid, out icon); if (eventID == GameEventID.TASK_ACCEPT) { table.QuestDataBase questDB = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(taskId); if (questDB != null && questDB.dwBeginNpc != questDB.dwEndNpc) { //交接任务不在同一个npc移除任务标示 Client.INPC npc = RoleStateBarManager.GetNPCByBaseID(questDB.dwBeginNpc); if (null != npc) { UpdateNpcTaskStatus(npc.GetUID(), false); } } } } break; case GameEventID.TASK_DELETE: case GameEventID.TASK_DONE: { table.QuestDataBase questDB = GameTableManager.Instance.GetTableItem <table.QuestDataBase>(taskId); if (questDB == null) { return; } Client.INPC npc = RoleStateBarManager.GetNPCByBaseID(questDB.dwEndNpc); if (null != npc) { uid = npc.GetUID(); } } break; } if (uid != 0) { UpdateNpcTaskStatus(uid, enable, icon); } }
private void UpdateNpcHeadMask(Client.INPC npc) { if (null != npc) { return; } RoleStateBar bar = GetRoleBarByUID(npc.GetUID()); bool enable = IsEntityHaveHeadIconMask(npc) && !NpcHeadTipsManager.Instance.IsHaveTips(npc); bar.SetWidgetState(HeadTipType.HeadMaskIcon, enable); if (enable) { bar.UpdateWidget(new HeadTipData(npc, HeadTipType.HeadMaskIcon, m_bHpSliderVisible)); } }
public static bool TryGetQuestStatusIcon(QuestTraceInfo info, out long uid, out string icon) { icon = string.Empty; uid = 0; if (null == info) { return(false); } GameCmd.TaskProcess process = info.GetTaskProcess(); uint npcid = 0; icon = GetQuestStatusIcon(process); if (process == GameCmd.TaskProcess.TaskProcess_CanDone) { npcid = info.endNpc; } else if (process == GameCmd.TaskProcess.TaskProcess_None)//可接 { npcid = info.beginNpc; } else if (process == GameCmd.TaskProcess.TaskProcess_Doing) { npcid = info.endNpc; } Client.INPC npc = GetNPCByBaseID(npcid); if (npc == null) { Engine.Utility.Log.Info("查找不到npc{0}", npcid); return(false); } uid = npc.GetUID(); return(true); }