using System; using System.Collections.Generic; using System.Linq; using System.Text; using UnityEngine; using TableConfig; namespace Snxxz.UI { [XLua.LuaCallCSharp] public class FBHelpPointExchageModel : Model,IBeforePlayerDataInitialize,IPlayerLoginOk { public List todayShoplist { get; private set; } public List lifeShoplist { get; private set; } public List helpPointShoplist = new List(); public string shopDayLocalSave { get; private set;} public string shopLifeLocalSave { get; private set;} public string curDayLocalSave { get; private set; } public int currentShopId { get; private set; } public event Action UpdateHelpPointShopEvent; StoreModel storeModel { get { return ModelCenter.Instance.GetModel(); } } public override void Init() { } public void OnBeforePlayerDataInitialize() { currentShopId = 0; helpPointShoplist.Clear(); PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= UpdateFBHelpPoint; storeModel.UpdateHelpPointExchangeEvent -= UpdateHelpPointShop; TimeMgr.Instance.OnDayEvent -= UpdateDay; } public void OnPlayerLoginOk() { int playerId = (int)PlayerDatas.Instance.baseData.PlayerID; shopDayLocalSave = StringUtility.Contact("ShopDayLocalSave",playerId); shopLifeLocalSave = StringUtility.Contact("ShopLifeLocalSave",playerId); curDayLocalSave = StringUtility.Contact("CurDayLocalSave",playerId); PlayerDatas.Instance.PlayerDataRefreshInfoEvent += UpdateFBHelpPoint; TimeMgr.Instance.OnDayEvent += UpdateDay; storeModel.UpdateHelpPointExchangeEvent += UpdateHelpPointShop; GetLocalSaveData(); } public override void UnInit() { } #region 本地记录数据的存储 private bool IsNewDay() { if(!PlayerPrefs.HasKey(curDayLocalSave)) { return true; } int saveDay = LocalSave.GetInt(curDayLocalSave); int serverDay = TimeUtility.ServerNow.Day; return serverDay != saveDay ? true : false; } private void SetCurDayLocalSave() { LocalSave.SetInt(curDayLocalSave,TimeUtility.ServerNow.Day); } /// /// 获取本地记录数据 /// private void GetLocalSaveData() { int[] dayShops = LocalSave.GetIntArray(shopDayLocalSave); todayShoplist = dayShops == null ? null : dayShops.ToList(); int[] lifeShops = LocalSave.GetIntArray(shopLifeLocalSave); lifeShoplist = lifeShops == null ? null : lifeShops.ToList(); if(IsNewDay()) { ClearShopDayLocalSave(); SetCurDayLocalSave(); } } public void SetLocalSaveData(int type,int shopId) { switch(type) { case 1: todayShoplist = todayShoplist == null ? new List() : todayShoplist; if(!todayShoplist.Contains(shopId)) { todayShoplist.Add(shopId); LocalSave.SetIntArray(shopDayLocalSave,todayShoplist.ToArray()); } break; case 2: lifeShoplist = lifeShoplist == null ? new List() : lifeShoplist; if (!lifeShoplist.Contains(shopId)) { lifeShoplist.Add(shopId); LocalSave.SetIntArray(shopLifeLocalSave, lifeShoplist.ToArray()); } break; } } public void ClearShopDayLocalSave() { PlayerPrefs.DeleteKey(shopDayLocalSave); if(todayShoplist != null) { todayShoplist.Clear(); } } #endregion private void UpdateDay() { ClearShopDayLocalSave(); } private void UpdateFBHelpPoint(PlayerDataRefresh type) { if (type != PlayerDataRefresh.FBHelpPoint) return; for(int i = 0; i < helpPointShoplist.Count; i++) { var shopId = helpPointShoplist[i]; if (!CheckShopIsCanBuy(shopId)) { RemoveHelpPointShop(shopId); } } } public void AddHelpPointShop(int shopId) { if(!helpPointShoplist.Contains(shopId)) { helpPointShoplist.Add(shopId); } } public void RemoveHelpPointShop(int shopId) { if (helpPointShoplist.Contains(shopId)) { helpPointShoplist.Remove(shopId); } } private void UpdateHelpPointShop(int shopId) { StoreConfig storeConfig = Config.Instance.Get(shopId); if (storeConfig == null) return; currentShopId = shopId; AddHelpPointShop(shopId); if(UpdateHelpPointShopEvent != null) { UpdateHelpPointShopEvent(); } } public bool IsAlreadPush(int shopId) { StoreConfig storeConfig = Config.Instance.Get(shopId); if (storeConfig == null) return false; ItemConfig itemConfig = Config.Instance.Get(storeConfig.ItemID); switch((ItemType)itemConfig.Type) { case ItemType.OfflineCard: break; case ItemType.MountDan: break; default: break; } return true; } public bool CheckShopIsCanBuy(int shopId) { StoreConfig storeConfig = Config.Instance.Get(shopId); if (storeConfig == null) return false; int canBuyCnt = 0; int addBuyCnt = 0; bool isLimitBuy = BuyItemPopModel.Instance.CheckIsLimitBuyCnt(storeConfig, out canBuyCnt, out addBuyCnt); BuyShopItemLimit shopItemLimit = storeModel.GetBuyShopLimit((uint)storeConfig.ID); int remainNum = canBuyCnt; if (shopItemLimit != null) { remainNum -= shopItemLimit.BuyCnt; } List list = StoreConfig.GetSellShoplist(); if (remainNum > 0 && list.Contains(storeConfig)) { return true; } return false; } } }