//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Monday, November 06, 2017
|
//--------------------------------------------------------
|
//仙盟任务
|
using vnxbqy.UI;
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using System.Text;
|
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace vnxbqy.UI
|
{
|
|
public class FairyAuTaskWin : Window, SecondWindowInterface
|
{
|
[SerializeField] ImageEx m_ReceiveImage;//奖励按钮
|
[SerializeField] Button Btn_Receive;//奖励领取
|
[SerializeField] Button Btn_Finish;//立即完成按钮
|
[SerializeField] Button Btn_Leave;//立即前往按钮
|
[SerializeField] Text Text_FinishRound;//本周完成数
|
[SerializeField] RichText ObjectiveText;//任务目标
|
[SerializeField] Text RoundText_L;//任务环数
|
[SerializeField] Text RoundText_R;//任务环数
|
[SerializeField] Transform _Grid;
|
[SerializeField] GameObject m_ReceiveImageObj;//领奖倒计时1
|
[SerializeField] Text _ReceiveImageText;//领奖倒计时2
|
[SerializeField] Transform m_GridLeft;//左侧奖励
|
[SerializeField] Slider m_Slider;//进度条
|
[SerializeField] UIEffect m_LeaveBtnEffect;
|
[SerializeField] Text m_LeaveText;
|
|
[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>();
|
private ImpactRankModel.RankAwardItem RankAwardItem = new ImpactRankModel.RankAwardItem();//新增奖励物品
|
TaskModel m_TaskModel;
|
TaskModel taskmodel { get { return m_TaskModel ?? (m_TaskModel = ModelCenter.Instance.GetModel<TaskModel>()); } }
|
|
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>()); } }
|
#region Built-in
|
|
public Button close { get; set; }
|
|
protected override void BindController()
|
{
|
if (this is SecondWindowInterface)
|
{
|
var frame = this.GetComponentInChildren<SecondFrameLoader>();
|
frame.Create();
|
close = frame.GetComponentInChildren<Button>();
|
}
|
string _requireNumberStr = FuncConfigConfig.Get("QuickFinishMission").Numerical1;
|
_requireNumber = int.Parse(_requireNumberStr.Split('|')[1]);
|
RankAwardItem = taskmodel.GetRunTaskRward();
|
}
|
|
protected override void AddListeners()
|
{
|
Btn_Receive.AddListener(ReceiveButton);
|
Btn_Finish.AddListener(FinishButton);
|
Btn_Leave.AddListener(LeaveButton);
|
close.AddListener(CloseButton);
|
}
|
|
protected override void OnPreOpen()
|
{
|
timeType = 0;
|
DeadModel.playerDieEvent += OnPlayerDie;
|
TaskModel.Event_FairyAuTask += FairyAuRefresh;
|
// PlayerTaskDatas.Event_FairyAuReward += FairyAuGrades;
|
RewardsToOpen();
|
ContentAssignment();
|
ReceiveLeft();//左侧奖励面板赋值
|
int GetCylinderNumber = TaskAllocation.Instance.FairyAuNumber();//获取仙盟总环数
|
if (coinTaskTip.IsFairy && GetCylinderNumber == 10 && vipmodel.GetVipPrivilegeCnt(VipPrivilegeType.AutoFairyMisstion) >= 1)
|
{
|
m_ReceiveImageObj.SetActive(true);
|
_ReceiveImageText.text = string.Format(Language.Get("TaskContinueCount_2"), Second);
|
}
|
else
|
{
|
m_ReceiveImageObj.SetActive(false);
|
}
|
|
}
|
protected override void OnAfterOpen()
|
{
|
}
|
|
protected override void OnPreClose()
|
{
|
if (coinTaskTip.IsFairy)
|
{
|
coinTaskTip.IsFairy = false;
|
}
|
}
|
|
protected override void OnAfterClose()
|
{
|
DeadModel.playerDieEvent -= OnPlayerDie;
|
TaskModel.Event_FairyAuTask -= FairyAuRefresh;
|
// PlayerTaskDatas.Event_FairyAuReward -= FairyAuGrades;
|
taskmodel.FairyAuBool = false;
|
if (!WindowJumpMgr.Instance.IsJumpState)
|
{
|
WindowCenter.Instance.Open<MainInterfaceWin>();
|
}
|
}
|
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_2"), Second - (int)timeType);
|
}
|
else
|
{
|
_ReceiveImageText.text = string.Format(Language.Get("TaskContinueCount_2"), 0);
|
}
|
if (timeType >= Second && GetCylinderNumber == 10)
|
{
|
ReceiveButton();
|
CloseImmediately();
|
WindowCenter.Instance.Open<MainInterfaceWin>();
|
}
|
}
|
|
}
|
private void OnPlayerDie()
|
{
|
CloseImmediately();
|
if (!WindowCenter.Instance.IsOpen<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;
|
m_ReceiveImageObj.SetActive(false);
|
}
|
}
|
void FinishButton()//立即完成按钮
|
{
|
if (CrossServerUtility.IsCrossServerBoss())
|
{
|
SysNotifyMgr.Instance.ShowTip("CrossMap10");
|
return;
|
}
|
if (mainModel.IsBoolFairyAuTask || InvestModel.Instance.IsMissionQuickFinish())
|
{
|
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 (InvestModel.Instance.IsMissionQuickFinish() || (int)UIHelper.GetMoneyCnt(1) >= _requireNumber)
|
{
|
taskmodel.CompletionOfTask(TaskID);
|
taskmodel.FairyAuBool = true;
|
}
|
else
|
{
|
if (VersionConfig.Get().isBanShu)
|
{
|
SysNotifyMgr.Instance.ShowTip("GoldErr");
|
return;
|
}
|
WindowCenter.Instance.Open<RechargeTipWin>();
|
}
|
}
|
void LeaveButton()//立即前往
|
{
|
if (CrossServerUtility.IsCrossServerBoss())
|
{
|
SysNotifyMgr.Instance.ShowTip("CrossMap10");
|
return;
|
}
|
WindowCenter.Instance.Close<UnionPanel>();
|
WindowCenter.Instance.Close<FairyAuTaskWin>();
|
WindowCenter.Instance.Open<MainInterfaceWin>();
|
ObjectiveText.ExcuteHref();
|
TaskAllocation.Instance.TaskTime = TimeUtility.ServerNow;
|
}
|
|
void CloseButton()//关闭按钮
|
{
|
WindowCenter.Instance.Close<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("XT_XMRW_3");
|
Btn_Receive.interactable = true;
|
}
|
else
|
{
|
m_ReceiveImage.SetSprite("XT_XMRW_4");
|
Btn_Receive.interactable = 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() >= taskmodel.FairyAuTaskCount_Round)
|
{
|
Btn_Leave.SetActive(false);
|
int total = TaskAllocation.Instance.FairyAuAllNumber();
|
total = Mathf.CeilToInt((float)total / 10);
|
RoundText_L.text = Language.Get("FairyAuTaskWin_Text3", SetNumberOfRounds(total));
|
RoundText_R.text = Language.Get("FairyAuTaskWin_Text4", taskmodel.FairyAuTaskCount_Round);
|
Btn_Finish.SetActive(false);
|
}
|
else
|
{
|
Btn_Leave.SetActive(true);
|
Btn_Finish.SetActive(true);
|
int total = TaskAllocation.Instance.FairyAuAllNumber();
|
total = Mathf.CeilToInt((float)total / taskmodel.FairyAuTaskCount_Round);
|
RoundText_L.text = Language.Get("FairyAuTaskWin_Text3", SetNumberOfRounds(total));
|
RoundText_R.text = Language.Get("FairyAuTaskWin_Text4", (TaskAllocation.Instance.FairyAuNumber() + 1));
|
}
|
Text_FinishRound.text = string.Format("{0}/{1}", TaskAllocation.Instance.FairyAuAllNumber(), taskmodel.FairyAuTaskCount_Day);
|
|
m_Slider.value = (((float)TaskAllocation.Instance.FairyAuAllNumber()) / taskmodel.FairyAuTaskCount_Day);
|
|
string strINfor = taskmodel.FairyAuDic[_taskID].InforList;
|
TaskID = _taskID;
|
|
var taskObjectConfig = TASKINFOConfig.Get(strINfor);
|
string str = TaskAllocation.Instance.GetTaskInfo(taskObjectConfig.show_writing, _taskID);
|
ObjectiveText.text = str;
|
var rewardConfig = TASKINFOConfig.Get(taskmodel.FairyAuDic[_taskID].RewardList);
|
string _RewardStr = TaskAllocation.Instance.GetTaskInfo(rewardConfig.show_writing, _taskID);
|
RewardAnalysis.Inst.GetReward(_RewardStr, ref rewardList);
|
RewardInformationDisplay(rewardList);
|
m_LeaveText.text = Language.Get("CoinTaskText_8");
|
}
|
|
void TheDefaultTask(int _taskID)//仙盟任务未接取特殊状态
|
{
|
m_LeaveBtnEffect.Play();
|
m_LeaveText.text = Language.Get("CoinTaskText_11");
|
Btn_Finish.SetActive(false);
|
Btn_Leave.SetActive(true);
|
RoundText_L.text = Language.Get("FairyAuTaskWin_Text3", SetNumberOfRounds(0));
|
RoundText_R.text = Language.Get("FairyAuTaskWin_Text4", 0);
|
Text_FinishRound.text = string.Format("0/{0}", taskmodel.FairyAuTaskCount_Day);
|
m_Slider.value = 0f;
|
string strINfor = taskmodel.SpecialTask[_taskID].InforList;
|
TaskID = _taskID;
|
var taskObjectConfig = TASKINFOConfig.Get(strINfor);
|
string _str = TaskAllocation.Instance.GetTaskInfo(taskObjectConfig.show_writing, _taskID);
|
ObjectiveText.text = _str;
|
var rewardConfig = TASKINFOConfig.Get(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("XT_XMRW_2");
|
Btn_Receive.interactable = false;
|
Btn_Finish.SetActive(false);
|
Btn_Leave.SetActive(false);
|
RoundText_L.text = Language.Get("FairyAuTaskWin_Text3", SetNumberOfRounds(2));
|
RoundText_R.text = Language.Get("FairyAuTaskWin_Text4", taskmodel.FairyAuTaskCount_Round);
|
Text_FinishRound.text = string.Format("{0}/{0}", taskmodel.FairyAuTaskCount_Day);
|
m_Slider.value = 1f;
|
ObjectiveText.text = Language.Get("CompleteTheXianmengMission_Z");
|
ObjectiveText.color = UIHelper.GetUIColor(TextColType.NavyBrown);
|
if (_Grid.childCount != 0 && taskmodel.FairyAuTaskCount_Round == taskmodel.FairyAuTaskCount_Day)
|
{
|
for (int i = 0; i < _Grid.childCount; i++)
|
{
|
DestroyImmediate(_Grid.GetChild(i).gameObject);
|
}
|
}
|
m_LeaveText.text = Language.Get("CoinTaskText_8");
|
}
|
void RewardInformationDisplay(List<RewardAnalysis.RewardInfo> rewardList)//奖励信息
|
{
|
var index = 0;
|
|
|
for (int i = 0; i < rewardList.Count; i++)
|
{
|
GameObject go = null;
|
if (i >= _Grid.childCount)
|
{
|
go = GameObject.Instantiate(UILoader.LoadPrefab("ItemCell"));
|
go.transform.SetParent(_Grid);
|
go.transform.localScale = Vector3.one;
|
Vector3 pos = go.transform.localPosition;
|
go.transform.localPosition = pos.SetZ(0);
|
}
|
else
|
{
|
go = _Grid.GetChild(i).gameObject;
|
}
|
go.SetActive(true);
|
ItemCell itemcell = go.GetComponent<ItemCell>();
|
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);
|
});
|
index = i + 1;
|
}
|
|
for (int i = index; i < _Grid.childCount; i++)
|
{
|
_Grid.GetChild(i).SetActive(false);
|
}
|
}
|
void FairyAuRefresh()//仙盟任务的刷新或添加
|
{
|
RewardsToOpen();
|
ContentAssignment();
|
}
|
|
private void ReceiveLeft()//左侧奖励信息
|
{
|
for (int i = 0; i < m_GridLeft.childCount; i++)
|
{
|
m_GridLeft.GetChild(i).SetActive(false);
|
}
|
List<Item> AwardItemList = new List<Item>();
|
AwardItemList = RankAwardItem.GetAwardItem(12);
|
|
for (int i = 0; i < AwardItemList.Count; i++)
|
{
|
if (i < m_GridLeft.childCount)
|
{
|
m_GridLeft.GetChild(i).SetActive(true);
|
ItemCell itemCell = m_GridLeft.GetChild(i).GetComponent<ItemCell>();
|
ulong Number = 0;
|
Number = (ulong)AwardItemList[i].count;
|
if (AwardItemList[i].id == 2103)
|
{
|
Equation.Instance.Clear();
|
int playerlv = PlayerDatas.Instance.baseData.LV;
|
var config = PlayerLVConfig.Get(playerlv);
|
Equation.Instance.AddKeyValue("reExp", (ulong)config.ReExp * 5625);
|
Number = Equation.Instance.Eval<ulong>("reExp");
|
}
|
|
ItemCellModel cellModel = new ItemCellModel(AwardItemList[i].id, true, Number);
|
itemCell.Init(cellModel);
|
int tab = i;
|
itemCell.button.SetListener(() =>
|
{
|
ItemTipUtility.Show(AwardItemList[tab].id);
|
});
|
}
|
}
|
}
|
|
private string SetNumberOfRounds(int num)
|
{
|
string Str = string.Empty;
|
switch (num)
|
{
|
case 0:
|
Str = Language.Get("Num_CHS_1");
|
return Str;
|
case 1:
|
Str = Language.Get("Num_CHS_1");
|
return Str;
|
case 2:
|
Str = Language.Get("Num_CHS_2");
|
return Str;
|
case 3:
|
Str = Language.Get("Num_CHS_3");
|
return Str;
|
case 4:
|
Str = Language.Get("Num_CHS_4");
|
return Str;
|
case 5:
|
Str = Language.Get("Num_CHS_5");
|
return Str;
|
case 6:
|
Str = Language.Get("Num_CHS_6");
|
return Str;
|
case 7:
|
Str = Language.Get("Num_CHS_7");
|
return Str;
|
}
|
return Str;
|
}
|
}
|
|
}
|
|
|
|
|