//-------------------------------------------------------- // [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 rewardList = new List(); PlayerTaskDatas m_TaskModel; PlayerTaskDatas taskmodel { get { return m_TaskModel ?? (m_TaskModel = ModelCenter.Instance.GetModel()); } } ItemTipsModel _itemTipsModel; ItemTipsModel itemTipsModel { get { return _itemTipsModel ?? (_itemTipsModel = ModelCenter.Instance.GetModel()); } } PlayerMainDate m_MainModel; PlayerMainDate mainModel { get { return m_MainModel ?? (m_MainModel = ModelCenter.Instance.GetModel()); } } PlayerDeadModel _deadModel; PlayerDeadModel DeadModel { get { return _deadModel ?? (_deadModel = ModelCenter.Instance.GetModel()); } } CoinTaskTipModel m_CoinTaskTip; CoinTaskTipModel coinTaskTip { get { return m_CoinTaskTip ?? (m_CoinTaskTip = ModelCenter.Instance.GetModel()); } } VipModel m_Vipmodel; VipModel vipmodel { get { return m_Vipmodel ?? (m_Vipmodel = ModelCenter.Instance.GetModel()); } } 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("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(); } } private void OnPlayerDie() { CloseImmediately(); if (!WindowCenter.Instance.CheckOpen()) { WindowCenter.Instance.Open(); } } #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(); } } 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(); WindowCenter.Instance.CloseImmediately(); WindowCenter.Instance.Open(); ObjectiveText.ExcuteHref(); } void CloseButton()//关闭按钮 { WindowCenter.Instance.CloseImmediately(); } void CompleteTaskDeletion()//删除完成的任务 { List _ListArray = new List(); 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(strINfor); string str = TaskAllocation.Instance.GetTaskInfo(taskObjectConfig.show_writing, _taskID); ObjectiveText.text = str; var rewardConfig = Config.Instance.Get(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(strINfor); string _str = TaskAllocation.Instance.GetTaskInfo(taskObjectConfig.show_writing, _taskID); ObjectiveText.text = _str; var rewardConfig = Config.Instance.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("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 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(); 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