From 94db2e5d172f1eb4f2a8e1a2eb3656ae01bc3e2f Mon Sep 17 00:00:00 2001
From: client_linchunjie <461730578@qq.com>
Date: 星期二, 06 十一月 2018 17:26:26 +0800
Subject: [PATCH] 4555 【1.2】【前端】累计充值活动开发
---
System/OpenServerActivity/ImpactRankModel.cs | 2
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA1D_tagMCActTotalRechargeInfo.cs | 63 +++
Utility/EnumHelper.cs | 3
System/OpenServerActivity/OperationAccumulateRecharge.cs | 91 +++++
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA1C_tagMCTotalRechargePlayerInfo.cs | 24 +
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA1C_tagMCTotalRechargePlayerInfo.cs | 19 +
System/OpenServerActivity/AccumulateRechargeCell.cs.meta | 12
System/OpenServerActivity/AccumulateRechargeWin.cs | 302 ++++++++++++++++
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA1C_tagMCTotalRechargePlayerInfo.cs.meta | 12
System/OpenServerActivity/AccumulateRechargeBehaviour.cs.meta | 12
System/OpenServerActivity/OpenServerActivityWin.cs | 4
System/Welfare/OperationTimeHepler.cs | 34 +
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA1D_tagMCActTotalRechargeInfo.cs.meta | 12
System/OpenServerActivity/AccumulateRechargeWin.cs.meta | 12
System/OpenServerActivity/AccumulateRechargeModel.cs | 219 ++++++++++++
System/OpenServerActivity/AccumulateRechargeModel.cs.meta | 12
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA1D_tagMCActTotalRechargeInfo.cs | 23 +
System/OpenServerActivity/AccumulateRechargeCell.cs | 17
Core/GameEngine/DataToCtl/PackageRegedit.cs | 2
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA1D_tagMCActTotalRechargeInfo.cs.meta | 12
System/WindowBase/ModelCenter.cs | 1
System/OpenServerActivity/AccumulateRechargeBehaviour.cs | 119 ++++++
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA1C_tagMCTotalRechargePlayerInfo.cs.meta | 12
System/OpenServerActivity/OperationAccumulateRecharge.cs.meta | 12
24 files changed, 1,030 insertions(+), 1 deletions(-)
diff --git a/Core/GameEngine/DataToCtl/PackageRegedit.cs b/Core/GameEngine/DataToCtl/PackageRegedit.cs
index ef84b84..4e74f3f 100644
--- a/Core/GameEngine/DataToCtl/PackageRegedit.cs
+++ b/Core/GameEngine/DataToCtl/PackageRegedit.cs
@@ -11,6 +11,8 @@
public static void Init()
{
// 鐧昏鐩稿簲鐨勬暟鎹綋鍙婂搴旂殑鏁版嵁杞�昏緫绫�
+ Register(typeof(HAA1D_tagMCActTotalRechargeInfo), typeof(DTCAA1D_tagMCActTotalRechargeInfo));
+ Register(typeof(HAA1C_tagMCTotalRechargePlayerInfo), typeof(DTCAA1C_tagMCTotalRechargePlayerInfo));
Register(typeof(HA717_tagMCChatBubbleBoxState), typeof(DTCA717_tagMCChatBubbleBoxState));
Register(typeof(HB913_tagGCEnterTeamFBFailReason), typeof(DTCB913_tagGCEnterTeamFBFailReason));
Register(typeof(H0311_tagDeleteSkill), typeof(DTC0311_tagDeleteSkill));
diff --git a/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA1C_tagMCTotalRechargePlayerInfo.cs b/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA1C_tagMCTotalRechargePlayerInfo.cs
new file mode 100644
index 0000000..7670709
--- /dev/null
+++ b/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA1C_tagMCTotalRechargePlayerInfo.cs
@@ -0,0 +1,24 @@
+锘�//--------------------------------------------------------
+// [Author]: 绗簩涓栫晫
+// [ Date ]: Tuesday, November 06, 2018
+//--------------------------------------------------------
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using Snxxz.UI;
+public class DTCAA1C_tagMCTotalRechargePlayerInfo : DtcBasic
+{
+
+ public override void Done(GameNetPackBasic vNetPack)
+ {
+ base.Done(vNetPack);
+ var package = vNetPack as HAA1C_tagMCTotalRechargePlayerInfo;
+ ModelCenter.Instance.GetModel<AccumulateRechargeModel>().UpdateAccumulateRecharge(package);
+ }
+
+}
+
+
+
+
diff --git a/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA1C_tagMCTotalRechargePlayerInfo.cs.meta b/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA1C_tagMCTotalRechargePlayerInfo.cs.meta
new file mode 100644
index 0000000..832d1c5
--- /dev/null
+++ b/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA1C_tagMCTotalRechargePlayerInfo.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 5d4ace10ce4b33248bb5e9e3eef9722b
+timeCreated: 1541473219
+licenseType: Pro
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA1D_tagMCActTotalRechargeInfo.cs b/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA1D_tagMCActTotalRechargeInfo.cs
new file mode 100644
index 0000000..18d0979
--- /dev/null
+++ b/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA1D_tagMCActTotalRechargeInfo.cs
@@ -0,0 +1,23 @@
+锘�//--------------------------------------------------------
+// [Author]: 绗簩涓栫晫
+// [ Date ]: Tuesday, November 06, 2018
+//--------------------------------------------------------
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using Snxxz.UI;
+public class DTCAA1D_tagMCActTotalRechargeInfo : DtcBasic {
+
+ public override void Done(GameNetPackBasic vNetPack)
+ {
+ base.Done(vNetPack);
+ var package = vNetPack as HAA1D_tagMCActTotalRechargeInfo;
+ OperationTimeHepler.Instance.UpdateAccumulateRecharge(package);
+ }
+
+}
+
+
+
+
diff --git a/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA1D_tagMCActTotalRechargeInfo.cs.meta b/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA1D_tagMCActTotalRechargeInfo.cs.meta
new file mode 100644
index 0000000..fea45c8
--- /dev/null
+++ b/Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA1D_tagMCActTotalRechargeInfo.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 62fc9c5ac30b853429d048e9bb3cb4bc
+timeCreated: 1541473252
+licenseType: Pro
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA1C_tagMCTotalRechargePlayerInfo.cs b/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA1C_tagMCTotalRechargePlayerInfo.cs
new file mode 100644
index 0000000..c7d4326
--- /dev/null
+++ b/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA1C_tagMCTotalRechargePlayerInfo.cs
@@ -0,0 +1,19 @@
+using UnityEngine;
+using System.Collections;
+
+// AA 1C 累计充值玩家活动信息 #tagMCTotalRechargePlayerInfo
+
+public class HAA1C_tagMCTotalRechargePlayerInfo : GameNetPackBasic {
+ public uint GoldTotal; //本次活动已累计充值仙玉数
+ public uint AwardRecord; //奖励领奖记录,按奖励索引二进制位存储是否已领取
+
+ public HAA1C_tagMCTotalRechargePlayerInfo () {
+ _cmd = (ushort)0xAA1C;
+ }
+
+ public override void ReadFromBytes (byte[] vBytes) {
+ TransBytes (out GoldTotal, vBytes, NetDataType.DWORD);
+ TransBytes (out AwardRecord, vBytes, NetDataType.DWORD);
+ }
+
+}
diff --git a/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA1C_tagMCTotalRechargePlayerInfo.cs.meta b/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA1C_tagMCTotalRechargePlayerInfo.cs.meta
new file mode 100644
index 0000000..66e157d
--- /dev/null
+++ b/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA1C_tagMCTotalRechargePlayerInfo.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: b406f975a6336f843a0b69b63b646a22
+timeCreated: 1541473174
+licenseType: Pro
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA1D_tagMCActTotalRechargeInfo.cs b/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA1D_tagMCActTotalRechargeInfo.cs
new file mode 100644
index 0000000..c809b36
--- /dev/null
+++ b/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA1D_tagMCActTotalRechargeInfo.cs
@@ -0,0 +1,63 @@
+using UnityEngine;
+using System.Collections;
+
+// AA 1D 累计充值活动信息 #tagMCActTotalRechargeInfo
+
+public class HAA1D_tagMCActTotalRechargeInfo : GameNetPackBasic {
+ public string StartDate; // 开始日期 y-m-d
+ public string EndtDate; // 结束日期 y-m-d
+ public byte IsDayReset; //是否每天重置
+ public ushort LimitLV; // 限制等级
+ public byte AwardDays;
+ public tagMCTotalRechargeAwardDay[] AwardDayInfo; //每天对应信息; 如果只有一天,但是活动有多天,则代表每天奖励都一样
+
+ public HAA1D_tagMCActTotalRechargeInfo () {
+ _cmd = (ushort)0xAA1D;
+ }
+
+ public override void ReadFromBytes (byte[] vBytes) {
+ TransBytes (out StartDate, vBytes, NetDataType.Chars, 10);
+ TransBytes (out EndtDate, vBytes, NetDataType.Chars, 10);
+ TransBytes (out IsDayReset, vBytes, NetDataType.BYTE);
+ TransBytes (out LimitLV, vBytes, NetDataType.WORD);
+ TransBytes (out AwardDays, vBytes, NetDataType.BYTE);
+ AwardDayInfo = new tagMCTotalRechargeAwardDay[AwardDays];
+ for (int i = 0; i < AwardDays; i ++) {
+ AwardDayInfo[i] = new tagMCTotalRechargeAwardDay();
+ TransBytes (out AwardDayInfo[i].AwardCount, vBytes, NetDataType.BYTE);
+ AwardDayInfo[i].AwardInfo = new tagMCTotalRechargeAward[AwardDayInfo[i].AwardCount];
+ for (int j = 0; j < AwardDayInfo[i].AwardCount; j ++) {
+ AwardDayInfo[i].AwardInfo[j] = new tagMCTotalRechargeAward();
+ TransBytes (out AwardDayInfo[i].AwardInfo[j].AwardIndex, vBytes, NetDataType.BYTE);
+ TransBytes (out AwardDayInfo[i].AwardInfo[j].NeedGold, vBytes, NetDataType.DWORD);
+ TransBytes (out AwardDayInfo[i].AwardInfo[j].AwardItemCount, vBytes, NetDataType.BYTE);
+ AwardDayInfo[i].AwardInfo[j].AwardItem = new tagMCTotalRechargeAwardItem[AwardDayInfo[i].AwardInfo[j].AwardItemCount];
+ for (int k = 0; k < AwardDayInfo[i].AwardInfo[j].AwardItemCount; k ++) {
+ AwardDayInfo[i].AwardInfo[j].AwardItem[k] = new tagMCTotalRechargeAwardItem();
+ TransBytes (out AwardDayInfo[i].AwardInfo[j].AwardItem[k].ItemID, vBytes, NetDataType.DWORD);
+ TransBytes (out AwardDayInfo[i].AwardInfo[j].AwardItem[k].ItemCount, vBytes, NetDataType.WORD);
+ TransBytes (out AwardDayInfo[i].AwardInfo[j].AwardItem[k].IsBind, vBytes, NetDataType.BYTE);
+ }
+ }
+ }
+ }
+
+ public struct tagMCTotalRechargeAwardDay {
+ public byte AwardCount; // 奖励档数
+ public tagMCTotalRechargeAward[] AwardInfo; // 奖励档信息
+ }
+
+ public struct tagMCTotalRechargeAwardItem {
+ public uint ItemID;
+ public ushort ItemCount;
+ public byte IsBind;
+ }
+
+ public struct tagMCTotalRechargeAward {
+ public byte AwardIndex; // 奖励索引 0~31
+ public uint NeedGold; // 所需仙玉数
+ public byte AwardItemCount; // 奖励物品数
+ public tagMCTotalRechargeAwardItem[] AwardItem; // 奖励物品信息
+ }
+
+}
diff --git a/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA1D_tagMCActTotalRechargeInfo.cs.meta b/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA1D_tagMCActTotalRechargeInfo.cs.meta
new file mode 100644
index 0000000..4981396
--- /dev/null
+++ b/Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA1D_tagMCActTotalRechargeInfo.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 6a28a3dad71de0848a8a4414b718c004
+timeCreated: 1541473173
+licenseType: Pro
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/System/OpenServerActivity/AccumulateRechargeBehaviour.cs b/System/OpenServerActivity/AccumulateRechargeBehaviour.cs
new file mode 100644
index 0000000..a9cc99d
--- /dev/null
+++ b/System/OpenServerActivity/AccumulateRechargeBehaviour.cs
@@ -0,0 +1,119 @@
+锘縰sing System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+
+namespace Snxxz.UI
+{
+ public class AccumulateRechargeBehaviour : MonoBehaviour
+ {
+ [SerializeField] RectTransform m_ContainerOpen;
+ [SerializeField] RectTransform m_ContainerClose;
+ [SerializeField] Text m_MoneyClose;
+ [SerializeField] Text m_MoneyOpen;
+ [SerializeField] Image m_OpenRedpoint;
+ [SerializeField] Image m_CloseRedpoint;
+ [SerializeField] Button m_Select;
+
+ AccumulateRechargeModel model
+ {
+ get { return ModelCenter.Instance.GetModel<AccumulateRechargeModel>(); }
+ }
+
+ int selectIndex = -1;
+
+ private void Awake()
+ {
+ m_Select.onClick.AddListener(Select);
+ }
+
+ private void OnEnable()
+ {
+ model.selectUpdate += SelectUpdate;
+ model.accumulateRechargeUpdate += AccumulateRechargeUpdate;
+ model.onStateUpate += OnStateUpate;
+ }
+
+ private void OnDisable()
+ {
+ model.selectUpdate -= SelectUpdate;
+ model.accumulateRechargeUpdate -= AccumulateRechargeUpdate;
+ model.onStateUpate -= OnStateUpate;
+ }
+
+ private void OnStateUpate(int obj)
+ {
+ DisplayRedpoint();
+ }
+
+ private void AccumulateRechargeUpdate()
+ {
+ DisplayRedpoint();
+ }
+
+ public void Display(int index)
+ {
+ selectIndex = index;
+ OperationBase operationBase;
+ if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.AccumulateRecharge, out operationBase))
+ {
+ OperationAccumulateRecharge operation = operationBase as OperationAccumulateRecharge;
+ var reward = operation.GetReward(TimeUtility.ServerNow);
+ if (reward != null)
+ {
+ if (index < reward.recharges.Count)
+ {
+ var recharge = reward.recharges[index];
+ m_MoneyClose.text = recharge.requireGold.ToString();
+ m_MoneyOpen.text = recharge.requireGold.ToString();
+ DisplayRedpoint();
+ DisplaySelect();
+ }
+ }
+ }
+ }
+
+ void DisplaySelect()
+ {
+ m_ContainerOpen.gameObject.SetActive(model.selectIndex == selectIndex);
+ m_ContainerClose.gameObject.SetActive(model.selectIndex != selectIndex);
+ }
+
+ void DisplayRedpoint()
+ {
+ OperationBase operationBase;
+ bool satisfyGet = false;
+ if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.AccumulateRecharge, out operationBase))
+ {
+ OperationAccumulateRecharge operation = operationBase as OperationAccumulateRecharge;
+ var reward = operation.GetReward(TimeUtility.ServerNow);
+ if (reward != null)
+ {
+ if (selectIndex < reward.recharges.Count && selectIndex >= 0)
+ {
+ var recharge = reward.recharges[selectIndex];
+ satisfyGet = model.SatisfyGetReward(recharge) && model.IsOpen;
+ }
+ }
+ }
+ m_OpenRedpoint.gameObject.SetActive(satisfyGet);
+ m_CloseRedpoint.gameObject.SetActive(satisfyGet);
+ }
+
+ private void SelectUpdate(int index)
+ {
+ m_ContainerOpen.gameObject.SetActive(index == selectIndex);
+ m_ContainerClose.gameObject.SetActive(index != selectIndex);
+ }
+
+ private void Select()
+ {
+ if (model.selectIndex != selectIndex && selectIndex != -1)
+ {
+ model.selectIndex = selectIndex;
+ }
+ }
+ }
+}
+
diff --git a/System/OpenServerActivity/AccumulateRechargeBehaviour.cs.meta b/System/OpenServerActivity/AccumulateRechargeBehaviour.cs.meta
new file mode 100644
index 0000000..04c34dc
--- /dev/null
+++ b/System/OpenServerActivity/AccumulateRechargeBehaviour.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 48670b59affb5c0489d46a0f4747deb3
+timeCreated: 1541489873
+licenseType: Pro
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/System/OpenServerActivity/AccumulateRechargeCell.cs b/System/OpenServerActivity/AccumulateRechargeCell.cs
new file mode 100644
index 0000000..36f2133
--- /dev/null
+++ b/System/OpenServerActivity/AccumulateRechargeCell.cs
@@ -0,0 +1,17 @@
+锘縰sing System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+namespace Snxxz.UI
+{
+ public class AccumulateRechargeCell : CellView
+ {
+ [SerializeField] AccumulateRechargeBehaviour m_AccumulateRecharge;
+
+ public void Display(int index)
+ {
+ m_AccumulateRecharge.Display(index);
+ }
+ }
+
+}
+
diff --git a/System/OpenServerActivity/AccumulateRechargeCell.cs.meta b/System/OpenServerActivity/AccumulateRechargeCell.cs.meta
new file mode 100644
index 0000000..df0ab02
--- /dev/null
+++ b/System/OpenServerActivity/AccumulateRechargeCell.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: c80e2ab2e8ab3e049a27f310655acd14
+timeCreated: 1541493905
+licenseType: Pro
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/System/OpenServerActivity/AccumulateRechargeModel.cs b/System/OpenServerActivity/AccumulateRechargeModel.cs
new file mode 100644
index 0000000..8c76b66
--- /dev/null
+++ b/System/OpenServerActivity/AccumulateRechargeModel.cs
@@ -0,0 +1,219 @@
+锘縰sing System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+namespace Snxxz.UI
+{
+ public class AccumulateRechargeModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk, IOpenServerActivity
+ {
+ public bool IsOpen
+ {
+ get
+ {
+ return OperationTimeHepler.Instance.SatisfyOpenCondition(Operation.AccumulateRecharge);
+ }
+ }
+
+ public bool IsAdvance
+ {
+ get
+ {
+ return false;
+ }
+ }
+
+ public bool priorityOpen
+ {
+ get { return redpoint.state == RedPointState.Simple; }
+ }
+
+ int m_SelectIndex = 0;
+ public int selectIndex
+ {
+ get { return m_SelectIndex; }
+ set
+ {
+ if (m_SelectIndex != value)
+ {
+ if (selectUpdate != null)
+ {
+ selectUpdate(value);
+ }
+ }
+ m_SelectIndex = value;
+ }
+ }
+
+ public event Action accumulateRechargeUpdate;
+ public event Action<int> onStateUpate;
+ public event Action<int> selectUpdate;
+
+ public override void Init()
+ {
+ OperationTimeHepler.Instance.operationStartEvent += OperationStartEvent;
+ OperationTimeHepler.Instance.operationEndEvent += OperationEndEvent;
+ OperationTimeHepler.Instance.dayResetEvent += DayResetEvent;
+ OpenServerActivityCenter.Instance.Register((int)OpenServerActivityCenter.OSActivityType.AccumulateRecharge, this);
+ }
+
+ public void OnBeforePlayerDataInitialize()
+ {
+ rechargeTotal = 0;
+ getRewardRecord = 0;
+ }
+
+ public void OnPlayerLoginOk()
+ {
+ UpdateRedpoint();
+ }
+
+ public override void UnInit()
+ {
+ OperationTimeHepler.Instance.operationStartEvent -= OperationStartEvent;
+ OperationTimeHepler.Instance.operationEndEvent -= OperationEndEvent;
+ OperationTimeHepler.Instance.dayResetEvent -= DayResetEvent;
+ }
+
+ private void DayResetEvent(int resetType)
+ {
+ OperationBase operationBase;
+ if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.AccumulateRecharge, out operationBase))
+ {
+ if (resetType == operationBase.resetType)
+ {
+ UpdateRedpoint();
+ }
+ }
+ }
+
+ private void OperationEndEvent(Operation operationType, int state)
+ {
+ if (operationType == Operation.AccumulateRecharge && state == 0)
+ {
+ UpdateRedpoint();
+ if (onStateUpate != null)
+ {
+ onStateUpate(17);
+ }
+ }
+ }
+
+ private void OperationStartEvent(Operation operationType, int state)
+ {
+ if (operationType == Operation.AccumulateRecharge && state == 0)
+ {
+ UpdateRedpoint();
+ if (onStateUpate != null)
+ {
+ onStateUpate(17);
+ }
+ }
+ }
+
+ #region 鏈嶅姟绔暟鎹�
+ public uint rechargeTotal { get; private set; }
+ public uint getRewardRecord { get; private set; }
+ public void UpdateAccumulateRecharge(HAA1C_tagMCTotalRechargePlayerInfo package)
+ {
+ rechargeTotal = package.GoldTotal;
+ getRewardRecord = package.AwardRecord;
+ UpdateRedpoint();
+ if (accumulateRechargeUpdate != null)
+ {
+ accumulateRechargeUpdate();
+ }
+ }
+
+ public bool IsRewardGot(OperationAccumulateRecharge.Recharge recharge)
+ {
+ if (recharge != null)
+ {
+ return IsRewardGot(recharge.index);
+ }
+ return false;
+ }
+
+ bool IsRewardGot(int index)
+ {
+ return (getRewardRecord & (1 << index)) != 0;
+ }
+
+ public bool SatisfyGetReward(OperationAccumulateRecharge.Recharge recharge)
+ {
+ if (!IsOpen)
+ {
+ return false;
+ }
+ if (IsRewardGot(recharge))
+ {
+ return false;
+ }
+ if (rechargeTotal >= recharge.requireGold)
+ {
+ return true;
+ }
+ return false;
+ }
+
+ public void GetAccumulateRechargeReward(OperationAccumulateRecharge.Recharge recharge)
+ {
+ OperationBase operationBase;
+ if (!OperationTimeHepler.Instance.InOperationTime(Operation.AccumulateRecharge))
+ {
+ SysNotifyMgr.Instance.ShowTip("ActiveOutTime");
+ return;
+ }
+ if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.AccumulateRecharge, out operationBase))
+ {
+ OperationAccumulateRecharge operation = operationBase as OperationAccumulateRecharge;
+ if (IsRewardGot(recharge.index))
+ {
+ return;
+ }
+ else if (rechargeTotal < recharge.requireGold)
+ {
+ return;
+ }
+ CA504_tagCMPlayerGetReward pak = new CA504_tagCMPlayerGetReward();
+ pak.RewardType = (byte)GotServerRewardType.Def_RewardType_TotalRecharge;
+ pak.DataEx = (uint)recharge.index;
+ pak.DataExStrLen = 0;
+ pak.DataExStr = string.Empty;
+ GameNetSystem.Instance.SendInfo(pak);
+ }
+ }
+ #endregion
+
+ #region 绾㈢偣
+ public Redpoint redpoint = new Redpoint(MainRedDot.REDPOINT_OPENSERVER, 20917);
+
+ public void UpdateRedpoint()
+ {
+ redpoint.state = RedPointState.None;
+ if (!IsOpen)
+ {
+ return;
+ }
+ OperationBase operationBase;
+ if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.AccumulateRecharge, out operationBase))
+ {
+ OperationAccumulateRecharge operation = operationBase as OperationAccumulateRecharge;
+ var reward = operation.GetReward(TimeUtility.ServerNow);
+ if (reward != null)
+ {
+ for (int i = 0; i < reward.recharges.Count; i++)
+ {
+ var recharge = reward.recharges[i];
+ if (SatisfyGetReward(recharge))
+ {
+ redpoint.state = RedPointState.Simple;
+ break;
+ }
+ }
+ }
+ }
+ }
+ #endregion
+ }
+}
+
diff --git a/System/OpenServerActivity/AccumulateRechargeModel.cs.meta b/System/OpenServerActivity/AccumulateRechargeModel.cs.meta
new file mode 100644
index 0000000..b23b2f8
--- /dev/null
+++ b/System/OpenServerActivity/AccumulateRechargeModel.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 2900b05d6b722c640bd01096d44bb9f7
+timeCreated: 1541486509
+licenseType: Pro
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/System/OpenServerActivity/AccumulateRechargeWin.cs b/System/OpenServerActivity/AccumulateRechargeWin.cs
new file mode 100644
index 0000000..1cd1a1e
--- /dev/null
+++ b/System/OpenServerActivity/AccumulateRechargeWin.cs
@@ -0,0 +1,302 @@
+锘�//--------------------------------------------------------
+// [Author]: 绗簩涓栫晫
+// [ Date ]: Tuesday, November 06, 2018
+//--------------------------------------------------------
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+
+namespace Snxxz.UI
+{
+
+ public class AccumulateRechargeWin : Window
+ {
+ [SerializeField] Text m_Money;
+ [SerializeField] ItemCell[] m_Items;
+ [SerializeField] Image[] m_ItemGotSigns;
+ [SerializeField] Text m_Recharge;
+ [SerializeField] Button m_Func;
+ [SerializeField] Text m_FuncBtnTxt;
+ [SerializeField] RectTransform m_ContaienrLess;
+ [SerializeField] AccumulateRechargeBehaviour[] m_AccumulateRecharges;
+ [SerializeField] RectTransform m_ContainerMore;
+ [SerializeField] ScrollerController m_ScrollerControl;
+
+ [SerializeField] RectTransform m_ContaienrOpen;
+ [SerializeField] RectTransform m_ConatinerOverdue;
+ [SerializeField] Text m_Time;
+
+ AccumulateRechargeModel model
+ {
+ get { return ModelCenter.Instance.GetModel<AccumulateRechargeModel>(); }
+ }
+ #region Built-in
+ protected override void BindController()
+ {
+ }
+
+ protected override void AddListeners()
+ {
+ m_Func.onClick.AddListener(OnFunc);
+ m_ScrollerControl.OnRefreshCell += OnRefreshCell;
+ }
+
+ protected override void OnPreOpen()
+ {
+ model.selectIndex = 0;
+ model.selectUpdate += SelectUpdate;
+ model.accumulateRechargeUpdate += AccumulateRechargeUpdate;
+ OperationTimeHepler.Instance.dayResetEvent += DayResetEvent;
+ TimeUtility.OnServerOpenDayRefresh += OnServerOpenDayRefresh;
+ OperationTimeHepler.Instance.operationEndEvent += OperationEndEvent;
+
+ DisplayMoney(model.selectIndex);
+ DisplayItems(model.selectIndex);
+ DisplayFunc(model.selectIndex);
+ DisplayRecharge();
+ DisplayRewards();
+ DisplayTime();
+ }
+
+ protected override void OnAfterOpen()
+ {
+ }
+
+ protected override void OnPreClose()
+ {
+ model.selectUpdate -= SelectUpdate;
+ model.accumulateRechargeUpdate -= AccumulateRechargeUpdate;
+ OperationTimeHepler.Instance.dayResetEvent -= DayResetEvent;
+ TimeUtility.OnServerOpenDayRefresh -= OnServerOpenDayRefresh;
+ OperationTimeHepler.Instance.operationEndEvent -= OperationEndEvent;
+ }
+
+ protected override void OnAfterClose()
+ {
+ }
+ #endregion
+
+ private void OnFunc()
+ {
+ OperationBase operationBase;
+ OperationAccumulateRecharge.Recharge recharge = null;
+ if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.AccumulateRecharge, out operationBase))
+ {
+ OperationAccumulateRecharge operation = operationBase as OperationAccumulateRecharge;
+ var reward = operation.GetReward(TimeUtility.ServerNow);
+ if (model.selectIndex >= 0 && model.selectIndex < reward.recharges.Count)
+ {
+ recharge = reward.recharges[model.selectIndex];
+ }
+ }
+ if (recharge != null)
+ {
+ if (model.SatisfyGetReward(recharge))
+ {
+ model.GetAccumulateRechargeReward(recharge);
+ }
+ else
+ {
+ WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.VipRechargeFunc1);
+ }
+ }
+ }
+
+ private void DisplayMoney(int index)
+ {
+ OperationBase operationBase;
+ if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.AccumulateRecharge, out operationBase))
+ {
+ OperationAccumulateRecharge operation = operationBase as OperationAccumulateRecharge;
+ var reward = operation.GetReward(TimeUtility.ServerNow);
+ if (index >= 0 && index < reward.recharges.Count)
+ {
+ var recharge = reward.recharges[index];
+ m_Money.text = recharge.requireGold.ToString();
+ }
+ }
+ }
+
+ private void DisplayItems(int index)
+ {
+ OperationBase operationBase;
+ OperationAccumulateRecharge.Recharge recharge = null;
+ if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.AccumulateRecharge, out operationBase))
+ {
+ OperationAccumulateRecharge operation = operationBase as OperationAccumulateRecharge;
+ var reward = operation.GetReward(TimeUtility.ServerNow);
+ if (index >= 0 && index < reward.recharges.Count)
+ {
+ recharge = reward.recharges[index];
+ }
+ }
+ for (int i = 0; i < m_Items.Length; i++)
+ {
+ m_Items[i].cellBtn.RemoveAllListeners();
+ if (recharge != null && i < recharge.items.Count)
+ {
+ var item = recharge.items[i];
+ m_Items[i].gameObject.SetActive(true);
+ ItemCellModel itemCellModel = new ItemCellModel(item.id, true, (ulong)item.count, item.bind);
+ m_Items[i].Init(itemCellModel);
+ m_Items[i].cellBtn.AddListener(() =>
+ {
+ ItemAttrData itemAttrData = new ItemAttrData(item.id, true, (ulong)item.count, -1, item.bind);
+ ModelCenter.Instance.GetModel<ItemTipsModel>().SetItemTipsModel(itemAttrData);
+ });
+ }
+ else
+ {
+ m_Items[i].gameObject.SetActive(false);
+ }
+ }
+ }
+
+ private void DisplayRecharge()
+ {
+ m_Recharge.text = model.rechargeTotal.ToString();
+ }
+
+ private void DisplayFunc(int index)
+ {
+ OperationBase operationBase;
+ OperationAccumulateRecharge.Recharge recharge = null;
+ if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.AccumulateRecharge, out operationBase))
+ {
+ OperationAccumulateRecharge operation = operationBase as OperationAccumulateRecharge;
+ var reward = operation.GetReward(TimeUtility.ServerNow);
+ if (index >= 0 && index < reward.recharges.Count)
+ {
+ recharge = reward.recharges[index];
+ }
+ }
+ for (int i = 0; i < m_ItemGotSigns.Length; i++)
+ {
+ m_ItemGotSigns[i].gameObject.SetActive(recharge != null && model.IsRewardGot(recharge));
+ }
+ if (recharge == null)
+ {
+ m_Func.gameObject.SetActive(false);
+ return;
+ }
+ if (model.IsRewardGot(recharge))
+ {
+ m_Func.SetInteractable(m_FuncBtnTxt, false);
+ m_FuncBtnTxt.text = Language.Get("AccumulateRecharge_Got");
+ return;
+ }
+ m_Func.SetInteractable(m_FuncBtnTxt, true);
+ if (model.SatisfyGetReward(recharge))
+ {
+ m_FuncBtnTxt.text = Language.Get("AccumulateRecharge_GetReward");
+ }
+ else
+ {
+ m_FuncBtnTxt.text = Language.Get("AccumulateRecharge_Recharge");
+ }
+ }
+
+ private void DisplayRewards()
+ {
+ OperationBase operationBase;
+ OperationAccumulateRecharge.Reward reward = null;
+ if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.AccumulateRecharge, out operationBase))
+ {
+ OperationAccumulateRecharge operation = operationBase as OperationAccumulateRecharge;
+ reward = operation.GetReward(TimeUtility.ServerNow);
+ }
+ m_ContaienrLess.gameObject.SetActive(reward != null && reward.recharges.Count <= 4);
+ m_ContainerMore.gameObject.SetActive(reward != null && reward.recharges.Count > 4);
+ if (reward != null && reward.recharges.Count <= 4)
+ {
+ for (int i = 0; i < m_AccumulateRecharges.Length; i++)
+ {
+ if (i < reward.recharges.Count)
+ {
+ m_AccumulateRecharges[i].gameObject.SetActive(true);
+ m_AccumulateRecharges[i].Display(i);
+ }
+ else
+ {
+ m_AccumulateRecharges[i].gameObject.SetActive(false);
+ }
+ }
+ }
+ else if (reward != null && reward.recharges.Count > 4)
+ {
+ m_ScrollerControl.Refresh();
+ for (int i = 0; i < reward.recharges.Count; i++)
+ {
+ m_ScrollerControl.AddCell(ScrollerDataType.Header, i);
+ }
+ m_ScrollerControl.Restart();
+ }
+ }
+
+ private void DisplayTime()
+ {
+ m_ContaienrOpen.gameObject.SetActive(model.IsOpen);
+ m_ConatinerOverdue.gameObject.SetActive(!model.IsOpen);
+ OperationBase operationBase;
+ if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.AccumulateRecharge, out operationBase))
+ {
+ OperationAccumulateRecharge operation = operationBase as OperationAccumulateRecharge;
+ m_Time.text = operation.ToDisplayTime();
+ }
+ }
+
+ private void SelectUpdate(int index)
+ {
+ DisplayMoney(index);
+ DisplayItems(index);
+ DisplayFunc(index);
+ }
+
+ private void AccumulateRechargeUpdate()
+ {
+ DisplayRecharge();
+ DisplayFunc(model.selectIndex);
+ }
+
+ private void OnRefreshCell(ScrollerDataType type, CellView cell)
+ {
+ var accumulateRechargeCell = cell as AccumulateRechargeCell;
+ accumulateRechargeCell.Display(cell.index);
+ }
+
+ private void DayResetEvent(int resetType)
+ {
+ OperationBase operationBase;
+ if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.AccumulateRecharge, out operationBase))
+ {
+ if (resetType == operationBase.resetType)
+ {
+ DisplayRewards();
+ DisplayTime();
+ }
+ }
+ }
+
+ private void OperationEndEvent(Operation operation, int state)
+ {
+ if (operation == Operation.AccumulateRecharge && state == 0)
+ {
+ DisplayTime();
+ }
+ }
+
+ private void OnServerOpenDayRefresh()
+ {
+ DisplayRewards();
+ DisplayTime();
+ }
+ }
+
+}
+
+
+
+
diff --git a/System/OpenServerActivity/AccumulateRechargeWin.cs.meta b/System/OpenServerActivity/AccumulateRechargeWin.cs.meta
new file mode 100644
index 0000000..65c532b
--- /dev/null
+++ b/System/OpenServerActivity/AccumulateRechargeWin.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: a1a05819728bfab43b0577e4909355ca
+timeCreated: 1541486287
+licenseType: Pro
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/System/OpenServerActivity/ImpactRankModel.cs b/System/OpenServerActivity/ImpactRankModel.cs
index 6402f5f..790f6f9 100644
--- a/System/OpenServerActivity/ImpactRankModel.cs
+++ b/System/OpenServerActivity/ImpactRankModel.cs
@@ -798,6 +798,8 @@
WishingPool,
[Header("缁戠帀杞洏")]
WheelOfrtune,
+ [Header("绱鍏呭��")]
+ AccumulateRecharge,
}
}
diff --git a/System/OpenServerActivity/OpenServerActivityWin.cs b/System/OpenServerActivity/OpenServerActivityWin.cs
index 43c4268..c205db9 100644
--- a/System/OpenServerActivity/OpenServerActivityWin.cs
+++ b/System/OpenServerActivity/OpenServerActivityWin.cs
@@ -561,6 +561,9 @@
case 16:
WindowCenter.Instance.Open<WheelOfFortuneWin>(true);
break;
+ case 17:
+ WindowCenter.Instance.Open<AccumulateRechargeWin>(true);
+ break;
}
}
@@ -599,6 +602,7 @@
WindowCenter.Instance.CloseImmediately<FlashRushToBuyWin>();
WindowCenter.Instance.CloseImmediately<WishingPoolWin>();
WindowCenter.Instance.CloseImmediately<WheelOfFortuneWin>();
+ WindowCenter.Instance.CloseImmediately<AccumulateRechargeWin>();
}
private int Compare(int order_x, int order_y)
diff --git a/System/OpenServerActivity/OperationAccumulateRecharge.cs b/System/OpenServerActivity/OperationAccumulateRecharge.cs
new file mode 100644
index 0000000..dd5bd37
--- /dev/null
+++ b/System/OpenServerActivity/OperationAccumulateRecharge.cs
@@ -0,0 +1,91 @@
+锘縰sing System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+namespace Snxxz.UI
+{
+ public class OperationAccumulateRecharge : OperationBase
+ {
+ public List<Reward> rewards = new List<Reward>();
+ public override bool SatisfyOpenCondition()
+ {
+ return PlayerDatas.Instance.baseData.LV >= limitLv;
+ }
+
+ public override string ToDisplayTime()
+ {
+ var textBuilder = OperationTimeHepler.textBuilder;
+ textBuilder.Length = 0;
+ textBuilder.Append(startDate.ToDisplay());
+ if (startDate != endDate)
+ {
+ textBuilder.Append("鈥�");
+ textBuilder.Append(endDate.ToDisplay());
+ }
+ return textBuilder.ToString();
+ }
+
+ public override void Reset()
+ {
+ base.Reset();
+ rewards.Clear();
+ }
+
+ public void ParseAccumulateRecharge(HAA1D_tagMCActTotalRechargeInfo package)
+ {
+ for (int i = 0; i < package.AwardDays; i++)
+ {
+ var _reward = package.AwardDayInfo[i];
+ Reward reward = new Reward();
+ for (int k = 0; k < _reward.AwardCount; k++)
+ {
+ Recharge recharge = new Recharge();
+ recharge.requireGold = (int)_reward.AwardInfo[k].NeedGold;
+ recharge.index = _reward.AwardInfo[k].AwardIndex;
+ for (int q = 0; q < _reward.AwardInfo[k].AwardItemCount; q++)
+ {
+ var _item = _reward.AwardInfo[k].AwardItem[q];
+ recharge.items.Add(new Item()
+ {
+ id = (int)_item.ItemID,
+ count = _item.ItemCount,
+ bind = _item.IsBind,
+ });
+ }
+ reward.recharges.Add(recharge);
+ }
+ rewards.Add(reward);
+ }
+ }
+
+ public Reward GetReward(DateTime time)
+ {
+ if (rewards.Count == 0)
+ {
+ return null;
+ }
+ var index = Mathf.Min(rewards.Count - 1, IndexOfTime(time));
+ return rewards[index];
+ }
+
+ public class Reward
+ {
+ public List<Recharge> recharges = new List<Recharge>();
+ }
+
+ public class Recharge
+ {
+ public int index;
+ public int requireGold;
+ public List<Item> items = new List<Item>();
+ }
+
+ public struct Item
+ {
+ public int id;
+ public int bind;
+ public int count;
+ }
+ }
+}
+
diff --git a/System/OpenServerActivity/OperationAccumulateRecharge.cs.meta b/System/OpenServerActivity/OperationAccumulateRecharge.cs.meta
new file mode 100644
index 0000000..db71e4e
--- /dev/null
+++ b/System/OpenServerActivity/OperationAccumulateRecharge.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 628f3c2ad3c339b40b72e76da8ef1fcc
+timeCreated: 1541421540
+licenseType: Pro
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/System/Welfare/OperationTimeHepler.cs b/System/Welfare/OperationTimeHepler.cs
index 82b3a57..76e91f4 100644
--- a/System/Welfare/OperationTimeHepler.cs
+++ b/System/Welfare/OperationTimeHepler.cs
@@ -184,6 +184,39 @@
}
/// <summary>
+ /// 绱鍏呭��
+ /// </summary>
+ /// <param name="package"></param>
+ public void UpdateAccumulateRecharge(HAA1D_tagMCActTotalRechargeInfo package)
+ {
+ OperationBase operationBase = null;
+ operationDict.TryGetValue(Operation.AccumulateRecharge, out operationBase);
+ if (string.IsNullOrEmpty(package.StartDate) || string.IsNullOrEmpty(package.EndtDate))
+ {
+ ForceStopOperation(Operation.AccumulateRecharge);
+ }
+ else
+ {
+ if (operationBase == null)
+ {
+ operationBase = new OperationAccumulateRecharge();
+ operationDict.Add(Operation.AccumulateRecharge, operationBase);
+ }
+ OperationAccumulateRecharge operation = operationBase as OperationAccumulateRecharge;
+ operation.Reset();
+ operation.limitLv = package.LimitLV;
+ operation.startDate = ParseOperationDate(package.StartDate);
+ operation.endDate = ParseOperationDate(package.EndtDate);
+ operation.dayReset = package.IsDayReset == 1;
+ operation.ParseAccumulateRecharge(package);
+ if (operationTimeUpdateEvent != null)
+ {
+ operationTimeUpdateEvent(Operation.AccumulateRecharge);
+ }
+ }
+ }
+
+ /// <summary>
/// 闄愭椂鐗规儬
/// </summary>
/// <param name="package"></param>
@@ -723,6 +756,7 @@
MultipRealmPoint, //N鍊嶄慨琛岀偣
FlashRushToBuy, //闄愭椂鎶㈣喘
WishingWellInfo, //璁告効姹�
+ AccumulateRecharge,//绱鍏呭��
max,
}
}
diff --git a/System/WindowBase/ModelCenter.cs b/System/WindowBase/ModelCenter.cs
index 4d833ca..41a7893 100644
--- a/System/WindowBase/ModelCenter.cs
+++ b/System/WindowBase/ModelCenter.cs
@@ -203,6 +203,7 @@
RegisterModel<RolePointModel>();
RegisterModel<SocialModel>();
RegisterModel<ChatBubbleModel>();
+ RegisterModel<AccumulateRechargeModel>();
inited = true;
}
diff --git a/Utility/EnumHelper.cs b/Utility/EnumHelper.cs
index 0b94163..8bacf06 100644
--- a/Utility/EnumHelper.cs
+++ b/Utility/EnumHelper.cs
@@ -1166,7 +1166,8 @@
Def_RewardType_FCRecharge = 13,// 浠欑晫鐩涘吀鍏呭�煎ぇ绀�13W
Def_RewardType_FCParty = 14,// 浠欑晫鐩涘吀鍏ㄦ皯鏉ュ棬14
Def_RewardType_WishingWell = 16,// 璁告効姹犲鍔�16
- Def_RewardType_OpenFunc=17,//鍔熻兘棰勫憡濂栧姳
+ Def_RewardType_OpenFunc = 17,//鍔熻兘棰勫憡濂栧姳
+ Def_RewardType_TotalRecharge = 18,//绱鍏呭�煎鍔�
}
public enum MapType
--
Gitblit v1.8.0