//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Friday, March 16, 2018 //-------------------------------------------------------- using UnityEngine; using System.Collections; using UnityEngine.UI; using System; using TableConfig; using System.Collections.Generic; //任务面板的支线任务 namespace Snxxz.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;//按钮文字 PlayerTaskDatas m_TaskModel; PlayerTaskDatas taskmodel { get { return m_TaskModel ?? (m_TaskModel = ModelCenter.Instance.GetModel()); } } ItemTipsModel _itemTipsModel; ItemTipsModel itemTipsModel { get { return _itemTipsModel ?? (_itemTipsModel = ModelCenter.Instance.GetModel()); } } private List rewardList = new List(); private int TaskIdNow = 0; private void Awake() { } private void Start() { _Btn_Forward.onClick.AddListener(ForwardButton); } private void OnEnable() { TaskIdNow = 0; _TaskRamusList.OnRefreshCell += OnRefreshGridCell; OnCreateGridLineCell(_TaskRamusList); } private void OnDisable() { _TaskRamusList.OnRefreshCell -= OnRefreshGridCell; } private void ForwardButton() { if ((int)taskmodel.GetTaskStatus(TaskIdNow) == 3) { taskmodel.CompletionOfTask(TaskIdNow); } else { _Text_TaskTarget.ExcuteHref(); } WindowCenter.Instance.CloseImmediately(); WindowCenter.Instance.Open(); } void OnCreateGridLineCell(ScrollerController gridCtrl)//任务预制体创建 { gridCtrl.Refresh(); foreach (var key in taskmodel.SideQuestsDic.Keys) { 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 (ConfigManager.Instance.GetTemplate(taskname) == null) { DebugEx.LogError("TASKINFO任务表格没有获取到该任务名称"+ taskname); return; } sideMissionTitleBtton.TitleName.text= ConfigManager.Instance.GetTemplate(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 = ConfigManager.Instance.GetTemplate(taskmodel.SideQuestsDic[taskID].Name).show_writing;//任务名 _Text_TaskDescribe.text = ConfigManager.Instance.GetTemplate(taskmodel.SideQuestsDic[taskID].Desclist).show_writing;//任务描述 string strINfor = taskmodel.SideQuestsDic[taskID].InforList; string str = ConfigManager.Instance.GetTemplate(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;//任务目标 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 = ConfigManager.Instance.GetTemplate(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.cellBtn.RemoveAllListeners(); int tab = i; itemcell.cellBtn.AddListener(() => { ItemAttrData attrData = new ItemAttrData(rewardList[tab].itemCfg.ID, true, (ulong)rewardList[tab].num); itemTipsModel.SetItemTipsModel(attrData); }); } } string TaskStatus(int _index)//获取支线任务状态 { _Btn_Forward.gameObject.SetActive(true); switch (_index) { case 0: _Btn_Forward.gameObject.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; } } }