//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Monday, January 15, 2018 //-------------------------------------------------------- using UnityEngine; using System.Collections; using UnityEngine.UI; using System; using System.Collections.Generic; using TableConfig; namespace Snxxz.UI { public class ResourcesBackPanel : MonoBehaviour { [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_CopperImage; [SerializeField] Image m_FairyJadeImage; [SerializeField] GameObject m_Container_NoRecords; ResourcesBackModel m_ResourcesBackModel; ResourcesBackModel resourcesBackModel { get { return m_ResourcesBackModel ?? (m_ResourcesBackModel = ModelCenter.Instance.GetModel()); } } GetItemPathModel _GetItemPath; GetItemPathModel GetItemPath { get { return _GetItemPath ?? (_GetItemPath = ModelCenter.Instance.GetModel()); } } PackModelInterface packModelInterface = new PackModelInterface(); public static event Action IsAccordingRedPoint; List _list = new List();//用来控制进行排序 private bool IsBool = true; private int OneKeyResourcesBackNum = 0; private void Awake() { m_FairyJadeToggle.isOn = true; m_CopperCashToggle.isOn = false; } private void OnEnable() { 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); } private void Start() { m_GetTipsBtn.AddListener(OnClickGetTipsButton); m_FindAKeyBtn.AddListener(OnClickFindAKeyButton); m_FairyJadeToggle.onValueChanged.AddListener(FairyJadeToggle); m_CopperCashToggle.onValueChanged.AddListener(CopperCashToggle); m_NotVipFindAKeyBtn.AddListener(OnClickNoVipFindAKeyButton); } private void OnDisable() { m_ScrollerController.OnRefreshCell -= OnRefreshGridCell; ResourcesBackModel.ResourcesBackUpdateEvent -= OnResourcesBackUpdate; if (IsAccordingRedPoint != null) { IsAccordingRedPoint(); } } private void OnResourcesBackUpdate() { Sequencing(); OnCreateGridLineCell(m_ScrollerController); IsFindOneKey(); } private void IsFindOneKey() { if (IsFind()) { if (IsBool) { m_FairyJadeImage.gameObject.SetActive(true); m_Text_1.SetActive(true); m_Text_2.SetActive(false); m_CopperImage.gameObject.SetActive(false); } else { m_FairyJadeImage.gameObject.SetActive(false); m_Text_1.SetActive(false); m_Text_2.SetActive(true); m_CopperImage.gameObject.SetActive(true); } m_FindAKeyBtn.gameObject.SetActive(true); } else { m_FindAKeyBtn.gameObject.SetActive(false); } if (IsFairyJade()) { m_NotVipFindAKeyBtn.gameObject.SetActive(true); } else { m_NotVipFindAKeyBtn.gameObject.SetActive(false); } } private void OnCreateGridLineCell(ScrollerController gridCtrl) { gridCtrl.Refresh(); if (_list.Count == 0) { return; } int Line = Mathf.CeilToInt((float)_list.Count / 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.gameObject.SetActive(false); int cellCount = (cell.transform.childCount) * gridlineIndex + (childCode + 1); if (cellCount - 1 < resourcesBackModel.ResourcesBackDic.Count) { resourcesBackBoxBack.gameObject.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(2);//绑玉 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(2) + (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(); } } }); } 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(2);//绑玉 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(2) + (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(); } } }); } private void FindAKeyCoins()//一键找铜钱 { int NeedCoinsNumber = 0; foreach (int key in resourcesBackModel.ResourcesBackDic.Keys) { var ResourcesBack = resourcesBackModel.ResourcesBackDic[key]; if (ResourcesBack.RecoverCnt > 0) { NeedCoinsNumber += ResourcesBack.RecoverCnt * ResourcesBack.CostCopper; } } int costCopper = (int)UIHelper.GetMoneyCnt(3); ;//铜钱 string strLanguage = string.Format(Language.Get("NewResourceBack2"), packModelInterface.OnChangeCoinsUnit((ulong)NeedCoinsNumber)); ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), strLanguage, (bool isOk) => { if (isOk) { if (costCopper >= NeedCoinsNumber) { RecoverGain(1); m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见 } else { GetItemPath.SetChinItemModel(2100); } } }); } List indexList = new List(); List recoverCntList = new List(); 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(); IsFindOneKey(); m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见 } } private void CopperCashToggle(bool _bool) { if (_bool) { IsBool = false; Sequencing(); IsFindOneKey(); m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见 } } private void Sequencing()//关于排序 { _list.Clear(); if (resourcesBackModel.ResourcesBackDic.Count == 0) { return; } foreach (int key in resourcesBackModel.ResourcesBackDic.Keys) { _list.Add(resourcesBackModel.ResourcesBackDic[key]); } 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; } } }