From 82931aabaaa3e479bc04e11630a77cd9c9dd5fe3 Mon Sep 17 00:00:00 2001
From: client_Wu Xijin <364452445@qq.com>
Date: 星期五, 26 十月 2018 20:05:36 +0800
Subject: [PATCH] Merge branch 'master' into leonard
---
System/OpenServerActivity/OSGiftModel.cs | 234 +++++++++++++++++++++++++++++++++-------------------------
1 files changed, 132 insertions(+), 102 deletions(-)
diff --git a/System/OpenServerActivity/OSGiftModel.cs b/System/OpenServerActivity/OSGiftModel.cs
index 0b091de..d0ad6e8 100644
--- a/System/OpenServerActivity/OSGiftModel.cs
+++ b/System/OpenServerActivity/OSGiftModel.cs
@@ -10,9 +10,8 @@
{
public override void Init()
{
- PlayerDatas.Instance.PlayerDataRefreshInfoEvent += PlayerDataRefreshInfoEvent;
+ ParseConfig();
storeModel.RefreshBuyShopLimitEvent += RefreshBuyShopLimitEvent;
- vipModel.firstChargeRewardEvent += FirstChargeRewardEvent;
OpenServerActivityCenter.Instance.Register(6, this);
}
@@ -21,9 +20,13 @@
}
+ public void OnBeforePlayerDataInitialize()
+ {
+ startSeconds = 0;
+ }
+
public void OnPlayerLoginOk()
{
- activate = CheckActivate();
if (onStateUpate != null)
{
onStateUpate(6);
@@ -32,25 +35,15 @@
}
public event Action<int> onStateUpate;
- public event Action timeLimitUpdate;
+ public event Action onSelectUpdate;
- public bool activate { get; private set; }
-
- StoreModel storeModel
- {
- get
- {
- return ModelCenter.Instance.GetModel<StoreModel>();
- }
- }
-
- VipModel vipModel { get { return ModelCenter.Instance.GetModel<VipModel>(); } }
+ StoreModel storeModel { get { return ModelCenter.Instance.GetModel<StoreModel>(); } }
public bool IsOpen
{
get
{
- return CheckActivate();
+ return IsExist();
}
}
@@ -58,25 +51,16 @@
{
get
{
- return OSGiftRedpoint.state == RedPointState.Simple;
- }
- }
-
- private void RefreshBuyShopLimitEvent()
- {
- bool _activate = CheckActivate();
- if (activate != _activate)
- {
- activate = _activate;
- if (onStateUpate != null)
+ for (int i = 0; i < redpoints.Count; i++)
{
- onStateUpate(6);
+ if (redpoints[i].state == RedPointState.Simple)
+ {
+ return true;
+ }
}
- UpdateRedpoint();
+ return false;
}
}
-
- public int timeOverdueGiftId { get; private set; }
public bool IsAdvance
{
@@ -86,80 +70,94 @@
}
}
- public DateTime overDueTime = DateTime.Now;
+ int m_SelectIndex = 0;
+ public int selectIndex
+ {
+ get { return m_SelectIndex; }
+ set
+ {
+ if (value != m_SelectIndex)
+ {
+ m_SelectIndex = value;
+ if (onSelectUpdate != null)
+ {
+ onSelectUpdate();
+ }
+ }
+ m_SelectIndex = value;
+ }
+ }
+
+ public int jumpGiftId { get; set; }
+
+ public List<SuperValueGift> gifts { get; private set; }
+ public List<int> alreadyOpens { get; private set; }
+ void ParseConfig()
+ {
+ gifts = new List<SuperValueGift>();
+ alreadyOpens = new List<int>();
+ var config = Config.Instance.Get<FuncConfigConfig>("SuperGiftTimeList");
+ var array = LitJson.JsonMapper.ToObject<int[][]>(config.Numerical1);
+ for (int i = 0; i < array.Length; i++)
+ {
+ gifts.Add(new SuperValueGift()
+ {
+ giftId = array[i][0],
+ openDays = array[i][1],
+ });
+ }
+
+ for (int i = 0; i < gifts.Count; i++)
+ {
+ redpoints.Add(new Redpoint(MainRedDot.REDPOINT_OPENSERVER, 20906 * 100 + i));
+ }
+ }
+
+ private void RefreshBuyShopLimitEvent()
+ {
+ UpdateRedpoint();
+ }
+
+ public uint startSeconds { get; private set; }
public void UpdateTime(HAA16_tagMCSuperGiftInfo package)
{
- timeOverdueGiftId = (int)package.GiftID;
- overDueTime = ParseOverdueTime(package.EndtDate);
- bool _activate = CheckActivate();
- if (activate != _activate)
+ startSeconds = package.StartTime;
+ if (onStateUpate != null)
{
- activate = _activate;
- if (onStateUpate != null)
- {
- onStateUpate(6);
- }
- }
- if (timeLimitUpdate != null)
- {
- timeLimitUpdate();
+ onStateUpate(6);
}
UpdateRedpoint();
}
- DateTime ParseOverdueTime(string _date)
+ public bool IsExist()
{
- var array = _date.Split('-');
- var year = int.Parse(array[0]);
- var month = int.Parse(array[1]);
- var day = int.Parse(array[2]);
- var time = new DateTime(year, month, day, 0, 0, 0);
- return time.AddDays(1);
- }
-
- private void FirstChargeRewardEvent()
- {
- bool _activate = CheckActivate();
- if (activate != _activate)
+ for (int i = 0; i < gifts.Count; i++)
{
- activate = _activate;
- if (onStateUpate != null)
- {
- onStateUpate(6);
- }
- }
- UpdateRedpoint();
- }
-
- public bool CheckActivate()
- {
- if (PlayerDatas.Instance.baseData.coinPointTotal == 0
- || !ModelCenter.Instance.GetModel<VipModel>().firstChargeRewardGet)
- {
- return false;
- }
- List<StoreConfig> _list = null;
- StoreConfig.TryGetStoreConfigs((int)StoreFunc.OSGift,out _list);
- for (int i = 0; i < _list.Count; i++)
- {
- if (IsGiftOverdue(_list[i].ID))
+ if (!IsGiftExist(gifts[i].giftId))
{
continue;
}
- var _limit = storeModel.GetBuyShopLimit((uint)_list[i].ID);
- if (_limit == null || _limit.BuyCnt < _list[i].PurchaseNumber[0])
- {
- return true;
- }
+ return true;
}
return false;
}
- public bool IsGiftOverdue(int _id)
+ public bool IsGiftExist(int _id)
{
- if (_id == timeOverdueGiftId)
+ if (startSeconds == 0)
{
- return TimeUtility.ServerNow >= overDueTime;
+ return false;
+ }
+ var gift = gifts.Find((x) =>
+ {
+ return x.giftId == _id;
+ });
+ if (!gift.Equals(default(SuperValueGift)))
+ {
+ var startTime = TimeUtility.GetTime(startSeconds);
+ var endTime = startTime.AddDays(gift.openDays);
+ endTime = new DateTime(endTime.Year, endTime.Month, endTime.Day, 0, 0, 0);
+ return TimeUtility.ServerNow < endTime;
}
return true;
}
@@ -176,43 +174,75 @@
return false;
}
- private void PlayerDataRefreshInfoEvent(PlayerDataRefresh _type)
+ public void SetAreadyOpens()
{
- bool _activate = CheckActivate();
- if (_type == PlayerDataRefresh.ChangeCoinPointTotal && activate != _activate)
+ alreadyOpens.Clear();
+ for (int i = 0; i < gifts.Count; i++)
{
- activate = _activate;
- if (onStateUpate != null)
+ if (IsGiftExist(gifts[i].giftId))
{
- onStateUpate(6);
+ alreadyOpens.Add(i);
}
}
}
- public void OnBeforePlayerDataInitialize()
+ public int GetDefaultSelect()
{
- timeOverdueGiftId = 0;
+ for (int i = 0; i < alreadyOpens.Count; i++)
+ {
+ if (gifts[i].giftId == jumpGiftId)
+ {
+ jumpGiftId = 0;
+ return alreadyOpens[i];
+ }
+ }
+ jumpGiftId = 0;
+ for (int i = 0; i < alreadyOpens.Count; i++)
+ {
+ if (redpoints[alreadyOpens[i]].state == RedPointState.Simple)
+ {
+ return alreadyOpens[i];
+ }
+ }
+ return alreadyOpens[0];
}
- public void SetDayRemind()
+ bool GetDayRemind(int index)
{
- if (OSGiftRedpoint.state == RedPointState.Simple)
+ return LocalSave.GetInt(StringUtility.Contact("OSGift_", index, "_",
+ PlayerDatas.Instance.baseData.PlayerID), 0) == TimeUtility.Day;
+ }
+
+ public void SetDayRemind(int index)
+ {
+ if (redpoints[index].state == RedPointState.Simple)
{
- DayRemind.Instance.SetDayRemind(DayRemind.OSGIFT_REDPOINT, true);
+ LocalSave.SetInt(StringUtility.Contact("OSGift_", index, "_",
+ PlayerDatas.Instance.baseData.PlayerID), TimeUtility.Day);
UpdateRedpoint();
}
}
+ List<Redpoint> redpoints = new List<Redpoint>();
+
void UpdateRedpoint()
{
- OSGiftRedpoint.state = RedPointState.None;
- if (CheckActivate() && !DayRemind.Instance.GetDayRemind(DayRemind.OSGIFT_REDPOINT))
+ for (int i = 0; i < redpoints.Count; i++)
{
- OSGiftRedpoint.state = RedPointState.Simple;
+ redpoints[i].state = RedPointState.None;
+ if (IsGiftExist(gifts[i].giftId) && !IsGiftBuy(gifts[i].giftId)
+ && !GetDayRemind(i))
+ {
+ redpoints[i].state = RedPointState.Simple;
+ }
}
}
- public Redpoint OSGiftRedpoint = new Redpoint(MainRedDot.REDPOINT_OPENSERVER, 20906);
+ public struct SuperValueGift
+ {
+ public int giftId;
+ public int openDays;
+ }
}
}
--
Gitblit v1.8.0