| Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA16_tagMCSuperGiftInfo.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/DailyQuest/DayRemind.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/OpenServerActivity/OSGiftBehaviour.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/OpenServerActivity/OSGiftModel.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/OpenServerActivity/OpenServerActivityCell.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/OpenServerActivity/OpenServerActivityWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/OpenServerActivity/OpenServerGiftWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/WindowJump/WindowJumpMgr.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA16_tagMCSuperGiftInfo.cs
@@ -4,16 +4,14 @@ // AA 16 通知超值礼包信息 #tagMCSuperGiftInfo public class HAA16_tagMCSuperGiftInfo : GameNetPackBasic { public uint GiftID; //商品ID public string EndtDate; // 结束日期 y-m-d public uint StartTime; public HAA16_tagMCSuperGiftInfo () { _cmd = (ushort)0xAA16; } public override void ReadFromBytes (byte[] vBytes) { TransBytes (out GiftID, vBytes, NetDataType.DWORD); TransBytes (out EndtDate, vBytes, NetDataType.Chars, 10); TransBytes (out StartTime, vBytes, NetDataType.DWORD); } } System/DailyQuest/DayRemind.cs
@@ -42,7 +42,6 @@ public const string POTENTIAL_NO_NOTIFY = "PotentialNoNotify"; public const string FLASHSALE_REDPOINT = "FlashSale_Redpoint"; public const string OSTIMEGIFT_REDPOINT = "OSTimeGift_Redpoint"; public const string OSGIFT_REDPOINT = "OSGitf_Redpoint"; public const string TASK_SKILL_HOLE = "TaskSkillHole"; public const string RUNE_SPECIAL_HOLE = "RuneSpecialHole"; public const string LEAGUE_NOTICE_REDPOINT = "LeagueNoticeRedpoint"; @@ -97,7 +96,6 @@ SetDayRemind(POTENTIAL_NO_NOTIFY); SetDayRemind(FLASHSALE_REDPOINT); SetDayRemind(OSTIMEGIFT_REDPOINT); SetDayRemind(OSGIFT_REDPOINT); SetDayRemind(TASK_SKILL_HOLE); SetDayRemind(RUNE_SPECIAL_HOLE); SetDayRemind(LEAGUE_NOTICE_REDPOINT); System/OpenServerActivity/OSGiftBehaviour.cs
@@ -166,7 +166,7 @@ return; case StoreFunc.OSGift: { if (giftModel.IsGiftOverdue(_storeConfig.ID)) if (!giftModel.IsGiftExist(_storeConfig.ID)) { SysNotifyMgr.Instance.ShowTip("ActiveOutTime"); return; System/OpenServerActivity/OSGiftModel.cs
@@ -9,9 +9,8 @@ { public override void Init() { PlayerDatas.Instance.PlayerDataRefreshInfoEvent += PlayerDataRefreshInfoEvent; ParseConfig(); storeModel.RefreshBuyShopLimitEvent += RefreshBuyShopLimitEvent; vipModel.firstChargeRewardEvent += FirstChargeRewardEvent; OpenServerActivityCenter.Instance.Register(6, this); } @@ -20,9 +19,13 @@ } public void OnBeforePlayerDataInitialize() { startSeconds = 0; } public void OnPlayerLoginOk() { activate = CheckActivate(); if (onStateUpate != null) { onStateUpate(6); @@ -31,25 +34,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(); } } @@ -57,25 +50,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 { @@ -85,80 +69,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; } @@ -175,43 +173,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; } } } System/OpenServerActivity/OpenServerActivityCell.cs
@@ -37,8 +37,8 @@ [SerializeField] UIEffect m_TitleEffect; public UIEffect titleEffect { get { return m_TitleEffect; } } private int m_Order = 0; public int order { get { return m_Order; } set { m_Order = value; } } private int m_ActivityType = 0; public int activityType { get { return m_ActivityType; } set { m_ActivityType = value; } } public void ChangeState(TitleBtnState _state) { System/OpenServerActivity/OpenServerActivityWin.cs
@@ -17,20 +17,25 @@ Dictionary<int, bool> m_ActivitySpreadDict = new Dictionary<int, bool>(); ImpactRankModel m_ImpactRankModel; ImpactRankModel impactRankModel { get { ImpactRankModel impactRankModel { get { return m_ImpactRankModel ?? (m_ImpactRankModel = ModelCenter.Instance.GetModel<ImpactRankModel>()); } } OSRedEnvelopeModel m_OSRedEnvelopeModel; OSRedEnvelopeModel envelopeModel { get { OSRedEnvelopeModel envelopeModel { get { return m_OSRedEnvelopeModel ?? (m_OSRedEnvelopeModel = ModelCenter.Instance.GetModel<OSRedEnvelopeModel>()); } } FairyLeagueModel fairyLeagueModel { get { return ModelCenter.Instance.GetModel<FairyLeagueModel>(); } } FairyGrabBossModel fairyGrabBossModel { get { return ModelCenter.Instance.GetModel<FairyGrabBossModel>(); } } OSGiftModel giftModel { get { return ModelCenter.Instance.GetModel<OSGiftModel>(); } } List<int> openActivitys = new List<int>(); List<int> priorityActivitys = new List<int>(); @@ -58,7 +63,7 @@ { m_ActivitySpreadDict[(int)m_CustomActivitys[i].activityType] = false; } var impactDefaultType= impactRankModel.GetDefaultSelectType(); var impactDefaultType = impactRankModel.GetDefaultSelectType(); if (impactRankModel.IsLock(impactDefaultType)) { impactDefaultType = impactRankModel.billRankCfgDict.Keys.First(); @@ -66,6 +71,7 @@ impactRankModel.presentSelectType = impactDefaultType; impactRankModel.gotoImpactRankType = 0; envelopeModel.selectType = 1; giftModel.SetAreadyOpens(); GlobalTimeEvent.Instance.secondEvent += SecondEvent; CheckAlreadyOpen(); UpdateFunctionBtns(); @@ -109,9 +115,27 @@ envelopeModel.selectType = envelopeModel.JumpType != 0 ? envelopeModel.JumpType : 1; envelopeModel.JumpType = 0; } if (functionOrder == 6) { giftModel.selectIndex = giftModel.GetDefaultSelect(); } UpdateFunctionBtns(); } OnOpenActivity(functionOrder); var index = functionOrder; if (alreadyOpenActivitys.Contains(6)) { if (functionOrder > 6) { index = functionOrder + giftModel.alreadyOpens.Count - 1; } else if (functionOrder == 6) { index = functionOrder + giftModel.selectIndex; } } m_ActivityCtrl.JumpIndex(index); } protected override void OnAfterOpen() @@ -155,6 +179,9 @@ { case OpenServerActivityCenter.OSActivityType.OSRedpack: envelopeModel.selectType = envelopeModel.m_RedAchieveRedpoint.state == RedPointState.Simple ? 1 : 2; break; case OpenServerActivityCenter.OSActivityType.OSGift: giftModel.selectIndex = giftModel.GetDefaultSelect(); break; } } @@ -244,16 +271,21 @@ private void RefreshOpenActivityCell(OpenServerActivityCell _cell) { var activityType = 0; activityType = _cell.index >= 1000 ? _cell.index / 1000 : _cell.index; var extraValue = _cell.index % 1000; var customActivity = m_CustomActivitys.Find((x) => { return (int)x.activityType == _cell.index; return (int)x.activityType == activityType; }); bool customIcon = !string.IsNullOrEmpty(customActivity.titleIcon); bool customIcon = !string.IsNullOrEmpty(customActivity.titleIcon) || (customActivity.titleIcons != null && customActivity.titleIcons.Count > 0); _cell.title.color = UIHelper.GetUIColor(TextColType.NavyBrown); OperationBase operationBase; switch (_cell.index) switch (activityType) { case 5: if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.MultipleExp, out operationBase)) @@ -298,37 +330,63 @@ break; default: _cell.title.gameObject.SetActive(!customIcon); _cell.title.text = Language.Get(StringUtility.Contact("OSActivityTitle_", _cell.index)); if (!customIcon) { _cell.title.text = Language.Get(StringUtility.Contact("OSActivityTitle_", _cell.index)); } break; } _cell.order = _cell.index; _cell.redpoint.redpointId = MainRedDot.REDPOINT_OPENSERVER * 100 + _cell.index; _cell.ChangeState(_cell.order == functionOrder ? TitleBtnState.Click : TitleBtnState.Normal); _cell.activityType = activityType; _cell.titleImage.gameObject.SetActive(customIcon); _cell.titleEffect.StopImediatly(); switch (activityType) { case 6: _cell.redpoint.redpointId = 20906 * 100 + extraValue; _cell.ChangeState(extraValue == giftModel.selectIndex && functionOrder == activityType ? TitleBtnState.Click : TitleBtnState.Normal); if (customIcon) { _cell.titleImage.SetSprite(customActivity.titleIcons[extraValue]); _cell.titleImage.SetNativeSize(); } if (customActivity.titleEffectIds != null && extraValue < customActivity.titleEffectIds.Count) { _cell.titleEffect.effect = customActivity.titleEffectIds[extraValue]; _cell.titleEffect.Play(); } break; default: _cell.redpoint.redpointId = MainRedDot.REDPOINT_OPENSERVER * 100 + activityType; _cell.ChangeState(_cell.activityType == functionOrder ? TitleBtnState.Click : TitleBtnState.Normal); if (customIcon) { _cell.titleImage.SetSprite(customActivity.titleIcon); _cell.titleImage.SetNativeSize(); } if (customActivity.titleEffectId != 0) { _cell.titleEffect.effect = customActivity.titleEffectId; _cell.titleEffect.Play(); } break; } _cell.downArrow.gameObject.SetActive(false); _cell.upArrow.gameObject.SetActive(false); _cell.titleImage.gameObject.SetActive(customIcon); if (customIcon) if (_cell.activityType == 0 || _cell.activityType == 2) { _cell.titleImage.SetSprite(customActivity.titleIcon); _cell.titleImage.SetNativeSize(); } _cell.titleEffect.StopImediatly(); if (customActivity.titleEffectId != 0) { _cell.titleEffect.effect = customActivity.titleEffectId; _cell.titleEffect.Play(); _cell.downArrow.gameObject.SetActive(m_ActivitySpreadDict[_cell.activityType]); _cell.upArrow.gameObject.SetActive(!m_ActivitySpreadDict[_cell.activityType]); } if (_cell.order == 0 || _cell.order == 2) { _cell.downArrow.gameObject.SetActive(m_ActivitySpreadDict[_cell.order]); _cell.upArrow.gameObject.SetActive(!m_ActivitySpreadDict[_cell.order]); } _cell.funcBtn.onClick.RemoveAllListeners(); _cell.funcBtn.onClick.AddListener(() => { OnActivityClick(_cell.order); OnActivityClick(_cell.activityType, extraValue); }); } @@ -402,6 +460,12 @@ m_ActivityCtrl.AddCell(ScrollerDataType.Normal, sort * 100 + 1); m_ActivityCtrl.AddCell(ScrollerDataType.Normal, sort * 100 + 2); break; case 6: for (int k = 0; k < giftModel.alreadyOpens.Count; k++) { m_ActivityCtrl.AddCell(ScrollerDataType.Header, sort * 1000 + giftModel.alreadyOpens[k]); } break; default: m_ActivityCtrl.AddCell(ScrollerDataType.Header, sort); break; @@ -411,9 +475,9 @@ m_ActivityCtrl.m_Scorller.RefreshActiveCellViews(); } private void OnActivityClick(int _order) private void OnActivityClick(int _order, int extra = 0) { if (functionOrder == _order) if (functionOrder == _order && _order != 6) { m_ActivitySpreadDict[_order] = !m_ActivitySpreadDict[_order]; UpdateFunctionBtns(); @@ -424,8 +488,20 @@ m_ActivitySpreadDict[functionOrder] = false; m_ActivitySpreadDict[_order] = true; } functionOrder = _order; OnOpenActivity(functionOrder); if (functionOrder != _order) { functionOrder = _order; OnOpenActivity(functionOrder); } switch (functionOrder) { case 6: giftModel.selectIndex = extra; break; } UpdateFunctionBtns(); } @@ -435,164 +511,52 @@ switch (_order) { case 0: if (windowState == WindowState.Opened) { WindowCenter.Instance.OpenWithoutAnimation<ImpactRankWin>(); } else { WindowCenter.Instance.Open<ImpactRankWin>(true); } WindowCenter.Instance.Open<ImpactRankWin>(true); break; case 1: if (windowState == WindowState.Opened) { WindowCenter.Instance.OpenWithoutAnimation<ConsumeRebateWin>(); } else { WindowCenter.Instance.Open<ConsumeRebateWin>(true); } WindowCenter.Instance.Open<ConsumeRebateWin>(true); break; case 2: if (windowState == WindowState.Opened) { WindowCenter.Instance.OpenWithoutAnimation<OpenServerRedEnvelopeWin>(); } else { WindowCenter.Instance.Open<OpenServerRedEnvelopeWin>(true); } WindowCenter.Instance.Open<OpenServerRedEnvelopeWin>(true); break; case 3: if (windowState == WindowState.Opened) { WindowCenter.Instance.OpenWithoutAnimation<OSTimeLimitGiftWin>(); } else { WindowCenter.Instance.Open<OSTimeLimitGiftWin>(true); } WindowCenter.Instance.Open<OSTimeLimitGiftWin>(true); break; case 4: if (windowState == WindowState.Opened) { WindowCenter.Instance.OpenWithoutAnimation<FlashSaleWin>(); } else { WindowCenter.Instance.Open<FlashSaleWin>(true); } WindowCenter.Instance.Open<FlashSaleWin>(true); break; case 5: if (windowState == WindowState.Opened) { WindowCenter.Instance.OpenWithoutAnimation<MultipleExpWin>(); } else { WindowCenter.Instance.Open<MultipleExpWin>(true); } WindowCenter.Instance.Open<MultipleExpWin>(true); break; case 6: if (windowState == WindowState.Opened) { WindowCenter.Instance.OpenWithoutAnimation<OpenServerGiftWin>(); } else { WindowCenter.Instance.Open<OpenServerGiftWin>(true); } WindowCenter.Instance.Open<OpenServerGiftWin>(true); break; case 7: if (windowState == WindowState.Opened) { WindowCenter.Instance.OpenWithoutAnimation<LimitedTimePackageWin>(); } else { WindowCenter.Instance.Open<LimitedTimePackageWin>(true); } WindowCenter.Instance.Open<LimitedTimePackageWin>(true); break; case 8: if (windowState == WindowState.Opened) { WindowCenter.Instance.OpenWithoutAnimation<NPracticePointWin>(); } else { WindowCenter.Instance.Open<NPracticePointWin>(true); } WindowCenter.Instance.Open<NPracticePointWin>(true); break; case 9: if (windowState == WindowState.Opened) { WindowCenter.Instance.OpenWithoutAnimation<BossRebornWin>(); } else { WindowCenter.Instance.Open<BossRebornWin>(true); } WindowCenter.Instance.Open<BossRebornWin>(true); break; case 10: if (windowState == WindowState.Opened) { WindowCenter.Instance.OpenWithoutAnimation<FairyJadeInvestmentWin>(); } else { WindowCenter.Instance.Open<FairyJadeInvestmentWin>(true); } WindowCenter.Instance.Open<FairyJadeInvestmentWin>(true); break; case 11: if (windowState == WindowState.Opened) { WindowCenter.Instance.OpenWithoutAnimation<VipInvestWin>(); } else { WindowCenter.Instance.Open<VipInvestWin>(true); } WindowCenter.Instance.Open<VipInvestWin>(true); break; case 12: if (windowState == WindowState.Opened) { WindowCenter.Instance.OpenWithoutAnimation<FairyLeagueNoticeWin>(); } else { WindowCenter.Instance.Open<FairyLeagueNoticeWin>(true); } WindowCenter.Instance.Open<FairyLeagueNoticeWin>(true); break; case 13: if (windowState == WindowState.Opened) { WindowCenter.Instance.OpenWithoutAnimation<FairyGrabBossNoticeWin>(); } else { WindowCenter.Instance.Open<FairyGrabBossNoticeWin>(true); } WindowCenter.Instance.Open<FairyGrabBossNoticeWin>(true); break; case 14: if (windowState == WindowState.Opened) { WindowCenter.Instance.OpenWithoutAnimation<FlashRushToBuyWin>(); } else { WindowCenter.Instance.Open<FlashRushToBuyWin>(true); } WindowCenter.Instance.Open<FlashRushToBuyWin>(true); break; case 15: if (windowState == WindowState.Opened) { WindowCenter.Instance.OpenWithoutAnimation<WishingPoolWin>(); } else { WindowCenter.Instance.Open<WishingPoolWin>(true); } WindowCenter.Instance.Open<WishingPoolWin>(true); break; } } @@ -679,6 +643,9 @@ public OpenServerActivityCenter.OSActivityType activityType; public string titleIcon; public int titleEffectId; public List<string> titleIcons; public List<int> titleEffectIds; } } } System/OpenServerActivity/OpenServerGiftWin.cs
@@ -15,7 +15,6 @@ public class OpenServerGiftWin : Window { [SerializeField] RectTransform m_ContainerDisplay; [SerializeField] Button[] m_CloseBtns; [SerializeField] OSGiftBehaviour[] m_OSGifts; [SerializeField] RectTransform m_ContainerTime; [SerializeField] Text m_Overdue; @@ -29,8 +28,6 @@ } } int currentSelectId = 0; OSGiftModel giftModel { get { return ModelCenter.Instance.GetModel<OSGiftModel>(); } } #region Built-in protected override void BindController() @@ -39,24 +36,20 @@ protected override void AddListeners() { for (int i = 0; i < m_CloseBtns.Length; i++) { m_CloseBtns[i].onClick.AddListener(OnCloseClick); } } protected override void OnPreOpen() { WindowCenter.Instance.windowAfterOpenEvent += WindowAfterOpenEvent; WindowCenter.Instance.windowAfterCloseEvent += windowAfterCloseEvent; model.RefreshBuyShopLimitEvent += RefreshBuyShopLimitEvent; TimeUtility.OnServerOpenDayRefresh += OnServerOpenDayRefresh; GlobalTimeEvent.Instance.secondEvent += SecondEvent; giftModel.timeLimitUpdate += TimeLimitUpdate; giftModel.SetDayRemind(); Display(); if (!giftModel.alreadyOpens.Contains(giftModel.selectIndex)) { giftModel.selectIndex = giftModel.alreadyOpens[0]; } m_ContainerDisplay.gameObject.SetActive(!WindowCenter.Instance.IsOpen<OffLineOnHookWin>()); model.RefreshBuyShopLimitEvent += RefreshBuyShopLimitEvent; GlobalTimeEvent.Instance.secondEvent += SecondEvent; giftModel.onSelectUpdate += OnSelectUpdate; giftModel.jumpGiftId = 0; Display(); } protected override void OnAfterOpen() @@ -65,12 +58,9 @@ protected override void OnPreClose() { WindowCenter.Instance.windowAfterOpenEvent -= WindowAfterOpenEvent; WindowCenter.Instance.windowAfterCloseEvent -= windowAfterCloseEvent; model.RefreshBuyShopLimitEvent -= RefreshBuyShopLimitEvent; TimeUtility.OnServerOpenDayRefresh -= OnServerOpenDayRefresh; GlobalTimeEvent.Instance.secondEvent -= SecondEvent; giftModel.timeLimitUpdate -= TimeLimitUpdate; giftModel.onSelectUpdate -= OnSelectUpdate; } protected override void OnAfterClose() @@ -78,28 +68,12 @@ } #endregion private void WindowAfterOpenEvent(Window _win) { if(_win is OffLineOnHookWin) { m_ContainerDisplay.gameObject.SetActive(false); } } private void windowAfterCloseEvent(Window _win) { if (_win is OffLineOnHookWin) { m_ContainerDisplay.gameObject.SetActive(true); } } private void RefreshBuyShopLimitEvent() private void OnSelectUpdate() { Display(); } private void OnServerOpenDayRefresh() private void RefreshBuyShopLimitEvent() { Display(); } @@ -109,59 +83,48 @@ DisplayTimer(); } private void TimeLimitUpdate() { Display(); } void DisplayTimer() { var seconds = (int)(giftModel.overDueTime - TimeUtility.ServerNow).TotalSeconds; if (giftModel.IsGiftOverdue(currentSelectId) || seconds <= 0) if (giftModel.selectIndex >= 0 && giftModel.selectIndex < giftModel.gifts.Count) { m_ContainerTime.gameObject.SetActive(false); m_Overdue.gameObject.SetActive(true); } else { m_ContainerTime.gameObject.SetActive(true); m_Overdue.gameObject.SetActive(false); m_Timer.text = TimeUtility.SecondsToDHMSCHS(seconds); m_Timer.color = UIHelper.GetUIColor(TextColType.Green); var gift = giftModel.gifts[giftModel.selectIndex]; var startTime = TimeUtility.GetTime(giftModel.startSeconds); var endTime = startTime.AddDays(gift.openDays); endTime = new DateTime(endTime.Year, endTime.Month, endTime.Day, 0, 0, 0); var seconds = (int)(endTime - TimeUtility.ServerNow).TotalSeconds; if (seconds <= 0) { m_ContainerTime.gameObject.SetActive(false); m_Overdue.gameObject.SetActive(true); } else { m_ContainerTime.gameObject.SetActive(true); m_Overdue.gameObject.SetActive(false); m_Timer.text = TimeUtility.SecondsToDHMSCHS(seconds); m_Timer.color = UIHelper.GetUIColor(TextColType.Green); } } } private void Display() { List<StoreConfig> _list = null; StoreConfig.TryGetStoreConfigs((int)StoreFunc.OSGift, out _list); var _index = 0; for (int i = 0; i < _list.Count; i++) for (int i = 0; i < giftModel.gifts.Count; i++) { if (!giftModel.IsGiftOverdue(_list[i].ID)) if (giftModel.selectIndex == i) { var _storeConfig = Config.Instance.Get<StoreConfig>(_list[i].ID); var _limit = model.GetBuyShopLimit((uint)_list[i].ID); if (_limit == null || _limit.BuyCnt < _storeConfig.PurchaseNumber[0]) { _index = i; currentSelectId = _list[i].ID; m_OSGifts[i].Display(_list[i].ID); break; } m_OSGifts[i].Display(giftModel.gifts[i].giftId); _index = i; break; } _index = i; } giftModel.SetDayRemind(giftModel.selectIndex); for (int i = 0; i < m_OSGifts.Length; i++) { m_OSGifts[i].gameObject.SetActive(_index == i); } DisplayTimer(); } private void OnCloseClick() { CloseImmediately(); } } System/WindowJump/WindowJumpMgr.cs
@@ -837,7 +837,7 @@ var giftModel = ModelCenter.Instance.GetModel<OSGiftModel>(); int giftId = 0; int.TryParse(_tagWinSearchModel.SelectActive, out giftId); if (!giftModel.CheckActivate()) if (!giftModel.IsGiftExist(giftId)) { if (PlayerDatas.Instance.baseData.coinPointTotal <= 0 || !ModelCenter.Instance.GetModel<VipModel>().firstChargeRewardGet) @@ -848,12 +848,16 @@ { SysNotifyMgr.Instance.ShowTip("GiftAlreadyBuy"); } else if (giftModel.IsGiftOverdue(giftId)) else if (!giftModel.IsGiftExist(giftId)) { SysNotifyMgr.Instance.ShowTip("MissSell"); } return false; } else { giftModel.jumpGiftId = giftId; } break; case JumpUIType.OpenServerGift: return false;