//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Monday, January 15, 2018
|
//--------------------------------------------------------
|
using UnityEngine;
|
using System.Collections;
|
using UnityEngine.UI;
|
using System;
|
using System.Collections.Generic;
|
|
|
namespace vnxbqy.UI
|
{
|
|
public class ResourcesBackWin : Window
|
{
|
|
[SerializeField] ScrollerController m_ScrollerController;
|
[SerializeField] Button m_GetTipsBtn;
|
[SerializeField] Button m_FindAKeyBtn;//一键找回
|
[SerializeField] GameObject m_Text_1;
|
[SerializeField] GameObject m_Text_2;
|
|
[SerializeField] Button m_NotVipFindAKeyBtn;//非Vip一键仙玉找回
|
[SerializeField] Toggle m_FairyJadeToggle;
|
[SerializeField] Toggle m_CopperCashToggle;
|
[SerializeField] Image m_FairyJadeImage;
|
[SerializeField] GameObject m_Container_NoRecords;
|
ResourcesBackModel m_ResourcesBackModel;
|
ResourcesBackModel resourcesBackModel { get { return m_ResourcesBackModel ?? (m_ResourcesBackModel = ModelCenter.Instance.GetModel<ResourcesBackModel>()); } }
|
public static event Action IsAccordingRedPoint;
|
List<ResourcesBackClass> _list = new List<ResourcesBackClass>();//用来控制进行排序
|
private bool IsBool = true;
|
private int OneKeyResourcesBackNum = 0;
|
|
protected override void BindController()
|
{
|
ToggleSelected();
|
}
|
|
protected override void AddListeners()
|
{
|
m_GetTipsBtn.AddListener(OnClickGetTipsButton);
|
m_FindAKeyBtn.AddListener(OnClickFindAKeyButton);
|
m_FairyJadeToggle.onValueChanged.AddListener(FairyJadeToggle);
|
m_CopperCashToggle.onValueChanged.AddListener(CopperCashToggle);
|
m_NotVipFindAKeyBtn.AddListener(OnClickNoVipFindAKeyButton);
|
}
|
|
protected override void OnPreOpen()
|
{
|
}
|
|
protected override void OnAfterOpen()
|
{
|
}
|
|
protected override void OnActived()
|
{
|
base.OnActived();
|
m_ScrollerController.OnRefreshCell += OnRefreshGridCell;
|
ResourcesBackModel.ResourcesBackUpdateEvent += OnResourcesBackUpdate;
|
IsFindOneKey();
|
|
Sequencing();
|
if (_list.Count == 0)
|
{
|
m_Container_NoRecords.SetActive(true);
|
}
|
else
|
{
|
m_Container_NoRecords.SetActive(false);
|
}
|
OnCreateGridLineCell(m_ScrollerController);
|
}
|
|
protected override void OnPreClose()
|
{
|
m_ScrollerController.OnRefreshCell -= OnRefreshGridCell;
|
ResourcesBackModel.ResourcesBackUpdateEvent -= OnResourcesBackUpdate;
|
if (IsAccordingRedPoint != null)
|
{
|
IsAccordingRedPoint();
|
}
|
}
|
|
protected override void OnAfterClose()
|
{
|
}
|
|
private void OnResourcesBackUpdate()
|
{
|
Sequencing();
|
OnCreateGridLineCell(m_ScrollerController);
|
IsFindOneKey();
|
}
|
|
private void IsFindOneKey()
|
{
|
if (IsFind())
|
{
|
if (IsBool)
|
{
|
m_FairyJadeImage.SetActive(true);
|
m_Text_1.SetActive(true);
|
m_Text_2.SetActive(false);
|
}
|
else
|
{
|
m_FairyJadeImage.SetActive(false);
|
m_Text_1.SetActive(false);
|
m_Text_2.SetActive(true);
|
}
|
m_FindAKeyBtn.SetActive(true);
|
}
|
else
|
{
|
m_FindAKeyBtn.SetActive(false);
|
}
|
|
|
if (IsFairyJade())
|
{
|
m_NotVipFindAKeyBtn.SetActive(true);
|
}
|
else
|
{
|
m_NotVipFindAKeyBtn.SetActive(false);
|
}
|
}
|
|
private void OnCreateGridLineCell(ScrollerController gridCtrl)
|
{
|
gridCtrl.Refresh();
|
if (_list.Count == 0)
|
{
|
return;
|
}
|
int Line = (_list.Count + 1) / 2;
|
for (int i = 0; i < Line; i++)
|
{
|
gridCtrl.AddCell(ScrollerDataType.Header, i);
|
}
|
gridCtrl.Restart();
|
}
|
private void OnRefreshGridCell(ScrollerDataType type, CellView cell)
|
{
|
int gridlineIndex = cell.index;
|
int childCode = 0;
|
for (childCode = 0; childCode < cell.transform.childCount; childCode++)
|
{
|
ResourcesBackBoxBack resourcesBackBoxBack = cell.transform.GetChild(childCode).GetComponent<ResourcesBackBoxBack>();
|
resourcesBackBoxBack.SetActive(false);
|
int cellCount = (cell.transform.childCount) * gridlineIndex + (childCode + 1);
|
if ( cellCount - 1 < _list.Count)
|
{
|
resourcesBackBoxBack.SetActive(true);
|
ResourcesBackClass resourcesBackClass = _list[cellCount - 1];
|
resourcesBackBoxBack.FairyJadeOrCopperCashFind(resourcesBackClass.ID, IsBool);
|
}
|
}
|
}
|
private void OnClickGetTipsButton()
|
{
|
|
}
|
private void OnClickFindAKeyButton()//一键找回按钮
|
{
|
if (IsBool)
|
{
|
FindAKeyFairyJade();
|
}
|
else
|
{
|
FindAKeyCoins();
|
}
|
}
|
private void OnClickNoVipFindAKeyButton()//一键仙玉(非Vip)
|
{
|
int NeedFairyJade = 0;
|
foreach (int key in resourcesBackModel.ResourcesBackDic.Keys)
|
{
|
var ResourcesBack = resourcesBackModel.ResourcesBackDic[key];
|
if (ResourcesBack.RecoverCnt > 0)
|
{
|
NeedFairyJade += ResourcesBack.RecoverCnt * ResourcesBack.NormalCostJade;
|
}
|
}
|
int CostJade = (int)UIHelper.GetMoneyCnt(1);
|
string strLanguage = string.Empty;
|
if (CostJade >= NeedFairyJade)
|
{
|
strLanguage = string.Format(Language.Get("NewResourceBack1"), NeedFairyJade);
|
}
|
else
|
{
|
strLanguage = string.Format(Language.Get("NewResourceBack3"), NeedFairyJade, CostJade, NeedFairyJade - CostJade);
|
}
|
|
ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), strLanguage, (bool isOk) =>
|
{
|
if (isOk)
|
{
|
if ((int)UIHelper.GetMoneyCnt(1) >= NeedFairyJade)
|
{
|
RecoverGain(2);
|
m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见
|
}
|
else
|
{
|
if (VersionConfig.Get().isBanShu)
|
{
|
SysNotifyMgr.Instance.ShowTip("GoldErr");
|
return;
|
}
|
WindowCenter.Instance.Open<RechargeTipWin>();
|
}
|
}
|
});
|
}
|
|
private void FindAKeyFairyJade()//一键找仙玉
|
{
|
int NeedFairyJade = 0;
|
foreach (int key in resourcesBackModel.ResourcesBackDic.Keys)
|
{
|
var ResourcesBack = resourcesBackModel.ResourcesBackDic[key];
|
if (ResourcesBack.RecoverCnt > 0)
|
{
|
NeedFairyJade += ResourcesBack.RecoverCnt * ResourcesBack.NormalCostJade;
|
}
|
if (ResourcesBack.ExtraCnt > 0)
|
{
|
NeedFairyJade += ResourcesBack.ExtraCnt * ResourcesBack.VipCostJade;
|
}
|
}
|
int CostJade = (int)UIHelper.GetMoneyCnt(1);
|
string strLanguage = string.Empty;
|
if (CostJade >= NeedFairyJade)
|
{
|
strLanguage = string.Format(Language.Get("NewResourceBack4"), NeedFairyJade);
|
}
|
else
|
{
|
strLanguage = string.Format(Language.Get("NewResourceBack3"), NeedFairyJade, CostJade, NeedFairyJade - CostJade);
|
}
|
|
ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), strLanguage, (bool isOk) =>
|
{
|
if (isOk)
|
{
|
if ((int)UIHelper.GetMoneyCnt(1) >= NeedFairyJade)
|
{
|
RecoverGain(0);
|
m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见
|
}
|
else
|
{
|
if (VersionConfig.Get().isBanShu)
|
{
|
SysNotifyMgr.Instance.ShowTip("GoldErr");
|
return;
|
}
|
WindowCenter.Instance.Open<RechargeTipWin>();
|
}
|
}
|
});
|
}
|
|
private void FindAKeyCoins()//一键找铜钱
|
{
|
RecoverGain(1);//免费找回
|
m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见
|
}
|
|
List<byte> indexList = new List<byte>();
|
List<byte> recoverCntList = new List<byte>();
|
private void RecoverGain(int type)//0仙玉,1铜钱,2一键非Vip仙玉
|
{
|
indexList.Clear();
|
recoverCntList.Clear();
|
CA553_tagCMRecoverGain CA553 = new CA553_tagCMRecoverGain();
|
CA553.Type = (byte)type;
|
if (type == 0)
|
{
|
foreach (int key in resourcesBackModel.ResourcesBackDic.Keys)
|
{
|
var ResourcesBack = resourcesBackModel.ResourcesBackDic[key];
|
if (ResourcesBack.RecoverCnt > 0 || ResourcesBack.ExtraCnt > 0)
|
{
|
indexList.Add((byte)key);
|
recoverCntList.Add((byte)(ResourcesBack.RecoverCnt + ResourcesBack.ExtraCnt));
|
}
|
}
|
CA553.Type = 0;
|
}
|
else if (type == 1)
|
{
|
foreach (int key in resourcesBackModel.ResourcesBackDic.Keys)
|
{
|
var ResourcesBack = resourcesBackModel.ResourcesBackDic[key];
|
if (ResourcesBack.RecoverCnt > 0)
|
{
|
indexList.Add((byte)key);
|
recoverCntList.Add((byte)ResourcesBack.RecoverCnt);
|
}
|
}
|
CA553.Type = 1;
|
}
|
else if (type == 2)
|
{
|
foreach (int key in resourcesBackModel.ResourcesBackDic.Keys)
|
{
|
var ResourcesBack = resourcesBackModel.ResourcesBackDic[key];
|
if (ResourcesBack.RecoverCnt > 0)
|
{
|
indexList.Add((byte)key);
|
recoverCntList.Add((byte)(ResourcesBack.RecoverCnt));
|
}
|
}
|
CA553.Type = 0;
|
}
|
CA553.Cnt = (byte)indexList.ToArray().Length;
|
CA553.IndexList = indexList.ToArray();
|
CA553.RecoverCntList = recoverCntList.ToArray();
|
GameNetSystem.Instance.SendInfo(CA553);
|
}
|
|
private void FairyJadeToggle(bool _bool)
|
{
|
if (_bool)
|
{
|
IsBool = true;
|
Sequencing();
|
OnCreateGridLineCell(m_ScrollerController);
|
IsFindOneKey();
|
m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见
|
}
|
}
|
private void CopperCashToggle(bool _bool)
|
{
|
if (_bool)
|
{
|
IsBool = false;
|
Sequencing();
|
OnCreateGridLineCell(m_ScrollerController);
|
IsFindOneKey();
|
m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见
|
}
|
}
|
private void Sequencing()//关于排序
|
{
|
_list.Clear();
|
if (resourcesBackModel.ResourcesBackDic.Count == 0)
|
{
|
return;
|
}
|
foreach (int key in resourcesBackModel.ResourcesBackDic.Keys)
|
{
|
var value = resourcesBackModel.ResourcesBackDic[key];
|
if(!IsBool)
|
{
|
if(value.RecoverCnt == 0 && (value.HaveRecover == 0 || value.HaveRecover == 2))
|
{
|
continue;
|
}
|
}
|
_list.Add(value);
|
}
|
if (IsBool)
|
{
|
_list.Sort(CostJadeCompare);
|
}
|
else
|
{
|
_list.Sort(Compare);
|
}
|
|
}
|
|
int CostJadeCompare(ResourcesBackClass x, ResourcesBackClass y)//仙玉数组排列
|
{
|
ResourcesBackClass xPack = resourcesBackModel.ResourcesBackDic[x.ID];
|
ResourcesBackClass yPack = resourcesBackModel.ResourcesBackDic[y.ID];
|
bool havex = (xPack.RecoverCnt > 0 || xPack.ExtraCnt > 0);
|
bool havey = (yPack.RecoverCnt > 0 || yPack.ExtraCnt > 0);
|
if (havex.CompareTo(havey) != 0) return -havex.CompareTo(havey);
|
if (xPack.ID.CompareTo(yPack.ID) != 0) return xPack.ID.CompareTo(yPack.ID);
|
|
return 1;
|
}
|
|
int Compare(ResourcesBackClass x, ResourcesBackClass y)//铜钱数组排列
|
{
|
ResourcesBackClass xPack = resourcesBackModel.ResourcesBackDic[x.ID];
|
ResourcesBackClass yPack = resourcesBackModel.ResourcesBackDic[y.ID];
|
bool havex = (xPack.RecoverCnt > 0);
|
bool havey = (yPack.RecoverCnt > 0);
|
if (havex.CompareTo(havey) != 0) return -havex.CompareTo(havey);
|
if (xPack.ID.CompareTo(yPack.ID) != 0) return xPack.ID.CompareTo(yPack.ID);
|
|
return 1;
|
}
|
|
private bool IsFind()//能否找回(包括Vip)
|
{
|
if (IsBool)
|
{
|
foreach (var value in resourcesBackModel.ResourcesBackDic.Values)
|
{
|
if (value.RecoverCnt > 0 || value.ExtraCnt > 0)
|
{
|
return true;
|
}
|
}
|
}
|
else
|
{
|
foreach (var value in resourcesBackModel.ResourcesBackDic.Values)
|
{
|
if (value.RecoverCnt > 0)
|
{
|
return true;
|
}
|
}
|
}
|
return false;
|
}
|
|
private bool IsFairyJade()//非Vip是否能找回判断
|
{
|
|
bool IsNumFairyJade = false;
|
foreach (var value in resourcesBackModel.ResourcesBackDic.Values)
|
{
|
if (value.RecoverCnt > 0)
|
{
|
IsNumFairyJade = true;
|
}
|
}
|
if (IsBool && IsNumFairyJade)
|
{
|
return true;
|
}
|
return false;
|
}
|
|
private void ToggleSelected()//Toggle选中
|
{
|
if (resourcesBackModel.ResourcesBackDic.Count <= 0)
|
{
|
return;
|
}
|
int Type1 = 0;
|
int Type2 = 0;
|
foreach (var key in resourcesBackModel.ResourcesBackDic.Keys)
|
{
|
Type1 += resourcesBackModel.ResourcesBackDic[key].RecoverCnt;
|
Type2 += resourcesBackModel.ResourcesBackDic[key].ExtraCnt;
|
}
|
if (Type1 > 0)//选中免费
|
{
|
IsBool = false;
|
m_FairyJadeToggle.isOn = false;
|
m_CopperCashToggle.isOn = true;
|
}
|
else if (Type2 > 0)//选中绑玉
|
{
|
IsBool = true;
|
m_FairyJadeToggle.isOn = true;
|
m_CopperCashToggle.isOn = false;
|
}
|
else//选中免费
|
{
|
IsBool = false;
|
m_FairyJadeToggle.isOn = false;
|
m_CopperCashToggle.isOn = true;
|
}
|
}
|
}
|
|
|
|
}
|