| Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA1C_tagMCTotalRechargePlayerInfo.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/HolidayWishes/HolidayMultiRechargeModel.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/HolidayWishes/HolidayMultiRechargeModel.cs.meta | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/HolidayWishes/HolidayRechargeGiftWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/HolidayWishes/HolidayRechargeGiftWin.cs.meta | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/HolidayWishes/HolidayWishPoolWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/HolidayWishes/HolidayWishesWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/HolidayWishes/WishBottleAwardWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Welfare/OperationTimeHepler.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/WindowBase/ModelCenter.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA1C_tagMCTotalRechargePlayerInfo.cs
@@ -16,6 +16,7 @@ var package = vNetPack as HAA1C_tagMCTotalRechargePlayerInfo; ModelCenter.Instance.GetModel<AccumulateRechargeModel>().UpdateAccumulateRecharge(package); ModelCenter.Instance.GetModel<DaysAccumulateRechargeModel>().UpdateAccumulateRecharge(package); ModelCenter.Instance.GetModel<HolidayMultiRechargeModel>().UpdateAccumulateRecharge(package); } } System/HolidayWishes/HolidayMultiRechargeModel.cs
New file @@ -0,0 +1,261 @@ using System; using System.Collections; using System.Collections.Generic; using UnityEngine; namespace Snxxz.UI { public class HolidayMultiRechargeModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk, IOpenServerActivity { public const int redPointID = 28003; public Redpoint redpoint = new Redpoint(MainRedDot.RedPoint_HolidayWishes, redPointID); public Operation operationType = Operation.HolidayMultiRecharge; //节日祝福 id从101开始和精彩活动区分 public const int activityType = (int)OpenServerActivityCenter.ActivityType.AT_JRZF; public const int activityID = 103; public bool IsOpen { get { return OperationTimeHepler.Instance.SatisfyOpenCondition(operationType); } } public bool IsAdvance { get { return false; } } public bool priorityOpen { get { return redpoint.state == RedPointState.Simple; } } public event Action accumulateRechargeUpdate; public event Action<int> onStateUpdate; public override void Init() { OperationTimeHepler.Instance.operationStartEvent += OperationStartEvent; OperationTimeHepler.Instance.operationEndEvent += OperationEndEvent; OperationTimeHepler.Instance.dayResetEvent += DayResetEvent; OpenServerActivityCenter.Instance.Register(activityID, this, activityType); } 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(operationType, out operationBase)) { if (resetType == operationBase.resetType) { UpdateRedpoint(); } } } private void OperationEndEvent(Operation operation, int state) { if (operation == operationType && state == 0) { UpdateRedpoint(); if (onStateUpdate != null) { onStateUpdate(activityID); } } } private void OperationStartEvent(Operation operation, int state) { if (operation == operationType && state == 0) { UpdateRedpoint(); if (onStateUpdate != null) { onStateUpdate(activityID); } } } #region 服务端数据 public uint rechargeTotal { get; private set; } //充值总额 public uint getRewardRecord { get; private set; } //领取记录 public uint ActNum { get; private set; } //累充类型 对应界面 public void UpdateAccumulateRecharge(HAA1C_tagMCTotalRechargePlayerInfo package) { OperationBase operationBase; if (OperationTimeHepler.Instance.TryGetOperationTime(operationType, out operationBase)) { OperationAccumulateRecharge operation = operationBase as OperationAccumulateRecharge; if (operation.ActNum != package.ActNum) { return; } ActNum = package.ActNum; 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; } // 累充中存在任意充值档位,独立界面处理,指定判断充值额度为0.01(requireGold=1) // isAnyRecharge 判断是否任意充值档 public bool SatisfyGetReward(OperationAccumulateRecharge.Recharge recharge, bool isAnyRecharge = false) { if (!IsOpen) { return false; } if (IsRewardGot(recharge)) { return false; } if (rechargeTotal >= recharge.requireGold) { if (isAnyRecharge == true && recharge.requireGold != 1) { //没有任意充值档位 return false; } return true; } return false; } //判断是否有任意档位 //累充中存在任意充值档位,独立界面处理,指定判断充值额度为0.01(requireGold=1) public bool hasAnyRecharge() { OperationBase operationBase; if (OperationTimeHepler.Instance.TryGetOperationTime(operationType, out operationBase)) { OperationAccumulateRecharge operation = operationBase as OperationAccumulateRecharge; var reward = operation.GetReward(TimeUtility.ServerNow); if (reward != null) { if (reward.recharges.Count > 0) { var recharge = reward.recharges[0]; if (recharge.requireGold == 1) return true; } } } return false; } //领取奖励封包 public void GetAccumulateRechargeReward(OperationAccumulateRecharge.Recharge recharge) { OperationBase operationBase; if (!OperationTimeHepler.Instance.InOperationTime(operationType)) { SysNotifyMgr.Instance.ShowTip("ActiveOutTime"); return; } if (OperationTimeHepler.Instance.TryGetOperationTime(operationType, 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 = (byte)ActNum.ToString().Length; pak.DataExStr = ActNum.ToString(); GameNetSystem.Instance.SendInfo(pak); } } #endregion #region 红点 public void UpdateRedpoint() { redpoint.state = RedPointState.None; if (!IsOpen) { return; } OperationBase operationBase; if (OperationTimeHepler.Instance.TryGetOperationTime(operationType, 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 (i == 0) { //任意充值单独界面红点 if (SatisfyGetReward(recharge, true)) { redpoint.state = RedPointState.Simple; } } //累计充值界面红点 //if (SatisfyGetReward(recharge)) //{ // redpoint.state = RedPointState.Simple; // break; //} } } } } #endregion } } System/HolidayWishes/HolidayMultiRechargeModel.cs.meta
New file @@ -0,0 +1,11 @@ fileFormatVersion: 2 guid: f99dc5a91c3da8449939180fb30bcab5 MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/HolidayWishes/HolidayRechargeGiftWin.cs
New file @@ -0,0 +1,185 @@ using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using System; namespace Snxxz.UI { public class HolidayRechargeGiftWin : Window { ButtonEx receiveBtn; Button rechargeBtn; Text receiveBtnText; Text TimeTxt; List<ItemCell> itemBaiscs = new List<ItemCell>(); HolidayMultiRechargeModel rechargeModel { get { return ModelCenter.Instance.GetModel<HolidayMultiRechargeModel>(); } } PackModel playerPack { get { return ModelCenter.Instance.GetModel<PackModel>(); } } protected override void BindController() { itemBaiscs.Add(GetWidgt<ItemCell>("ItemCell1")); itemBaiscs.Add(GetWidgt<ItemCell>("ItemCell2")); itemBaiscs.Add(GetWidgt<ItemCell>("ItemCell3")); itemBaiscs.Add(GetWidgt<ItemCell>("ItemCell4")); itemBaiscs.Add(GetWidgt<ItemCell>("ItemCell5")); receiveBtn = GetWidgt<ButtonEx>("ReceiveButton"); rechargeBtn = GetWidgt<Button>("RechargeButton"); TimeTxt = GetWidgt<Text>("ActivityDesText"); receiveBtnText = GetWidgt<Text>("Text"); } protected override void AddListeners() { rechargeBtn.AddListener(ClickRecharge); receiveBtn.AddListener(OnReceiveGift); } protected override void OnPreOpen() { rechargeModel.accumulateRechargeUpdate += DisplayButton; DisplayButton(); DisplayItems(); DisplayOpenTime(); } protected override void OnAfterOpen() { } protected override void OnPreClose() { rechargeModel.accumulateRechargeUpdate -= DisplayButton; } protected override void OnAfterClose() { } void DisplayOpenTime() { OperationAccumulateRecharge operation; if (OperationTimeHepler.Instance.TryGetOperation(rechargeModel.operationType, out operation)) { TimeTxt.text = StringUtility.Contact(Language.Get("ExpActivity_Text1"), operation.ToDisplayTime()); } } void DisplayButton() { OperationBase operationBase; if (OperationTimeHepler.Instance.TryGetOperationTime(rechargeModel.operationType, out operationBase)) { OperationAccumulateRecharge operation = operationBase as OperationAccumulateRecharge; var reward = operation.GetReward(TimeUtility.ServerNow); if (reward != null) { if (reward.recharges.Count > 0) { var recharge = reward.recharges[0]; if (rechargeModel.SatisfyGetReward(recharge, true)) { receiveBtnText.text = Language.Get("AccumulateRecharge_GetReward"); receiveBtn.SetColorful(receiveBtnText, true); receiveBtn.interactable = true; } else if (rechargeModel.IsRewardGot(recharge)) { receiveBtnText.text = Language.Get("Z1044"); receiveBtn.SetColorful(receiveBtnText, false); receiveBtn.interactable = false; } else { receiveBtnText.text = Language.Get("AccumulateRecharge_GetReward"); receiveBtn.SetColorful(receiveBtnText, false); receiveBtn.interactable = true; } } } } } private void DisplayItems() { int index = 0; OperationBase operationBase; OperationAccumulateRecharge.Recharge recharge = null; if (OperationTimeHepler.Instance.TryGetOperationTime(rechargeModel.operationType, 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 < itemBaiscs.Count; i++) { if (recharge != null && i < recharge.items.Count) { var item = recharge.items[i]; itemBaiscs[i].gameObject.SetActive(true); ItemCellModel itemCellModel = new ItemCellModel(item.id, true, (ulong)item.count); itemBaiscs[i].Init(itemCellModel); itemBaiscs[i].button.AddListener(() => { ItemTipUtility.Show(item.id); }); itemBaiscs[i].auctionIcon.gameObject.SetActive(item.bind > 0 ? true : false); } else { itemBaiscs[i].gameObject.SetActive(false); } } } private void OnReceiveGift() { OperationBase operationBase; if (OperationTimeHepler.Instance.TryGetOperationTime(rechargeModel.operationType, out operationBase)) { OperationAccumulateRecharge operation = operationBase as OperationAccumulateRecharge; var reward = operation.GetReward(TimeUtility.ServerNow); if (reward != null) { if (reward.recharges.Count > 0) { var recharge = reward.recharges[0]; if (rechargeModel.SatisfyGetReward(recharge, true)) { if (playerPack.GetEmptyGridCount(PackType.Item) > recharge.items.Count) { rechargeModel.GetAccumulateRechargeReward(recharge); } else { SysNotifyMgr.Instance.ShowTip("BagFull"); } } else { SysNotifyMgr.Instance.ShowTip("FairylandCermonyRecharge1"); } } } } } private void ClickRecharge() { WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.VipRechargeFunc1); } } } System/HolidayWishes/HolidayRechargeGiftWin.cs.meta
New file @@ -0,0 +1,11 @@ fileFormatVersion: 2 guid: e245118545ae7d84992e6d57923904db MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/HolidayWishes/HolidayWishPoolWin.cs
@@ -27,6 +27,7 @@ Text allStarNum; //可祝福的物品总数 RichText wishLegend; Text OpenTime; Operation operationType = Operation.HolidayWish; @@ -54,6 +55,7 @@ allStarNum = GetWidgt<Text>("allstarnum"); wishLegend = GetWidgt<RichText>("Content1"); OpenTime = GetWidgt<Text>("OpenTime"); } @@ -136,6 +138,14 @@ wishNeedNum2.color = UIHelper.GetUIColor(TextColType.LightYellow, true); } void DisplayOpenTime() { OperationHolidayWish operation; if (OperationTimeHepler.Instance.TryGetOperation(operationType, out operation)) { OpenTime.text = StringUtility.Contact(Language.Get("ExpActivity_Text1"), operation.ToDisplayTime()); } } void Display() { @@ -159,6 +169,7 @@ } DisplayScroll(); DisplayOpenTime(); var itemCnt = playerPack.GetItemCountByID(PackType.Item, model.wishItemID); System/HolidayWishes/HolidayWishesWin.cs
@@ -13,6 +13,10 @@ public class HolidayWishesWin : OneLevelWin { HolidayMultiRechargeModel rechargeModel { get { return ModelCenter.Instance.GetModel<HolidayMultiRechargeModel>(); } } int wishOrder = 0; // 如果外部存在跳转或者期望打开界面,则不根据红点跳转 #region Built-in protected override void AddListeners() @@ -20,7 +24,7 @@ base.AddListeners(); SetFunctionListener(0, ShowLoginWin); SetFunctionListener(1, ShowHolidayWishPoolWin); SetFunctionListener(2, ShowAlchemyFairy); SetFunctionListener(2, ShowHolidayRechargeGiftWin); SetFunctionListener(3, ShowAlchemyFairyDrug); } @@ -31,6 +35,7 @@ protected override void OnPreOpen() { wishOrder = functionOrder; base.OnPreOpen(); SetFunctionButtonActive(0, true); SetFunctionButtonActive(1, true); @@ -47,9 +52,15 @@ SetFunctionButtonActive(1, false); } if (!OpenServerActivityCenter.Instance.IsActivityOpen(103, (int)OpenServerActivityCenter.ActivityType.AT_JRZF)) if (!OpenServerActivityCenter.Instance.IsActivityOpen(103, (int)OpenServerActivityCenter.ActivityType.AT_JRZF) || !rechargeModel.hasAnyRecharge()) { SetFunctionButtonActive(2, false); } else { //默认打开充值大礼界面 functionOrder = 2; } if (!OpenServerActivityCenter.Instance.IsActivityOpen(104, (int)OpenServerActivityCenter.ActivityType.AT_JRZF)) @@ -62,12 +73,16 @@ protected override void OnAfterOpen() { for (int i = 0; i < 4; i++) { if (GetFunctionButtonRedPointState(i) != RedPointState.None) if (wishOrder == 0) { //在OnAfterOpen处理的原因是 FunctionButton在OnEnable和OnDisable 做了注册和注销 for (int i = 0; i < 4; i++) { FunctionButtonInvoke(i); break; if (GetFunctionButtonRedPointState(i) != RedPointState.None) { FunctionButtonInvoke(i); break; } } } } @@ -75,6 +90,7 @@ protected override void OnPreClose() { base.OnPreClose(); wishOrder = 0; } #endregion @@ -93,10 +109,10 @@ functionOrder = 1; } private void ShowAlchemyFairy() private void ShowHolidayRechargeGiftWin() { CloseSubWindows(); WindowCenter.Instance.Open<AlchemyFairyDrugWin>(); WindowCenter.Instance.Open<HolidayRechargeGiftWin>(); functionOrder = 2; } System/HolidayWishes/WishBottleAwardWin.cs
@@ -130,6 +130,11 @@ select.gameObject.SetActive(false); } itemSelect[index].gameObject.SetActive(true); if (SelectIndex == index) { ItemTipUtility.Show(itemID); } SelectIndex = index; }); System/Welfare/OperationTimeHepler.cs
@@ -224,7 +224,19 @@ { OperationBase operationBase = null; var opreationType = package.ActNum == 1 ? Operation.AccumulateRecharge : Operation.DaysAccumulateRecharge; Operation opreationType = Operation.AccumulateRecharge; if (package.ActNum == 1) { opreationType = Operation.AccumulateRecharge; } else if (package.ActNum == 2) { opreationType = Operation.DaysAccumulateRecharge; } else if (package.ActNum == 3) { opreationType = Operation.HolidayMultiRecharge; } operationDict.TryGetValue(opreationType, out operationBase); if (string.IsNullOrEmpty(package.StartDate) || string.IsNullOrEmpty(package.EndtDate)) @@ -1135,6 +1147,7 @@ CollectWords, //收集文字 HolidayLogin, //节日登录 HolidayWish, //节日祝福 HolidayMultiRecharge,//节日祝福的多日累计充值 max, } } System/WindowBase/ModelCenter.cs
@@ -245,6 +245,7 @@ RegisterModel<HolidayLoginModel>(); RegisterModel<HolidayWishPoolModel>(); RegisterModel<HolidayMultiRechargeModel>(); inited = true; }