//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Tuesday, October 31, 2017
|
//--------------------------------------------------------
|
using UnityEngine;
|
using System.Collections;
|
using UnityEngine.UI;
|
|
using System.Collections.Generic;
|
using System.Text;
|
using System.Text.RegularExpressions;
|
using Snxxz.UI;
|
using System;
|
//赏金任务面板
|
namespace Snxxz.UI
|
{
|
|
public class CoinTaskWin : MonoBehaviour
|
{
|
|
[SerializeField] Text m_AwardNumbertext;
|
[SerializeField] Image m_Btn_Receive;//领取按钮
|
[SerializeField] UIEffect m_uiEffct1;//特效播放
|
[Header("滚动速度")]
|
public double RollingSpeed = 0.1f;
|
[SerializeField] Text _Text_TaskCount;//任务次数
|
[SerializeField] RichText _Text_TaskTarget;//任务目标
|
[SerializeField] Transform _Grid;//任务奖励
|
[SerializeField] Button _Btn_Finish;//立即完成按钮
|
|
[SerializeField] Button _Btn_Forward;//立即前往按钮
|
|
[SerializeField] Button _Btn_Receive;//领取奖励按钮
|
|
[SerializeField] Text Text_TaskCount2;//当前总环数
|
|
[SerializeField] Text m_Text_Forward;
|
|
[Header("等待时间(秒)")]
|
public int Second = 20;
|
private float timeType = 0f;
|
|
|
private List<RewardAnalysis.RewardInfo> rewardList = new List<RewardAnalysis.RewardInfo>();
|
private Dictionary<int, MissionDetailDates> _BountyDic;//赏金任务
|
|
private Dictionary<int, int> RunTaskCnt1 = new Dictionary<int, int>();//关于跑环环数的记录1
|
private Dictionary<int, int> RunTaskCnt2 = new Dictionary<int, int>();//关于跑环环数的记录2
|
|
private int TaskID = 0;//获取任务ID
|
|
int Value = -1;
|
int Default = 0;
|
private float lastTime1 = 0;
|
private int Length = 7;//所需长度
|
private int _requireNumber = 0;//直接完成所需仙玉数量
|
StringBuilder theTarget = new StringBuilder();//目标值
|
StringBuilder variation = new StringBuilder();//变化值
|
|
private int RewardForNumber = 0;//奖励数值
|
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>()); } }
|
|
CoinTaskTipModel m_CoinTaskTip;
|
CoinTaskTipModel coinTaskTip { get { return m_CoinTaskTip ?? (m_CoinTaskTip = ModelCenter.Instance.GetModel<CoinTaskTipModel>()); } }
|
private void Awake()
|
{
|
string _requireNumberStr = FuncConfigConfig.Get("TaskExpend").Numerical1;
|
var RunTaskCntStr = FuncConfigConfig.Get("RunTaskCnt");
|
RunTaskCnt1 = ConfigParse.GetDic<int, int>(RunTaskCntStr.Numerical1);
|
RunTaskCnt2 = ConfigParse.GetDic<int, int>(RunTaskCntStr.Numerical2);
|
_requireNumber = int.Parse(_requireNumberStr);
|
}
|
private void Start()
|
{
|
_Btn_Finish.AddListener(Finish);
|
_Btn_Forward.AddListener(Forward);
|
_Btn_Receive.AddListener(Receive);
|
}
|
private void OnEnable()
|
{
|
lastTime1 = 0;
|
timeType = 0;
|
RewardForNumber = taskmodel.BountyRewardsNumber;
|
RewardFor();
|
TaskModel.Event_nBounty += OnBounty;//赏金任务添加
|
TaskModel.Event_BountyRewards += BountyRewards;//获取赏金奖励
|
_BountyDic = taskmodel.BountyDic;
|
RewardsToOpen();
|
ContentAssignment();
|
int GetCylinderNumber = TaskAllocation.Instance.ForRingAllNumber();//获取赏金总环数
|
if (coinTaskTip.IsPopup && GetCylinderNumber == 10)
|
{
|
m_Text_Forward.text = string.Format(Language.Get("TaskContinueCount_1"), Second);
|
}
|
else
|
{
|
m_Text_Forward.text = Language.Get("TaskBoxWin_BtnGetReward_Text_1");
|
}
|
}
|
|
private void OnDisable()
|
{
|
TaskModel.Event_nBounty -= OnBounty;
|
TaskModel.Event_BountyRewards -= BountyRewards;
|
taskmodel.BountyMotionBool = false;
|
if (coinTaskTip.IsPopup)
|
{
|
coinTaskTip.IsPopup = false;
|
}
|
}
|
|
void RewardFor()//奖励默认金
|
{
|
if (RewardForNumber != 0)
|
{
|
theTarget.Length = 0;
|
theTarget.Append('0', 7 - RewardForNumber.ToString().Length);
|
theTarget.Append(RewardForNumber);
|
m_AwardNumbertext.text = theTarget.ToString();
|
}
|
else
|
{
|
m_AwardNumbertext.text = "0000000";
|
}
|
}
|
|
void Finish()
|
{
|
if (CrossServerUtility.IsCrossServerBoss())
|
{
|
SysNotifyMgr.Instance.ShowTip("CrossMap10");
|
return;
|
}
|
if (mainModel.IsBoolCoinTask)
|
{
|
AccomplishTask();
|
}
|
else
|
{
|
ConfirmCancel.ToggleConfirmCancel(Language.Get("MoneyReward_Task"), Language.Get("Accomplish_Task"), Language.Get("ConfirmCancel101"), (bool isOk, bool IsToggle) =>
|
{
|
if (isOk)
|
|
{
|
AccomplishTask();
|
}
|
if (IsToggle)
|
{
|
mainModel.IsBoolCoinTask = true;
|
}
|
});
|
}
|
}
|
|
void AccomplishTask()
|
{
|
|
if ((int)UIHelper.GetMoneyCnt(1) >= _requireNumber )
|
{
|
taskmodel.CompletionOfTask(TaskID);
|
taskmodel.BountyMotionBool = true;
|
}
|
else
|
{
|
if (VersionConfig.Get().isBanShu)
|
{
|
SysNotifyMgr.Instance.ShowTip("GoldErr");
|
return;
|
}
|
WindowCenter.Instance.Open<RechargeTipWin>();
|
}
|
}
|
|
void RewardsToOpen()//奖励按钮打开
|
{
|
if (TaskAllocation.Instance.ForRingNumber() == RunTaskCnt2[7])
|
{
|
|
m_Btn_Receive.SetSprite("ReceiveBG_a");
|
_Btn_Receive.gameObject.SetActive(true);
|
|
}
|
else
|
{
|
m_Btn_Receive.SetSprite("UnReceiveBG");
|
_Btn_Receive.gameObject.SetActive(false);
|
|
}
|
}
|
void Receive()//领取奖励
|
{
|
CA221_tagCMGetRunTaskEndAward _CA221 = new CA221_tagCMGetRunTaskEndAward();
|
_CA221.Type = 7;
|
GameNetSystem.Instance.SendInfo(_CA221);
|
if (coinTaskTip.IsPopup)
|
{
|
coinTaskTip.IsPopup = false;
|
}
|
}
|
|
|
void BountyRewards(int Number, int _AwardState)
|
{
|
if (Number == 0)
|
{
|
m_AwardNumbertext.text = "0000000";
|
}
|
else
|
{
|
if (!m_uiEffct1.IsPlaying)
|
{
|
m_uiEffct1.Play();
|
}
|
|
RewardForNumber = Number;
|
Value = Length - 1;
|
Default = 0;
|
int length = 0;
|
length = RewardForNumber.ToString().Length;
|
theTarget.Length = 0;
|
theTarget.Append('0', Length - length);
|
theTarget.Append(RewardForNumber);
|
theTarget.ToString();
|
variation.Length = 0;
|
variation.Append('0', Length);
|
}
|
}
|
|
private void LateUpdate()
|
{
|
if (coinTaskTip.IsPopup)
|
{
|
int GetCylinderNumber = TaskAllocation.Instance.ForRingAllNumber();//获取赏金总环数
|
timeType += Time.deltaTime;
|
if (Second >= timeType)
|
{
|
m_Text_Forward.text = string.Format(Language.Get("TaskContinueCount_1"), Second - (int)timeType);
|
}
|
else
|
{
|
m_Text_Forward.text = string.Format(Language.Get("TaskContinueCount_1"), 0);
|
}
|
if (timeType >= Second && GetCylinderNumber == 10)
|
{
|
Receive();
|
WindowCenter.Instance.Close<TaskWin>();
|
WindowCenter.Instance.Open<MainInterfaceWin>();
|
}
|
|
}
|
|
if (Value < 0)
|
{
|
return;
|
}
|
lastTime1 += Time.deltaTime;
|
if (lastTime1 >= RollingSpeed)
|
{
|
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();
|
m_AwardNumbertext.text = variation.ToString();
|
}
|
else Value--;
|
lastTime1 = 0;
|
}
|
}
|
|
void Forward()
|
{
|
if (CrossServerUtility.IsCrossServerBoss())
|
{
|
SysNotifyMgr.Instance.ShowTip("CrossMap10");
|
return;
|
}
|
_Text_TaskTarget.ExcuteHref();
|
TaskAllocation.Instance.TaskTime = TimeUtility.ServerNow;
|
WindowCenter.Instance.Close<TaskWin>();
|
WindowCenter.Instance.Open<MainInterfaceWin>();
|
}
|
|
void CompleteTaskDeletion()//删除完成的任务
|
{
|
List<int> _ListArray = new List<int>();
|
foreach (int key in _BountyDic.Keys)
|
{
|
if (_BountyDic[key].MissionState == 3 || _BountyDic[key].MissionState == 0)
|
_ListArray.Add(key);
|
}
|
for (int i = 0; i < _ListArray.Count; i++)
|
{
|
_BountyDic.Remove(_ListArray[i]);
|
}
|
}
|
|
void ContentAssignment()//内容赋值
|
{
|
int _TaskID = 2000;
|
CompleteTaskDeletion();
|
if (taskmodel.SpecialTask.Count != 0)
|
{
|
foreach (int key in taskmodel.SpecialTask.Keys)
|
{
|
if (taskmodel.SpecialTask[key].Type == 13 && taskmodel.SpecialTask[key].MissionState != 3)//未接任务
|
{
|
_TaskID = key;
|
TheDefaultTask(_TaskID);
|
return;
|
}
|
}
|
}
|
if (_BountyDic.Count != 0)//可接,正在进行中
|
{
|
foreach (int key in _BountyDic.Keys)
|
{
|
_TaskID = key;
|
BountyMission(_TaskID);
|
return;
|
}
|
}
|
else//全部完成
|
{
|
EndOfTheTask();
|
return;
|
}
|
}
|
|
void BountyMission(int _TaskID)//赏金任务接取
|
{
|
_Btn_Forward.gameObject.SetActive(true);
|
if (TaskAllocation.Instance.ForRingNumber() >= RunTaskCnt2[7])
|
{
|
_Btn_Finish.gameObject.SetActive(false);
|
_Text_TaskCount.text = string.Format(Language.Get("NumberOfRings_Z2"), TaskAllocation.Instance.ForRingNumber(), RunTaskCnt2[7]);
|
_Btn_Forward.gameObject.SetActive(false);
|
}
|
else
|
{
|
_Btn_Finish.gameObject.SetActive(true);
|
_Text_TaskCount.text = (TaskAllocation.Instance.ForRingNumber() + 1) + "/" + RunTaskCnt2[7];
|
}
|
Text_TaskCount2.text = TaskAllocation.Instance.ForRingAllNumber() + "/" + RunTaskCnt1[7];
|
|
string strINfor = _BountyDic[_TaskID].InforList;
|
TaskID = _TaskID;
|
|
var taskTargetConfig = TASKINFOConfig.Get(strINfor);
|
string _str = TaskAllocation.Instance.GetTaskInfo(taskTargetConfig.show_writing, _TaskID);
|
_Text_TaskTarget.text = _str;
|
|
var taskRewardConfig = TASKINFOConfig.Get(_BountyDic[_TaskID].RewardList);
|
string _RewardStr = TaskAllocation.Instance.GetTaskInfo(taskRewardConfig.show_writing, _TaskID);
|
|
RewardAnalysis.Inst.GetReward(_RewardStr, ref rewardList);
|
RewardInformationDisplay(rewardList);
|
}
|
|
void TheDefaultTask(int _TaskID)//赏金任务未接取特殊状态
|
{
|
m_Btn_Receive.SetSprite("UnReceiveBG");
|
_Btn_Finish.gameObject.SetActive(false);
|
_Btn_Forward.gameObject.SetActive(true);
|
_Text_TaskCount.text = Language.Get("TaskFinish");
|
|
Text_TaskCount2.text = TaskAllocation.Instance.ForRingAllNumber() + "/" + RunTaskCnt1[7];
|
string strINfor = taskmodel.SpecialTask[_TaskID].InforList;
|
TaskID = _TaskID;
|
|
var taskTargetConfig = TASKINFOConfig.Get(strINfor);
|
string _str = TaskAllocation.Instance.GetTaskInfo(taskTargetConfig.show_writing, _TaskID);
|
_Text_TaskTarget.text = _str;
|
|
var taskRewardConfig = TASKINFOConfig.Get(taskmodel.SpecialTask[_TaskID].RewardList);
|
string _RewardStr = TaskAllocation.Instance.GetTaskInfo(taskRewardConfig.show_writing, _TaskID);
|
|
RewardAnalysis.Inst.GetReward(_RewardStr, ref rewardList);
|
RewardInformationDisplay(rewardList);
|
}
|
|
void EndOfTheTask()//任务结束状态
|
{
|
m_Btn_Receive.SetSprite("UnReceiveBG");
|
_Btn_Finish.gameObject.SetActive(false);
|
_Btn_Forward.gameObject.SetActive(false);
|
_Btn_Receive.gameObject.SetActive(false);
|
_Text_TaskCount.text = TaskAllocation.Instance.ForRingNumber() + "/" + RunTaskCnt2[7];
|
|
Text_TaskCount2.text = TaskAllocation.Instance.ForRingAllNumber() + "/" + RunTaskCnt1[7];
|
|
_Text_TaskTarget.text = Language.Get("CoinTaskText_1");//已完成本日所有师门悬赏任务
|
|
if (_Grid.childCount != 0)
|
{
|
for (int i = 0; i < _Grid.childCount; i++)
|
{
|
DestroyObject(_Grid.GetChild(i).gameObject);
|
}
|
}
|
}
|
|
void OnBounty()
|
{
|
_BountyDic = taskmodel.BountyDic;
|
RewardsToOpen();
|
ContentAssignment();
|
}
|
|
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>();
|
ulong number = 0;
|
if (rewardList[i].expPoint != 0)
|
{
|
number = (ulong)rewardList[i].expPoint * 100000000;
|
number += (ulong)rewardList[i].num;
|
}
|
else
|
{
|
number = (ulong)rewardList[i].num;
|
}
|
ItemCellModel cellModel = new ItemCellModel(rewardList[i].itemCfg.ID, true, (ulong)number);
|
itemcell.Init(cellModel);
|
itemcell.button.RemoveAllListeners();
|
int tab = i;
|
itemcell.button.AddListener(() =>
|
{
|
ItemTipUtility.Show(rewardList[tab].itemCfg.ID);
|
});
|
}
|
}
|
}
|
}
|
|
|
|