using System.Linq;
using BingoBrain.Core;
namespace BingoBrain
{
public class JTodModel : BaseModel
{
///
/// 签到持续时间
///
public int DailyDonusContinueTime;
public int GetDailyDonusDay()
{
var val = GameHelper.GetNowTime() - PreferencesMgr.Instance.OpenDailyBonusStampTime;
if (val <= 0)
{
val = 1;
}
var daySum = val / GameHelper.sunSecond;
if (val % GameHelper.sunSecond > 0)
{
daySum++;
}
if (daySum > PreferencesMgr.Instance.DailyBonusItemLst.Count)
{
SetDailyBonusItem();
return GetDailyDonusDay();
}
return (int)daySum;
}
public string GetDailyDonusDayTime()
{
return GameHelper.GetInterval(GameHelper.GetTomorrowCountTime());
}
#region 生命周期
protected override void OnInit()
{
}
protected override void OnDispose()
{
}
protected override void OnReset()
{
}
#endregion
#region 读取数据
protected override void OnReadData()
{
var signDailyRewardModel = GameHelper.GetConfig();
DailyDonusContinueTime = GameHelper.sunSecond * signDailyRewardModel.GetCount();
}
#endregion
#region 消息
protected override void AddListener()
{
ctrlDispatcher.AddListener(CtrlMsg.Game_StartLater, InitData);
}
private void InitData(object o)
{
GetDailyDonusDay();
if (PreferencesMgr.Instance.DailyBonusItemLst.Count == 0)
{
SetDailyBonusItem();
}
Hall.Instance.UpdateSecondEvent += CheckData;
}
private void CheckData()
{
PreferencesMgr.Instance.DailyBonusItemLst.Clear();
var val = GameHelper.GetNowTime() - PreferencesMgr.Instance.OpenDailyBonusStampTime;
// 刷新签到
if (PreferencesMgr.Instance.DailyBonusItemLst.Count == 0 || val >= DailyDonusContinueTime)
{
SetDailyBonusItem();
}
}
private void SetDailyBonusItem()
{
PreferencesMgr.Instance.DailyBonusItemLst.Clear();
var signDailyRewardModel = GameHelper.GetConfig();
if (signDailyRewardModel != null)
{
foreach (var bonusItem in signDailyRewardModel.GetDataList().Select(item => new DailyBonusItem
{
id = item.item1,
quantity = item.quantity[0],
isDouble = item.isMulti,
cont_index = item.cont_index,
IsCollect = false
}))
{
PreferencesMgr.Instance.DailyBonusItemLst.Add(bonusItem);
}
PreferencesMgr.Instance.OpenDailyBonusStampTime = GameHelper.GetNowTime();
}
}
protected override void RemoveListener()
{
ctrlDispatcher.RemoveListener(CtrlMsg.Game_Start, InitData);
}
#endregion
}
}
public class DailyBonusItem
{
///
/// 奖励id
///
public int id;
///
/// 奖励数量
///
public float quantity;
///
/// 是否翻倍
///
public bool isDouble;
///
/// 控制器索引
///
public int cont_index;
///
/// 是否领取过奖励
///
public bool IsCollect;
}