//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Monday, November 06, 2017
|
//--------------------------------------------------------
|
//仙盟任务
|
using Snxxz.UI;
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using System.Text;
|
using TableConfig;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace Snxxz.UI
|
{
|
|
public class FairyAuTaskWin : Window
|
{
|
[SerializeField] Image m_ReceiveImage;//奖励按钮
|
[SerializeField] Button Btn_Receive;//奖励领取
|
[SerializeField] Button Btn_Finish;//立即完成按钮
|
[SerializeField] Button Btn_Pass;//放弃任务按钮
|
[SerializeField] Button Btn_Leave;//立即前往按钮
|
[SerializeField] Button CloseBtn;//关闭按钮
|
[SerializeField] Text RewardsText;//奖励
|
[SerializeField] Text Text_FinishRound;//本周完成数
|
[SerializeField] RichText ObjectiveText;//任务目标
|
[SerializeField] Text RoundText;//任务环数
|
[SerializeField] Transform _Grid;
|
|
[SerializeField] Text _ReceiveImageText;
|
[Header("等待时间(秒)")]
|
public int Second = 20;
|
private float timeType = 0f;
|
|
private int TaskID;//获取任务ID
|
private int _requireNumber = 0;//立即完成所需的仙玉数量
|
private List<RewardAnalysis.RewardInfo> rewardList = new List<RewardAnalysis.RewardInfo>();
|
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>()); } }
|
|
PlayerMainDate m_MainModel;
|
PlayerMainDate mainModel { get { return m_MainModel ?? (m_MainModel = ModelCenter.Instance.GetModel<PlayerMainDate>()); } }
|
PlayerDeadModel _deadModel;
|
PlayerDeadModel DeadModel { get { return _deadModel ?? (_deadModel = ModelCenter.Instance.GetModel<PlayerDeadModel>()); } }
|
CoinTaskTipModel m_CoinTaskTip;
|
CoinTaskTipModel coinTaskTip { get { return m_CoinTaskTip ?? (m_CoinTaskTip = ModelCenter.Instance.GetModel<CoinTaskTipModel>()); } }
|
VipModel m_Vipmodel;
|
VipModel vipmodel { get { return m_Vipmodel ?? (m_Vipmodel = ModelCenter.Instance.GetModel<VipModel>()); } }
|
public int Length = 7;//所需长度
|
public int Finalvalue = 0;//最终值
|
int Default = 0;
|
int Value = -1;
|
#region Built-in
|
protected override void BindController()
|
{
|
string _requireNumberStr = Config.Instance.Get<FuncConfigConfig>("TaskExpend").Numerical1;
|
_requireNumber = int.Parse(_requireNumberStr);
|
}
|
|
protected override void AddListeners()
|
{
|
Btn_Receive.AddListener(ReceiveButton);
|
Btn_Finish.AddListener(FinishButton);
|
Btn_Pass.AddListener(PassButton);
|
Btn_Leave.AddListener(LeaveButton);
|
CloseBtn.AddListener(CloseButton);
|
}
|
|
protected override void OnPreOpen()
|
{
|
timeType = 0;
|
DeadModel.playerDieEvent += OnPlayerDie;
|
Btn_Pass.gameObject.SetActive(false);//仙盟任务放弃任务按钮暂时隐藏
|
PlayerTaskDatas.Event_FairyAuTask += FairyAuRefresh;
|
PlayerTaskDatas.Event_FairyAuReward += FairyAuGrades;
|
RewardFor();
|
RewardsToOpen();
|
ContentAssignment();
|
int GetCylinderNumber = TaskAllocation.Instance.FairyAuNumber();//获取仙盟总环数
|
if (coinTaskTip.IsFairy && GetCylinderNumber == 10)
|
{
|
_ReceiveImageText.text = string.Format(Language.Get("TaskContinueCount_1"), Second);
|
}
|
else
|
{
|
_ReceiveImageText.text = Language.Get("TaskBoxWin_BtnGetReward_Text_1");
|
}
|
|
}
|
void RewardFor()//奖励默认金
|
{
|
if (taskmodel.OnFairyAuNumber != 0)
|
{
|
theTarget.Length = 0;
|
theTarget.Append('0', 7 - taskmodel.OnFairyAuNumber.ToString().Length);
|
theTarget.Append(taskmodel.OnFairyAuNumber);
|
RewardsText.text = theTarget.ToString();
|
}
|
else
|
{
|
RewardsText.text = "0000000";
|
}
|
}
|
protected override void OnAfterOpen()
|
{
|
}
|
|
protected override void OnPreClose()
|
{
|
if (coinTaskTip.IsFairy)
|
{
|
coinTaskTip.IsFairy = false;
|
}
|
}
|
|
protected override void OnAfterClose()
|
{
|
DeadModel.playerDieEvent -= OnPlayerDie;
|
PlayerTaskDatas.Event_FairyAuTask -= FairyAuRefresh;
|
PlayerTaskDatas.Event_FairyAuReward -= FairyAuGrades;
|
taskmodel.FairyAuBool = false;
|
if (!WindowJumpMgr.Instance.IsJumpState)
|
{
|
WindowCenter.Instance.Open<MainInterfaceWin>();
|
}
|
}
|
|
private void OnPlayerDie()
|
{
|
CloseImmediately();
|
if (!WindowCenter.Instance.CheckOpen<MainInterfaceWin>())
|
{
|
|
WindowCenter.Instance.Open<MainInterfaceWin>();
|
}
|
}
|
#endregion
|
void ReceiveButton()//领取奖励
|
{
|
CA221_tagCMGetRunTaskEndAward _CA221 = new CA221_tagCMGetRunTaskEndAward();
|
_CA221.Type = 12;
|
GameNetSystem.Instance.SendInfo(_CA221);
|
timeType = 0;
|
if (coinTaskTip.IsFairy)
|
{
|
coinTaskTip.IsFairy = false;
|
_ReceiveImageText.text = Language.Get("TaskBoxWin_BtnGetReward_Text_1");
|
}
|
}
|
void FinishButton()//立即完成按钮
|
{
|
if (mainModel.IsBoolFairyAuTask)
|
{
|
AccomplishTask();
|
}
|
else
|
{
|
ConfirmCancel.ToggleConfirmCancel(Language.Get("FairyAu_Task"), Language.Get("Accomplish_Task"), Language.Get("ConfirmCancel101"), (bool isOk, bool IsToggle) =>
|
{
|
if (isOk)
|
|
{
|
AccomplishTask();
|
|
}
|
if (IsToggle)
|
{
|
mainModel.IsBoolFairyAuTask = true;
|
|
}
|
|
});
|
}
|
}
|
|
private void AccomplishTask()
|
{
|
|
if ((int)UIHelper.GetMoneyCnt(1) >= _requireNumber || (int)UIHelper.GetMoneyCnt(2) >= _requireNumber)
|
{
|
taskmodel.CompletionOfTask(TaskID);
|
taskmodel.FairyAuBool = true;
|
}
|
else
|
{
|
if (VersionConfig.Get().isBanShu)
|
{
|
SysNotifyMgr.Instance.ShowTip("GoldErr");
|
return;
|
}
|
WindowCenter.Instance.Open<RechargeTipWin>();
|
}
|
|
}
|
void PassButton()//放弃任务
|
{
|
if (mainModel.IsBoolFairyAuTaskAbandon)
|
{
|
AbortMission();
|
}
|
else
|
{
|
ConfirmCancel.ToggleConfirmCancel(Language.Get("FairyAu_Task"), Language.Get("UnionTaskPass"), Language.Get("ConfirmCancel101"), (bool isOk, bool IsToggle) =>
|
{
|
if (isOk)
|
{
|
AbortMission();
|
}
|
if (IsToggle)
|
{
|
mainModel.IsBoolFairyAuTaskAbandon = true;
|
|
}
|
});
|
}
|
}
|
void LeaveButton()//立即前往
|
{
|
WindowCenter.Instance.CloseImmediately<UnionPanel>();
|
WindowCenter.Instance.CloseImmediately<FairyAuTaskWin>();
|
WindowCenter.Instance.Open<MainInterfaceWin>();
|
ObjectiveText.ExcuteHref();
|
}
|
|
void CloseButton()//关闭按钮
|
{
|
WindowCenter.Instance.CloseImmediately<FairyAuTaskWin>();
|
}
|
void CompleteTaskDeletion()//删除完成的任务
|
{
|
List<int> _ListArray = new List<int>();
|
foreach (int key in taskmodel.FairyAuDic.Keys)
|
{
|
if (taskmodel.FairyAuDic[key].MissionState == 3 || taskmodel.FairyAuDic[key].MissionState == 0)
|
_ListArray.Add(key);
|
|
}
|
for (int i = 0; i < _ListArray.Count; i++)
|
{
|
taskmodel.FairyAuDic.Remove(_ListArray[i]);
|
}
|
}
|
|
void RewardsToOpen()
|
{
|
|
if (TaskAllocation.Instance.FairyAuNumber() == 10)
|
{
|
m_ReceiveImage.SetSprite("ReceiveBG_a");
|
Btn_Receive.gameObject.SetActive(true);
|
|
}
|
else
|
{
|
m_ReceiveImage.SetSprite("UnReceiveBG");
|
Btn_Receive.gameObject.SetActive(false);
|
|
}
|
}
|
|
void ContentAssignment()//内容赋值
|
{
|
CompleteTaskDeletion();
|
if (taskmodel.SpecialTask.Count != 0)
|
{
|
foreach (int key in taskmodel.SpecialTask.Keys)
|
{
|
if (taskmodel.SpecialTask[key].Type == 14 && taskmodel.SpecialTask[key].MissionState != 3)//未接取
|
{
|
TaskID = key;
|
TheDefaultTask(TaskID);
|
return;
|
}
|
}
|
}
|
if (taskmodel.FairyAuDic.Count != 0)//可接取,正在进行中
|
{
|
foreach (int key in taskmodel.FairyAuDic.Keys)
|
{
|
if (taskmodel.FairyAuDic[key].MissionState != 0 && taskmodel.FairyAuDic[key].MissionState != 3)
|
{
|
TaskID = key;
|
FairyAuTask(TaskID);
|
return;
|
}
|
}
|
}
|
else//已完成
|
{
|
EndOfTheTask();
|
return;
|
}
|
}
|
|
|
void FairyAuTask(int _taskID)//仙盟任务
|
{
|
|
if (TaskAllocation.Instance.FairyAuNumber() >= 10)
|
{
|
// Btn_Pass.gameObject.SetActive(false);
|
Btn_Leave.gameObject.SetActive(false);
|
RoundText.text ="10/10";
|
Btn_Finish.gameObject.SetActive(false);
|
}
|
else
|
{
|
// Btn_Pass.gameObject.SetActive(true);
|
Btn_Leave.gameObject.SetActive(true);
|
Btn_Finish.gameObject.SetActive(true);
|
|
RoundText.text = (TaskAllocation.Instance.FairyAuNumber() + 1)+"/10";
|
}
|
Text_FinishRound.text = TaskAllocation.Instance.FairyAuAllNumber() + "/70";
|
|
string strINfor = taskmodel.FairyAuDic[_taskID].InforList;
|
TaskID = _taskID;
|
|
var taskObjectConfig = Config.Instance.Get<TASKINFOConfig>(strINfor);
|
string str = TaskAllocation.Instance.GetTaskInfo(taskObjectConfig.show_writing, _taskID);
|
ObjectiveText.text = str;
|
|
var rewardConfig = Config.Instance.Get<TASKINFOConfig>(taskmodel.FairyAuDic[_taskID].RewardList);
|
string _RewardStr = TaskAllocation.Instance.GetTaskInfo(rewardConfig.show_writing, _taskID);
|
RewardAnalysis.Inst.GetReward(_RewardStr, ref rewardList);
|
RewardInformationDisplay(rewardList);
|
}
|
|
void TheDefaultTask(int _taskID)//仙盟任务未接取特殊状态
|
{
|
|
Btn_Finish.gameObject.SetActive(false);
|
Btn_Leave.gameObject.SetActive(true);
|
RoundText.text = "0/10";
|
Text_FinishRound.text = "0/70";
|
string strINfor = taskmodel.SpecialTask[_taskID].InforList;
|
TaskID = _taskID;
|
|
var taskObjectConfig = Config.Instance.Get<TASKINFOConfig>(strINfor);
|
string _str = TaskAllocation.Instance.GetTaskInfo(taskObjectConfig.show_writing, _taskID);
|
ObjectiveText.text = _str;
|
var rewardConfig = Config.Instance.Get<TASKINFOConfig>(taskmodel.SpecialTask[_taskID].RewardList);
|
string _RewardStr = TaskAllocation.Instance.GetTaskInfo(rewardConfig.show_writing, _taskID);
|
RewardAnalysis.Inst.GetReward(_RewardStr, ref rewardList);
|
RewardInformationDisplay(rewardList);
|
}
|
void EndOfTheTask()//任务结束状态默认显示
|
{
|
m_ReceiveImage.SetSprite("UnReceiveBG");
|
Btn_Receive.gameObject.SetActive(false);
|
Btn_Finish.gameObject.SetActive(false);
|
Btn_Leave.gameObject.SetActive(false);
|
RoundText.text = "10/10";
|
Text_FinishRound.text = "70/70";
|
ObjectiveText.text = Language.Get("CompleteTheXianmengMission_Z");
|
ObjectiveText.color = UIHelper.GetUIColor(TextColType.NavyBrown);
|
if (_Grid.childCount != 0)
|
{
|
for (int i = 0; i < _Grid.childCount; i++)
|
{
|
DestroyObject(_Grid.GetChild(i).gameObject);
|
}
|
}
|
}
|
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);
|
Button _button = go.transform.GetComponent<Button>();
|
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, false, (ulong)rewardList[tab].num);
|
itemTipsModel.SetItemTipsModel(attrData);
|
});
|
}
|
}
|
void FairyAuRefresh()//仙盟任务的刷新或添加
|
{
|
RewardsToOpen();
|
ContentAssignment();
|
}
|
|
void FairyAuGrades(int _number, int _AwardState)
|
{
|
BFairyAuRewards(_number, _AwardState);
|
}
|
StringBuilder theTarget = new StringBuilder();//目标值
|
StringBuilder variation = new StringBuilder();//变化值
|
void BFairyAuRewards(int Number, int _AwardState)
|
{
|
Finalvalue = Number;
|
Value = Length - 1;
|
Default = 0;
|
int length = 0;
|
length = Finalvalue.ToString().Length;
|
theTarget.Length = 0;
|
theTarget.Append('0', Length - length);
|
theTarget.Append(Finalvalue);
|
theTarget.ToString();
|
variation.Length = 0;
|
variation.Append('0', Length);
|
|
}
|
protected override void LateUpdate()
|
{
|
if (coinTaskTip.IsFairy && vipmodel.GetVipPrivilegeCnt(VipPrivilegeType.AutoFairyMisstion) >= 1)
|
{
|
int GetCylinderNumber = TaskAllocation.Instance.FairyAuNumber();//获取仙盟完成环数
|
timeType += Time.deltaTime;
|
if (Second >= timeType)
|
{
|
_ReceiveImageText.text = string.Format(Language.Get("TaskContinueCount_1"), Second - (int)timeType);
|
}
|
else
|
{
|
_ReceiveImageText.text = string.Format(Language.Get("TaskContinueCount_1"), 0);
|
}
|
if (timeType >= Second && GetCylinderNumber == 10)
|
{
|
ReceiveButton();
|
CloseImmediately();
|
WindowCenter.Instance.Open<MainInterfaceWin>();
|
}
|
|
}
|
|
if (Value < 0) return;
|
if (theTarget[Value] != variation[Value])
|
{
|
Default += (int)Mathf.Pow(10, Length - 1 - Value);
|
variation.Length = 0;
|
int length = Default.ToString().Length;
|
variation.Append('0', Length - length);
|
variation.Append(Default);
|
variation.ToString();
|
RewardsText.text = variation.ToString();
|
}
|
else Value--;
|
}
|
|
|
private void AbortMission()//放弃任务
|
{
|
C0809_tagCCancelTask _C0809 = new C0809_tagCCancelTask();
|
_C0809.TaskID = (uint)TaskID;
|
GameNetSystem.Instance.SendInfo(_C0809);
|
}
|
|
}
|
|
}
|
|
|
|
|