Beispiel #1
0
    private void UpdateTarget()
    {
        int index = 0;

        foreach (KeyValuePair <uint, SortedDictionary <uint, MissionTargetVO> > group in m_MissionVO.MissionGroupTargetList)
        {
            RectTransform row = (index + 2) < m_TargetParentRect.childCount
                                ? m_TargetParentRect.GetChild(index + 2).GetComponent <RectTransform>()
                                : UnityEngine.Object.Instantiate(m_TemplateRect, m_TargetParentRect);

            if (index != 0)
            {
                row.gameObject.SetActive(m_MissionVO.MissionState != MissionState.Finished);
                UpdateMissionRow("", "", row, true, false);
                index++;
                row = (index + 2) < m_TargetParentRect.childCount
                                                                        ? m_TargetParentRect.GetChild(index + 2).GetComponent <RectTransform>()
                                                                        : UnityEngine.Object.Instantiate(m_TemplateRect, m_TargetParentRect);
            }
            bool frist = true;
            foreach (KeyValuePair <uint, MissionTargetVO> target in group.Value)
            {
                if (!target.Value.DoneToFinish)
                {
                    continue;
                }
                row = (index + 2) < m_TargetParentRect.childCount
                                        ? m_TargetParentRect.GetChild(index + 2).GetComponent <RectTransform>()
                                        : UnityEngine.Object.Instantiate(m_TemplateRect, m_TargetParentRect);
                string str = string.Empty;
                if (target.Value.DoneToFinish)                //正常条件
                {
                    switch (target.Value.MissionTargetType)
                    {
                    case MissionTargetType.Kill:
                    case MissionTargetType.CollectItem:
                    case MissionTargetType.HaveItem:
                        str = $"[{target.Value.Value}/{target.Value.MissionTargetConfig.Arg2}]";
                        break;

                    case MissionTargetType.Escort:
                    default:
                        str = target.Value.TargetState == MissionState.Finished ? "[1/1]" : "[0/1]";
                        break;
                    }
                }

                row.gameObject.SetActive(true);
                UpdateMissionRow(TableUtil.GetMissionTargetDesc(target.Value.Tid), str, row, false, frist && m_MissionVO.MissionState == MissionState.CanAccept);
                index++;
                frist = false;
            }
        }

        for (int i = index + 2; i < m_TargetParentRect.childCount; i++)
        {
            m_TargetParentRect.GetChild(i).gameObject.SetActive(false);
        }
    }
Beispiel #2
0
    /// <summary>
    /// 更新任务列表
    /// </summary>
    private void UpdateMissionList(MissionVO mission, RectTransform view)
    {
        TMP_Text      rowTitle    = view.Find("TitleLine/Label_Name").GetComponent <TMP_Text>();
        RectTransform rowBox      = view.Find("Content").GetComponent <RectTransform>();
        RectTransform rowFinish   = view.Find("Label_Finish").GetComponent <RectTransform>();
        RectTransform rowTemplate = rowBox.GetChild(0).GetComponent <RectTransform>();

        rowTitle.text = TableUtil.GetLanguageString("mission_name_" + mission.Tid);
        rowBox.gameObject.SetActive(mission.MissionState != MissionState.Finished);
        rowFinish.gameObject.SetActive(mission.MissionState == MissionState.Finished);

        CfgEternityProxy cfgEternityProxy = GameFacade.Instance.RetrieveProxy(ProxyName.CfgEternityProxy) as CfgEternityProxy;

        bool finised = true;
        int  index   = 0;

        if (mission.MissionState == MissionState.CanAccept)
        {
            string str = string.Empty;
            if (GetRoleLevel() < mission.MissionConfig.LvLimit)
            {
                str = string.Format(TableUtil.GetLanguageString("mission_title_1011"), mission.MissionConfig.LvLimit);
            }
            else if (mission.MissionMainConfig.Value.AcceptNpcId > 0)
            {
                str = TableUtil.GetNpcName((uint)mission.MissionMainConfig.Value.AcceptNpcId);
                str = string.Format(TableUtil.GetLanguageString("mission_title_1012"), str);
            }
            RectTransform row = index < rowBox.childCount ? rowBox.GetChild(index).GetComponent <RectTransform>() : Object.Instantiate(rowTemplate, rowBox);
            row.gameObject.SetActive(true);
            UpdateMissionRow(str, string.Empty, row, true, false, false);
            finised = false;
            index++;
        }
        else
        {
            foreach (KeyValuePair <uint, SortedDictionary <uint, MissionTargetVO> > group in mission.MissionGroupTargetList)
            {
                RectTransform row = index < rowBox.childCount ? rowBox.GetChild(index).GetComponent <RectTransform>() : Object.Instantiate(rowTemplate, rowBox);
                if (index != 0 && !finised)
                {
                    row.gameObject.SetActive(true);
                    UpdateMissionRow(string.Empty, string.Empty, row, false, true, false);
                    index++;
                    row = index < rowBox.childCount ? rowBox.GetChild(index).GetComponent <RectTransform>() : Object.Instantiate(rowTemplate, rowBox);
                }
                bool frist = true;
                foreach (KeyValuePair <uint, MissionTargetVO> target in group.Value)
                {
                    if (!target.Value.DoneToFinish)
                    {
                        continue;
                    }
                    row = index < rowBox.childCount ? rowBox.GetChild(index).GetComponent <RectTransform>() : Object.Instantiate(rowTemplate, rowBox);
                    string str = string.Empty;
                    if (target.Value.DoneToFinish)                    //正常条件
                    {
                        switch (target.Value.MissionTargetType)
                        {
                        case MissionTargetType.Kill:
                        case MissionTargetType.CollectItem:
                        case MissionTargetType.HaveItem:
                            str = $"[{target.Value.Value}/{target.Value.MissionTargetConfig.Arg2}]";
                            break;

                        case MissionTargetType.Escort:
                        default:
                            str = target.Value.TargetState == MissionState.Finished ? "[1/1]" : "[0/1]";
                            break;
                        }
                        if (target.Value.TargetState == MissionState.Failed)
                        {
                            str = TableUtil.GetLanguageString("mission_title_1013");
                        }
                    }

                    row.gameObject.SetActive(true);
                    row.name = target.Value.Tid + "  " + TableUtil.GetMissionTargetDesc(target.Value.Tid);
                    if (target.Value.MissionTargetConfig.Arg4 > 0 && target.Value.Relation != null)
                    {
                        if (target.Value.Relation.MissionTargetType == MissionTargetType.TimeOut)
                        {
                            UpdateMissionRow(TableUtil.GetMissionTargetDesc(target.Value.Tid), str, row, false, false, frist, target.Value.TargetState, (ulong)target.Value.Relation.Value);
                        }
                    }
                    else
                    {
                        UpdateMissionRow(TableUtil.GetMissionTargetDesc(target.Value.Tid), str, row, false, false, frist, target.Value.TargetState);
                    }
                    finised = target.Value.TargetState == MissionState.Finished;
                    index++;
                    frist = false;
                }
            }
        }

        for (int i = index; i < rowBox.childCount; i++)
        {
            rowBox.GetChild(i).gameObject.SetActive(false);
        }
    }