示例#1
0
    /// <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);
        }
    }
示例#2
0
    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));
        }
    }
示例#3
0
    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);
    }