少年修仙传客户端代码仓库
client_Wu Xijin
2018-08-13 eda22bcd9683f3a94e0744da60d23808272c627f
System/MainInterfacePanel/SideMission.cs
@@ -1,208 +1,222 @@
//--------------------------------------------------------
//    [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<PlayerTaskDatas>()); } }
        ItemTipsModel _itemTipsModel;
        ItemTipsModel itemTipsModel { get { return _itemTipsModel ?? (_itemTipsModel = ModelCenter.Instance.GetModel<ItemTipsModel>()); } }
        private List<RewardAnalysis.RewardInfo> rewardList = new List<RewardAnalysis.RewardInfo>();
        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<TaskWin>();
            WindowCenter.Instance.Open<MainInterfaceWin>();
        }
        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<SideMissionTitleBtton>();
            if (taskmodel.SideQuestsDic.ContainsKey(TaskId))
            {
                if (TaskId == TaskIdNow)
                {
                    sideMissionTitleBtton.PitchOnImage.SetActive(true);
                    Information(TaskId);
                }
                else
                {
                    sideMissionTitleBtton.PitchOnImage.SetActive(false);
                }
                sideMissionTitleBtton.TitleName.text= ConfigManager.Instance.GetTemplate<TASKINFOConfig>(taskmodel.SideQuestsDic[TaskId].Name).show_writing;//任务名
                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)
        {
            _Text_TaskName.text = ConfigManager.Instance.GetTemplate<TASKINFOConfig>(taskmodel.SideQuestsDic[taskID].Name).show_writing;//任务名
            _Text_TaskDescribe.text = ConfigManager.Instance.GetTemplate<TASKINFOConfig>(taskmodel.SideQuestsDic[taskID].Desclist).show_writing;//任务描述
            string strINfor = taskmodel.SideQuestsDic[taskID].InforList;
            string str = ConfigManager.Instance.GetTemplate<TASKINFOConfig>(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);
                    }
                }
                DesignDebug.Log("没有任务奖励");
                return;
            }
            string _RewardStr = ConfigManager.Instance.GetTemplate<TASKINFOConfig>(taskmodel.SideQuestsDic[taskID].RewardList).show_writing;
            RewardAnalysis.Inst.GetReward(_RewardStr, ref rewardList);
            RewardInformationDisplay(rewardList);
        }
        void RewardInformationDisplay(List<RewardAnalysis.RewardInfo> 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<ItemCell>();
                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;
        }
    }
}
//--------------------------------------------------------
//    [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<PlayerTaskDatas>()); } }
        ItemTipsModel _itemTipsModel;
        ItemTipsModel itemTipsModel { get { return _itemTipsModel ?? (_itemTipsModel = ModelCenter.Instance.GetModel<ItemTipsModel>()); } }
        private List<RewardAnalysis.RewardInfo> rewardList = new List<RewardAnalysis.RewardInfo>();
        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<TaskWin>();
            WindowCenter.Instance.Open<MainInterfaceWin>();
        }
        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<SideMissionTitleBtton>();
            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<TASKINFOConfig>(taskname) == null)
                {
                    DesignDebug.LogError("TASKINFO任务表格没有获取到该任务名称"+ taskname);
                    return;
                }
                sideMissionTitleBtton.TitleName.text= ConfigManager.Instance.GetTemplate<TASKINFOConfig>(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<TASKINFOConfig>(taskmodel.SideQuestsDic[taskID].Name).show_writing;//任务名
            _Text_TaskDescribe.text = ConfigManager.Instance.GetTemplate<TASKINFOConfig>(taskmodel.SideQuestsDic[taskID].Desclist).show_writing;//任务描述
            string strINfor = taskmodel.SideQuestsDic[taskID].InforList;
            string str = ConfigManager.Instance.GetTemplate<TASKINFOConfig>(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);
                    }
                }
                DesignDebug.Log("没有任务奖励");
                return;
            }
            string _RewardStr = ConfigManager.Instance.GetTemplate<TASKINFOConfig>(taskmodel.SideQuestsDic[taskID].RewardList).show_writing;
            RewardAnalysis.Inst.GetReward(_RewardStr, ref rewardList);
            RewardInformationDisplay(rewardList);
        }
        void RewardInformationDisplay(List<RewardAnalysis.RewardInfo> 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<ItemCell>();
                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;
        }
    }
}