//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Friday, March 16, 2018 //-------------------------------------------------------- using UnityEngine; using System.Collections; using UnityEngine.UI; using System; using System.Collections.Generic; //任务面板的支线任务 namespace vnxbqy.UI { public class SideMission : MonoBehaviour { [SerializeField] ScrollerController _TaskRamusList; //右侧面板 [SerializeField] Text _Text_TaskName;//任务名 [SerializeField] RichText _Text_TaskDescribe;//任务描述 [SerializeField] RichText _Text_TaskTarget;//任务目标 [SerializeField] Transform _Grid;//任务奖励生成的节点 [SerializeField] Button _Btn_Forward;//支线前往按钮 [SerializeField] Text _Text_Forward;//按钮文字 [SerializeField] Button m_FinishAtOnce;//立即完成 TaskModel m_TaskModel; TaskModel taskmodel { get { return m_TaskModel ?? (m_TaskModel = ModelCenter.Instance.GetModel()); } } PackModel _playerPack; PackModel playerPack { get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel()); } } PlayerMainDate m_MainModel; PlayerMainDate mainModel { get { return m_MainModel ?? (m_MainModel = ModelCenter.Instance.GetModel()); } } private List rewardList = new List(); private int TaskIdNow = 0; private void Awake() { } private void Start() { _Btn_Forward.onClick.AddListener(ForwardButton); m_FinishAtOnce.AddListener(OnClickSkillTask); } private void OnEnable() { TaskIdNow = 0; _TaskRamusList.OnRefreshCell += OnRefreshGridCell; PlayerDatas.Instance.playerDataRefreshEvent += Updatefighting;//数据的刷新(h0418) OnCreateGridLineCell(_TaskRamusList); } private void OnDisable() { _TaskRamusList.OnRefreshCell -= OnRefreshGridCell; PlayerDatas.Instance.playerDataRefreshEvent -= Updatefighting;//数据的刷新(h0418) } private void Updatefighting(PlayerDataType obj) { } private void OnClickSkillTask() { TaskAllocation.Instance.SkillTask(TaskIdNow); } private void ForwardButton() { if (CrossServerUtility.IsCrossServerBoss()) { SysNotifyMgr.Instance.ShowTip("CrossMap10"); return; } if ((int)taskmodel.GetTaskStatus(TaskIdNow) == 3) { taskmodel.CompletionOfTask(TaskIdNow); if (mainModel.TaskId_Skill.Contains(TaskIdNow)) { WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.SkillFunc2); } } else { _Text_TaskTarget.ExcuteHref(); } WindowCenter.Instance.Close(); WindowCenter.Instance.Open(); } void OnCreateGridLineCell(ScrollerController gridCtrl)//任务预制体创建 { gridCtrl.Refresh(); foreach (var key in taskmodel.SideQuestsDic.Keys) { if (taskmodel.SideQuestsDic[key].MissionState != 0) { if (TaskIdNow == 0) { TaskIdNow = key; } gridCtrl.AddCell(ScrollerDataType.Header, key); } } gridCtrl.Restart(); } private void OnRefreshGridCell(ScrollerDataType type, CellView cell) { int TaskId = cell.index; SideMissionTitleBtton sideMissionTitleBtton = cell.GetComponent(); if (taskmodel.SideQuestsDic.ContainsKey(TaskId)) { if (TaskId == TaskIdNow) { sideMissionTitleBtton.PitchOnImage.SetActive(true); Information(TaskId); } else { sideMissionTitleBtton.PitchOnImage.SetActive(false); } var taskname = taskmodel.SideQuestsDic[TaskId].Name; if (TASKINFOConfig.Get(taskname) == null) { DebugEx.LogError("TASKINFO任务表格没有获取到该任务名称" + taskname); return; } sideMissionTitleBtton.TitleName.text = TASKINFOConfig.Get(taskname).show_writing;//任务名 if (!taskmodel.SideQuestsDic.ContainsKey(TaskId)) { return; } sideMissionTitleBtton.Text_RamusState.text = GegionalTaskStatus(taskmodel.SideQuestsDic[TaskId].MissionState); sideMissionTitleBtton.SideMissionTitleBtton1.RemoveAllListeners(); sideMissionTitleBtton.SideMissionTitleBtton1.AddListener(() => { if (TaskId != TaskIdNow) { TaskIdNow = TaskId; _TaskRamusList.m_Scorller.RefreshActiveCellViews();//刷新当前可见 } }); } } void Information(int taskID) { if (!taskmodel.SideQuestsDic.ContainsKey(taskID)) { return; } _Text_TaskName.text = TASKINFOConfig.Get(taskmodel.SideQuestsDic[taskID].Name).show_writing;//任务名 _Text_TaskDescribe.text = TASKINFOConfig.Get(taskmodel.SideQuestsDic[taskID].Desclist).show_writing;//任务描述 string strINfor = taskmodel.SideQuestsDic[taskID].InforList; string str = string.Empty; str = TASKINFOConfig.Get(strINfor).show_writing; str = WordAnalysis.Color_Start_Regex.Replace(str, string.Empty); str = WordAnalysis.Color_End_Regex.Replace(str, string.Empty); _Text_TaskTarget.text = str;//任务目标 SkillTask(taskID); if ((int)taskmodel.GetTaskStatus(TaskIdNow) == 3)//能够进行立即完成的支线任务 { _Text_Forward.text = string.Format(Language.Get("FinishAtOnce_Z")); } else { _Text_Forward.text = TaskStatus(taskmodel.SideQuestsDic[taskID].MissionState); } if (taskmodel._DicTaskInformation.ContainsKey(taskID)) { _Text_TaskTarget.SetReplaceInfo(taskmodel._DicTaskInformation[taskID]); } if (taskmodel.SideQuestsDic[taskID].RewardList == null) { if (_Grid.childCount != 0) { for (int i = 0; i < _Grid.childCount; i++) { DestroyObject(_Grid.GetChild(i).gameObject); } } DebugEx.Log("没有任务奖励"); return; } string _RewardStr = TASKINFOConfig.Get(taskmodel.SideQuestsDic[taskID].RewardList).show_writing; RewardAnalysis.Inst.GetReward(_RewardStr, ref rewardList); RewardInformationDisplay(rewardList); } void RewardInformationDisplay(List rewardList)//奖励信息 { if (_Grid.childCount != 0) { for (int i = 0; i < _Grid.childCount; i++) { DestroyObject(_Grid.GetChild(i).gameObject); } } if (rewardList.Count == 0) return; for (int i = 0; i < rewardList.Count; i++) { GameObject go = GameObject.Instantiate(UILoader.LoadPrefab("ItemCell")); ItemCell itemcell = go.GetComponent(); go.transform.SetParent(_Grid); go.transform.localScale = Vector3.one; Vector3 pos = go.transform.localPosition; go.transform.localPosition = pos.SetZ(0); ItemCellModel cellModel = new ItemCellModel(rewardList[i].itemCfg.ID, true, (ulong)rewardList[i].num); itemcell.Init(cellModel); itemcell.button.RemoveAllListeners(); int tab = i; itemcell.button.AddListener(() => { ItemTipUtility.Show(rewardList[tab].itemCfg.ID); }); } } string TaskStatus(int _index)//获取支线任务状态 { _Btn_Forward.SetActive(true); switch (_index) { case 0: _Btn_Forward.SetActive(false); return Language.Get("Z1075"); case 1: return Language.Get("Z1074"); case 2: return Language.Get("Z1076"); } return string.Empty; } string GegionalTaskStatus(int _index)//任务状态 { switch (_index) { case 0: return Language.Get("Z1072"); case 1: return Language.Get("Z1071"); case 2: return Language.Get("Z1073"); } return string.Empty; } private void SkillTask(int TsakID) { if (!taskmodel.allMissionDict.ContainsKey(TsakID) || !mainModel.TaskId_Skill.Contains(TsakID)) { m_FinishAtOnce.SetActive(false); return; } m_FinishAtOnce.SetActive(true); } } }