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; }