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)); Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA1C_tagMCTotalRechargePlayerInfo.cs
New file @@ -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); } } Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA1C_tagMCTotalRechargePlayerInfo.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 5d4ace10ce4b33248bb5e9e3eef9722b timeCreated: 1541473219 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA1D_tagMCActTotalRechargeInfo.cs
New file @@ -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); } } Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA1D_tagMCActTotalRechargeInfo.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 62fc9c5ac30b853429d048e9bb3cb4bc timeCreated: 1541473252 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA1C_tagMCTotalRechargePlayerInfo.cs
New file @@ -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); } } Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA1C_tagMCTotalRechargePlayerInfo.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: b406f975a6336f843a0b69b63b646a22 timeCreated: 1541473174 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA1D_tagMCActTotalRechargeInfo.cs
New file @@ -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; // 奖励物品信息 } } Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA1D_tagMCActTotalRechargeInfo.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 6a28a3dad71de0848a8a4414b718c004 timeCreated: 1541473173 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/OpenServerActivity/AccumulateRechargeBehaviour.cs
New file @@ -0,0 +1,119 @@ using 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; } } } } System/OpenServerActivity/AccumulateRechargeBehaviour.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 48670b59affb5c0489d46a0f4747deb3 timeCreated: 1541489873 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/OpenServerActivity/AccumulateRechargeCell.cs
New file @@ -0,0 +1,17 @@ using 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); } } } System/OpenServerActivity/AccumulateRechargeCell.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: c80e2ab2e8ab3e049a27f310655acd14 timeCreated: 1541493905 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/OpenServerActivity/AccumulateRechargeModel.cs
New file @@ -0,0 +1,219 @@ using 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 } } System/OpenServerActivity/AccumulateRechargeModel.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 2900b05d6b722c640bd01096d44bb9f7 timeCreated: 1541486509 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/OpenServerActivity/AccumulateRechargeWin.cs
New file @@ -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(); } } } System/OpenServerActivity/AccumulateRechargeWin.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: a1a05819728bfab43b0577e4909355ca timeCreated: 1541486287 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/OpenServerActivity/ImpactRankModel.cs
@@ -798,6 +798,8 @@ WishingPool, [Header("绑玉转盘")] WheelOfrtune, [Header("累计充值")] AccumulateRecharge, } } 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) System/OpenServerActivity/OperationAccumulateRecharge.cs
New file @@ -0,0 +1,91 @@ using 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; } } } System/OpenServerActivity/OperationAccumulateRecharge.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 628f3c2ad3c339b40b72e76da8ef1fcc timeCreated: 1541421540 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: 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, } } System/WindowBase/ModelCenter.cs
@@ -203,6 +203,7 @@ RegisterModel<RolePointModel>(); RegisterModel<SocialModel>(); RegisterModel<ChatBubbleModel>(); RegisterModel<AccumulateRechargeModel>(); inited = true; } Utility/EnumHelper.cs
@@ -1167,6 +1167,7 @@ Def_RewardType_FCParty = 14,// 仙界盛典全民来嗨14 Def_RewardType_WishingWell = 16,// 许愿池奖励16 Def_RewardType_OpenFunc=17,//功能预告奖励 Def_RewardType_TotalRecharge = 18,//累计充值奖励 } public enum MapType