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); } }
/// <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); } }