using vnxbqy.UI;
|
using System;
|
using System.Collections.Generic;
|
using UnityEngine.UI;
|
using System.Linq;
|
using LitJson;
|
|
|
//极品白拿
|
public class NeedForWhiteClass
|
{
|
public int ID;//ID
|
public int NeedMoney;//需要仙玉
|
public int BuyState; // 购买状态 0-未购买 1-已领返还 其他数值-time值购买时间
|
public string Name;//礼包名
|
public int Day;//返还天数
|
public float AddPower;//提升的战力
|
public NeedForWhiteModel.NeedForWhiteItem AwardItem;//奖励信息
|
|
}
|
|
public class NeedForWhiteModel : ILModel<NeedForWhiteModel>
|
{
|
public Dictionary<int, NeedForWhiteClass> NeedForWhiteDic = new Dictionary<int, NeedForWhiteClass>();
|
public int FreeGoodsOpenTimeS = 0;//总时间
|
public int OpenTimeS = 0;//活动开始的时间
|
public event Action UpdateNeedForWhiteEvent;
|
Redpoint redpoint = new Redpoint(MainRedPoint.jpbnRedPoint);
|
protected override void Init()
|
{
|
var FreeGoodsOpenTime = FuncConfigConfig.Get("FreeGoodsOpenTime");
|
FreeGoodsOpenTimeS = int.Parse(FreeGoodsOpenTime.Numerical1);
|
GameEvent.OnDayEvent += DayEvent;
|
GameEvent.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitialize;
|
ParseConfig();
|
}
|
protected override void UnInit()
|
{
|
GameEvent.OnDayEvent -= DayEvent;
|
GameEvent.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitialize;
|
}
|
public void OnBeforePlayerDataInitialize()
|
{
|
OpenTimeS = 0;
|
|
var keyList = NeedForWhiteDic.Keys.ToList();
|
for (int i = 0; i < keyList.Count; i++)
|
{
|
NeedForWhiteDic[keyList[i]].BuyState = 0;
|
}
|
}
|
|
public void OnPlayerLoginOk()
|
{
|
}
|
|
public void ParseConfig()
|
{
|
var FreeGood = ILFreeGoodsConfig.GetKeys();
|
NeedForWhiteDic.Clear();
|
|
for (int i = 0; i < FreeGood.Count; i++)
|
{
|
var Value = ILFreeGoodsConfig.Get(FreeGood[i]);
|
var NeedForWhite = new NeedForWhiteClass();
|
NeedForWhite.ID = Value.ID;
|
NeedForWhite.NeedMoney = Value.NeedMoney;
|
NeedForWhite.BuyState = 0;
|
NeedForWhite.Name = Value.Name;
|
NeedForWhite.Day = Value.Day;
|
NeedForWhite.AddPower = Value.AddPower;
|
var awardItem = new NeedForWhiteItem();
|
var _jsonData = JsonMapper.ToObject(Value.AwardItem);
|
var keyList = _jsonData.Keys.ToList();
|
for (int k = 0; k < keyList.Count; k++)
|
{
|
var key = keyList[k];
|
var _job = int.Parse(key);
|
var _itemArray = JsonMapper.ToObject<int[][]>(_jsonData[key].ToJson());
|
for (int j = 0; j < _itemArray.Length; j++)
|
{
|
awardItem.Add(_job, new ItemEx(_itemArray[j][0], _itemArray[j][1], _itemArray[j][2]));
|
}
|
}
|
NeedForWhite.AwardItem = awardItem;
|
NeedForWhiteDic.Add(Value.ID, NeedForWhite);
|
}
|
}
|
|
public class NeedForWhiteItem
|
{
|
private Dictionary<int, List<ItemEx>> m_AwardDict = new Dictionary<int, List<ItemEx>>();
|
|
public List<ItemEx> GetAwardItem(int _job)
|
{
|
List<ItemEx> _items = null;
|
m_AwardDict.TryGetValue(_job, out _items);
|
return _items;
|
}
|
public void Add(int _job, ItemEx _item)
|
{
|
List<ItemEx> _list = null;
|
if (!m_AwardDict.TryGetValue(_job, out _list))
|
{
|
_list = new List<ItemEx>();
|
m_AwardDict.Add(_job, _list);
|
}
|
_list.Add(_item);
|
}
|
}
|
|
public void FreeGoodsInfo(IL_HA318_tagMCFreeGoodsInfo Info)
|
{
|
OpenTimeS = (int)Info.OpenTime;
|
for (int i = 0; i < Info.Count; i++)
|
{
|
var Id = Info.FreeGoodsList[i].ID;
|
if (NeedForWhiteDic.ContainsKey(Id))
|
{
|
NeedForWhiteDic[Id].BuyState = (int)Info.FreeGoodsList[i].BuyState;
|
}
|
|
}
|
if (UpdateNeedForWhiteEvent != null)
|
{
|
UpdateNeedForWhiteEvent();
|
}
|
|
UpdateRedpoint();
|
}
|
|
public void BuyReceive(int ID)
|
{
|
var SendInfo = new CA504_tagCMPlayerGetReward();
|
SendInfo.RewardType = 10;
|
SendInfo.DataEx = (uint)ID;
|
GameNetSystem.Instance.SendInfo(SendInfo);
|
}
|
|
public int GetCloseSeconds()
|
{
|
var overTime = TimeUtility.GetTime((uint)(OpenTimeS + FreeGoodsOpenTimeS));
|
if (TimeUtility.ServerNow > overTime)
|
{
|
return 0;
|
}
|
|
return (int)(overTime - TimeUtility.ServerNow).TotalSeconds;
|
}
|
|
//开启时间+持续时间 所有礼包buystate>1 即有未返还
|
public bool IsOpen()
|
{
|
if (!FuncOpen.Instance.IsFuncOpen(130))
|
{
|
return false;
|
}
|
|
if (TimeUtility.ServerNow <= TimeUtility.GetTime((uint)(OpenTimeS + FreeGoodsOpenTimeS)))
|
{
|
return true;
|
}
|
|
var keyList = NeedForWhiteDic.Keys.ToList();
|
for (int i = 0; i < keyList.Count; i++)
|
{
|
if (NeedForWhiteDic[keyList[i]].BuyState > 1)
|
{
|
//未返还
|
return true;
|
}
|
}
|
return false;
|
}
|
|
//-1 未购买 -2已领取 -3可领取 -4过期 其他数值为倒计时时间秒
|
public int GetState(int id)
|
{
|
if (NeedForWhiteDic.ContainsKey(id))
|
{
|
var state = NeedForWhiteDic[id].BuyState;
|
if (state > 1)
|
{
|
DateTime serverDay = new DateTime(TimeUtility.Year, TimeUtility.Month, TimeUtility.Day, 0, 0, 0);
|
DateTime buyTime = TimeUtility.GetTime((uint)state);
|
DateTime buyDay = new DateTime(buyTime.Year, buyTime.Month, buyTime.Day, 0, 0, 0);
|
DateTime getDay = buyDay.AddDays(NeedForWhiteDic[id].Day);
|
if ((serverDay - buyDay).Days >= NeedForWhiteDic[id].Day)
|
{
|
//可领取
|
return -3;
|
}
|
|
//倒计时
|
return Math.Max((int)(getDay - TimeUtility.ServerNow).TotalSeconds, 0);
|
}
|
else if (state == 0)
|
{
|
if (TimeUtility.ServerNow > TimeUtility.GetTime((uint)(OpenTimeS + FreeGoodsOpenTimeS)))
|
{
|
//过期
|
return -4;
|
}
|
//未购买
|
return -1;
|
}
|
else
|
{
|
//已领取
|
return -2;
|
}
|
}
|
//未购买
|
return -1;
|
}
|
|
public void UpdateRedpoint()
|
{
|
redpoint.state = RedPointState.None;
|
|
var keyList = NeedForWhiteDic.Keys.ToList();
|
for (int i = 0; i < keyList.Count; i++)
|
{
|
if (NeedForWhiteDic[keyList[i]].BuyState > 1)
|
{
|
if (GetState(keyList[i]) == -3)
|
{
|
redpoint.state = RedPointState.Simple;
|
return;
|
}
|
}
|
}
|
|
}
|
|
void DayEvent()
|
{
|
UpdateRedpoint();
|
}
|
|
}
|