//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Friday, March 16, 2018
|
//--------------------------------------------------------
|
using UnityEngine;
|
using System.Collections;
|
using UnityEngine.UI;
|
using System;
|
|
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;//按钮文字
|
[SerializeField] Button m_FinishAtOnce;//立即完成
|
TaskModel m_TaskModel;
|
TaskModel taskmodel { get { return m_TaskModel ?? (m_TaskModel = ModelCenter.Instance.GetModel<TaskModel>()); } }
|
PackModel _playerPack;
|
PackModel playerPack { get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel<PackModel>()); } }
|
PlayerMainDate m_MainModel;
|
PlayerMainDate mainModel { get { return m_MainModel ?? (m_MainModel = ModelCenter.Instance.GetModel<PlayerMainDate>()); } }
|
private List<RewardAnalysis.RewardInfo> rewardList = new List<RewardAnalysis.RewardInfo>();
|
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<TaskWin>();
|
WindowCenter.Instance.Open<MainInterfaceWin>();
|
}
|
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<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 (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<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.button.RemoveAllListeners();
|
int tab = i;
|
itemcell.button.AddListener(() =>
|
{
|
ItemTipUtility.Show(rewardList[tab].itemCfg.ID);
|
});
|
}
|
}
|
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;
|
}
|
|
private void SkillTask(int TsakID)
|
{
|
if (!taskmodel.allMissionDict.ContainsKey(TsakID) || !mainModel.TaskId_Skill.Contains(TsakID))
|
{
|
m_FinishAtOnce.gameObject.SetActive(false);
|
return;
|
}
|
m_FinishAtOnce.gameObject.SetActive(true);
|
}
|
}
|
}
|
|
|
|