using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using UnityEngine;
|
|
|
namespace vnxbqy.UI
|
{
|
|
public class FBHelpPointExchageModel : Model,IBeforePlayerDataInitialize,IPlayerLoginOk
|
{
|
public List<int> todayShoplist { get; private set; }
|
public List<int> lifeShoplist { get; private set; }
|
public List<int> helpPointShoplist = new List<int>();
|
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<StoreModel>(); } }
|
|
public override void Init()
|
{
|
|
}
|
|
public void OnBeforePlayerDataInitialize()
|
{
|
currentShopId = 0;
|
helpPointShoplist.Clear();
|
PlayerDatas.Instance.playerDataRefreshEvent -= UpdateFBHelpPoint;
|
storeModel.RefreshBuyShopLimitEvent -= UpdateBuyShop;
|
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.playerDataRefreshEvent += UpdateFBHelpPoint;
|
storeModel.RefreshBuyShopLimitEvent += UpdateBuyShop;
|
TimeMgr.Instance.OnDayEvent += UpdateDay;
|
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);
|
}
|
/// <summary>
|
/// 获取本地记录数据
|
/// </summary>
|
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<int>() : todayShoplist;
|
if(!todayShoplist.Contains(shopId))
|
{
|
todayShoplist.Add(shopId);
|
LocalSave.SetIntArray(shopDayLocalSave,todayShoplist.ToArray());
|
}
|
break;
|
case 2:
|
lifeShoplist = lifeShoplist == null ? new List<int>() : 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 UpdateBuyShop()
|
{
|
UpdateFBHelpPoint(PlayerDataType.FBHelpPoint);
|
}
|
|
private void UpdateFBHelpPoint(PlayerDataType type)
|
{
|
if (type != PlayerDataType.FBHelpPoint
|
|| !FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Store)) return;
|
|
var storeDatas = storeModel.TryGetStoreDatas(StoreFunc.IntegralStore);
|
if(storeDatas != null)
|
{
|
for(int i = 0; i < storeDatas.Count; i++)
|
{
|
var storeData = storeDatas[i];
|
int pushType = 0;
|
storeModel.TryGetPushTypeByShopId(storeData.shopId,out pushType);
|
if(pushType != 0)
|
{
|
int remainNum = 0;
|
bool isSellOut = storeModel.TryGetIsSellOut(storeData.storeConfig,out remainNum);
|
ulong haveMoney = UIHelper.GetMoneyCnt(storeData.storeConfig.MoneyType);
|
bool isEnoughMoney = haveMoney >= (ulong)storeData.storeConfig.MoneyNumber ? true : false;
|
if(!isSellOut && isEnoughMoney)
|
{
|
UpdateHelpPointShop(storeData.shopId);
|
}
|
}
|
}
|
}
|
|
for(int i = 0; i < helpPointShoplist.Count; i++)
|
{
|
var shopId = helpPointShoplist[i];
|
StoreConfig storeConfig = StoreConfig.Get(shopId);
|
int remainNum = 0;
|
ulong haveMoney = UIHelper.GetMoneyCnt(storeConfig.MoneyType);
|
bool isEnoughMoney = haveMoney >= (ulong)storeConfig.MoneyNumber ? true : false;
|
if (storeModel.TryGetIsSellOut(storeConfig,out remainNum) || !isEnoughMoney)
|
{
|
GetNextHelpPointShop(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);
|
}
|
int type = 0;
|
bool isPush = storeModel.TryGetPushTypeByShopId(shopId, out type);
|
if(isPush)
|
{
|
SetLocalSaveData(type, shopId);
|
}
|
}
|
|
private void UpdateHelpPointShop(int shopId)
|
{
|
StoreConfig storeConfig = StoreConfig.Get(shopId);
|
if (storeConfig == null) return;
|
|
if(!IsAlreadPush(shopId))
|
{
|
currentShopId = shopId;
|
AddHelpPointShop(shopId);
|
if (UpdateHelpPointShopEvent != null)
|
{
|
UpdateHelpPointShopEvent();
|
}
|
}
|
}
|
|
public void GetNextHelpPointShop(int shopId)
|
{
|
RemoveHelpPointShop(shopId);
|
int length = helpPointShoplist.Count;
|
currentShopId = length == 0 ? 0 : helpPointShoplist[length - 1];
|
if (UpdateHelpPointShopEvent != null)
|
{
|
UpdateHelpPointShopEvent();
|
}
|
}
|
|
public bool IsAlreadPush(int shopId)
|
{
|
int type = 0;
|
storeModel.TryGetPushTypeByShopId(shopId, out type);
|
switch (type)
|
{
|
case 1:
|
if(todayShoplist != null
|
&& todayShoplist.Contains(shopId))
|
{
|
return true;
|
}
|
break;
|
case 2:
|
if (lifeShoplist != null
|
&& lifeShoplist.Contains(shopId))
|
{
|
return true;
|
}
|
break;
|
}
|
return false;
|
}
|
}
|
}
|