示例#1
0
    /// <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();
        }
    }
示例#2
0
    public NpcMissState GetNpcMissState(int npcId)
    {
        _DBC_MISSION_DEMAND_LIST currMiss;
        NpcMissState             state = GetNpcMissState(npcId, out currMiss);

        return(state);
    }
示例#3
0
    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);
    }
示例#4
0
    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);
        }
    }