Core/NetworkPackage/ClientPack/ClientToMapServer/CAA SaleActivity/CAA05_tagCMFlashSaleAppointment.cs
New file @@ -0,0 +1,18 @@ using UnityEngine; using System.Collections; // AA 05 限时抢购预约 #tagCMFlashSaleAppointment public class CAA05_tagCMFlashSaleAppointment : GameNetPackBasic { public uint GoodsID; // 商城表的商品ID public CAA05_tagCMFlashSaleAppointment () { combineCmd = (ushort)0x03FE; _cmd = (ushort)0xAA05; } public override void WriteToBytes () { WriteBytes (GoodsID, NetDataType.DWORD); } } Core/NetworkPackage/ClientPack/ClientToMapServer/CAA SaleActivity/CAA05_tagCMFlashSaleAppointment.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 0bd4980ed38baa24e8d85722181ec836 timeCreated: 1539228128 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Core/NetworkPackage/DTCFile/ClientPack.meta
New file @@ -0,0 +1,9 @@ fileFormatVersion: 2 guid: 722e5e3d30096674e811f5bd191246a0 folderAsset: yes timeCreated: 1539228128 licenseType: Pro DefaultImporter: userData: assetBundleName: assetBundleVariant: Core/NetworkPackage/DTCFile/ClientPack/ClientToMapServer.meta
New file @@ -0,0 +1,9 @@ fileFormatVersion: 2 guid: a75d33f87d2bafb4191666d4978b2e08 folderAsset: yes timeCreated: 1539228128 licenseType: Pro DefaultImporter: userData: assetBundleName: assetBundleVariant: Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA17_tagMCFlashSaleInfo.cs
New file @@ -0,0 +1,20 @@ using UnityEngine; using System.Collections; using Snxxz.UI; // AA 17 限时抢购活动信息 #tagMCFlashSaleInfo public class DTCAA17_tagMCFlashSaleInfo : DtcBasic { public override void Done(GameNetPackBasic vNetPack) { base.Done(vNetPack); HAA17_tagMCFlashSaleInfo vNetData = vNetPack as HAA17_tagMCFlashSaleInfo; OperationTimeHepler.Instance.UpdateFlashRushToBuy(vNetData); } } Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA17_tagMCFlashSaleInfo.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: d00087bdecd7d4947a5c1f5e6d0e98a3 timeCreated: 1539228128 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA18_tagMCFlashSaleAppointmentInfo.cs
New file @@ -0,0 +1,11 @@ using UnityEngine; using System.Collections; // AA 18 限时抢购活动玩家预约信息 #tagMCFlashSaleAppointmentInfo public class DTCAA18_tagMCFlashSaleAppointmentInfo : DtcBasic { public override void Done(GameNetPackBasic vNetPack) { base.Done(vNetPack); HAA18_tagMCFlashSaleAppointmentInfo vNetData = vNetPack as HAA18_tagMCFlashSaleAppointmentInfo; } } Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA18_tagMCFlashSaleAppointmentInfo.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 32d6f801e94f8b84086c12c4672b5dcf timeCreated: 1539228128 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA17_tagMCFlashSaleInfo.cs
New file @@ -0,0 +1,81 @@ using UnityEngine; using System.Collections; // AA 17 限时抢购活动信息 #tagMCFlashSaleInfo public class HAA17_tagMCFlashSaleInfo : GameNetPackBasic { public string StartDate; // 开始日期 y-m-d public string EndtDate; // 结束日期 y-m-d public ushort AdvanceMinutes; // 提前显示分钟 public byte ActivityTimeCount; public tagMCFlashSaleTime[] ActivityTime; //活动时间 public byte IsDayReset; //是否每天重置 public ushort LimitLV; // 限制等级 public byte ShopCount; // 商店数 public tagMCFlashSaleShop[] ShopInfo; // 商店信息, 当有多个商店且有多个活动时间段时则每个时间段对应一个商店; public HAA17_tagMCFlashSaleInfo () { _cmd = (ushort)0xAA17; } public override void ReadFromBytes (byte[] vBytes) { TransBytes (out StartDate, vBytes, NetDataType.Chars, 10); TransBytes (out EndtDate, vBytes, NetDataType.Chars, 10); TransBytes (out AdvanceMinutes, vBytes, NetDataType.WORD); TransBytes (out ActivityTimeCount, vBytes, NetDataType.BYTE); ActivityTime = new tagMCFlashSaleTime[ActivityTimeCount]; for (int i = 0; i < ActivityTimeCount; i ++) { ActivityTime[i] = new tagMCFlashSaleTime(); TransBytes (out ActivityTime[i].StartTime, vBytes, NetDataType.Chars, 5); TransBytes (out ActivityTime[i].EndtTime, vBytes, NetDataType.Chars, 5); } TransBytes (out IsDayReset, vBytes, NetDataType.BYTE); TransBytes (out LimitLV, vBytes, NetDataType.WORD); TransBytes (out ShopCount, vBytes, NetDataType.BYTE); ShopInfo = new tagMCFlashSaleShop[ShopCount]; for (int i = 0; i < ShopCount; i ++) { ShopInfo[i] = new tagMCFlashSaleShop(); TransBytes (out ShopInfo[i].DayIndex, vBytes, NetDataType.BYTE); TransBytes (out ShopInfo[i].TimeIndex, vBytes, NetDataType.BYTE); TransBytes (out ShopInfo[i].GiftbagCount, vBytes, NetDataType.BYTE); ShopInfo[i].GiftbagInfo = new tagMCFlashSaleGiftbag[ShopInfo[i].GiftbagCount]; for (int j = 0; j < ShopInfo[i].GiftbagCount; j ++) { ShopInfo[i].GiftbagInfo[j] = new tagMCFlashSaleGiftbag(); TransBytes (out ShopInfo[i].GiftbagInfo[j].GiftID, vBytes, NetDataType.DWORD); TransBytes (out ShopInfo[i].GiftbagInfo[j].BuyCountLimit, vBytes, NetDataType.BYTE); TransBytes (out ShopInfo[i].GiftbagInfo[j].ServerBuyCountLimit, vBytes, NetDataType.WORD); TransBytes (out ShopInfo[i].GiftbagInfo[j].MoneyType, vBytes, NetDataType.BYTE); TransBytes (out ShopInfo[i].GiftbagInfo[j].MoneyNumber, vBytes, NetDataType.DWORD); TransBytes (out ShopInfo[i].GiftbagInfo[j].MoneyOriginal, vBytes, NetDataType.DWORD); TransBytes (out ShopInfo[i].GiftbagInfo[j].ItemID, vBytes, NetDataType.DWORD); TransBytes (out ShopInfo[i].GiftbagInfo[j].ItemCount, vBytes, NetDataType.WORD); TransBytes (out ShopInfo[i].GiftbagInfo[j].IsBind, vBytes, NetDataType.BYTE); } } } public struct tagMCFlashSaleGiftbag { public uint GiftID; //商城表的物品ID public byte BuyCountLimit; //限购数 public ushort ServerBuyCountLimit; //全服限购数 public byte MoneyType; //消耗货币类型 public uint MoneyNumber; //消耗货币数量 public uint MoneyOriginal; //原价 public uint ItemID; public ushort ItemCount; public byte IsBind; } public struct tagMCFlashSaleShop { public byte DayIndex; // 活动第几天 public byte TimeIndex; // 第几个时间段 public byte GiftbagCount; // 商店礼包数 public tagMCFlashSaleGiftbag[] GiftbagInfo; // 礼包信息 } public struct tagMCFlashSaleTime { public string StartTime; // 开始时间 H:M public string EndtTime; // 结束时间 H:M } } Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA17_tagMCFlashSaleInfo.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: ed9668281d90fdc4f97232ce3fcd3c9d timeCreated: 1539228128 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA18_tagMCFlashSaleAppointmentInfo.cs
New file @@ -0,0 +1,29 @@ using UnityEngine; using System.Collections; // AA 18 限时抢购活动玩家预约信息 #tagMCFlashSaleAppointmentInfo public class HAA18_tagMCFlashSaleAppointmentInfo : GameNetPackBasic { public ushort GiftItemCount; // 礼包数 public tagMCFlashSaleItemYY[] ItemInfo; // 物品信息 public HAA18_tagMCFlashSaleAppointmentInfo () { _cmd = (ushort)0xAA18; } public override void ReadFromBytes (byte[] vBytes) { TransBytes (out GiftItemCount, vBytes, NetDataType.WORD); ItemInfo = new tagMCFlashSaleItemYY[GiftItemCount]; for (int i = 0; i < GiftItemCount; i ++) { ItemInfo[i] = new tagMCFlashSaleItemYY(); TransBytes (out ItemInfo[i].GiftID, vBytes, NetDataType.DWORD); TransBytes (out ItemInfo[i].IsAppointment, vBytes, NetDataType.BYTE); } } public struct tagMCFlashSaleItemYY { public uint GiftID; //商城表的ID public byte IsAppointment; //是否预约 } } Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA18_tagMCFlashSaleAppointmentInfo.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 44e6594130c5e614c8411949a184b843 timeCreated: 1539228128 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/OpenServerActivity/FlashRushToBuyModel.cs
@@ -59,22 +59,71 @@ } public OperationFlashRushToBuy.FlashSale presentFlashSale { get; private set; } public void UpdateSelectFlashSaleTime(int index) public OperationFlashRushToBuy.FlashSaleShop presentFlashShop { get; private set; } public void UpdateSelectFlashSaleTime(int dayIndex,int timeIndex) { presentFlashShop = default(OperationFlashRushToBuy.FlashSaleShop); OperationFlashRushToBuy operation = GetOperationFlashRushToBuy(); if(operation != null) { OperationFlashRushToBuy.FlashSaleShop flashShop; operation.TryGetFlashShop(dayIndex, timeIndex, out flashShop); presentFlashShop = flashShop; } } public OperationFlashRushToBuy GetOperationFlashRushToBuy() { OperationBase operationBase; if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.FlashRushToBuy, out operationBase)) { OperationFlashRushToBuy operation = operationBase as OperationFlashRushToBuy; OperationFlashRushToBuy.FlashSale flashSale; operation.TryGetFlashSale(TimeUtility.ServerNow, out flashSale); presentFlashSale = flashSale; return operationBase as OperationFlashRushToBuy; } return null; } public FlashRushToBuySate GetActivityState(out int seconds) { OperationBase operationBase; OperationTimeHepler.Instance.TryGetOperationTime(Operation.FlashRushToBuy, out operationBase); seconds = 0; FlashRushToBuySate rushToBuySate = FlashRushToBuySate.InAdvance; var inAdvance = false; if (operationBase != null) { if (operationBase.InAdvanceTime(TimeUtility.ServerNow)) { inAdvance = true; seconds = operationBase.GetSecondsBeforeStart(TimeUtility.ServerNow); } else { OperationFlashSale operation = operationBase as OperationFlashSale; seconds = operation.GetResetSurplusTime(); } } if (seconds > 0) { if (inAdvance) { rushToBuySate = FlashRushToBuySate.InAdvance; } else { rushToBuySate = FlashRushToBuySate.Begining; } } else { rushToBuySate = FlashRushToBuySate.End; } return rushToBuySate; } private void OperationEndEvent(Operation type, int state) { if (type == Operation.FlashSale && state == 0) if (type == Operation.FlashRushToBuy && state == 0) { UpdateRedpoint(); if (onStateUpate != null) @@ -86,7 +135,7 @@ private void OperationAdvanceEvent(Operation type) { if (type == Operation.FlashSale) if (type == Operation.FlashRushToBuy) { if (onStateUpate != null) { @@ -97,7 +146,7 @@ private void OperationStartEvent(Operation type, int state) { if (type == Operation.FlashSale && state == 0) if (type == Operation.FlashRushToBuy && state == 0) { UpdateRedpoint(); if (onStateUpate != null) @@ -237,5 +286,12 @@ flashSaleRedpoint.state = RedPointState.Simple; } } public enum FlashRushToBuySate { InAdvance,//提前 Begining, //活动中 End, //结束 } } } System/OpenServerActivity/FlashRushToBuyWin.cs
@@ -13,7 +13,7 @@ StoreModel storeModel { get { return ModelCenter.Instance.GetModel<StoreModel>(); } } FlashRushToBuyModel rushToBuyModel { get { return ModelCenter.Instance.GetModel<FlashRushToBuyModel>(); } } OperationFlashRushToBuy operation = null; #region Built-in protected override void BindController() { @@ -25,12 +25,11 @@ protected override void OnPreOpen() { GlobalTimeEvent.Instance.secondEvent += SecondEvent; SetDisplayModel(); TimeMgr.Instance.OnDayEvent += OnDayEvent; OperationTimeHepler.Instance.operationStartEvent += OperationStartEvent; storeModel.RefreshBuyShopLimitEvent += RefreshBuyShopLimitEvent; OperationTimeHepler.Instance.operationTimeUpdateEvent += OperationTimeUpdateEvent; CreateOperationTimes(); Display(); } @@ -41,7 +40,6 @@ protected override void OnPreClose() { GlobalTimeEvent.Instance.secondEvent -= SecondEvent; TimeMgr.Instance.OnDayEvent -= OnDayEvent; OperationTimeHepler.Instance.operationStartEvent -= OperationStartEvent; storeModel.RefreshBuyShopLimitEvent -= RefreshBuyShopLimitEvent; @@ -53,24 +51,53 @@ } #endregion private void CreateOperationTimes() private void SetDisplayModel() { operation = null; OperationBase operationBase; if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.FlashRushToBuy, out operationBase)) { OperationFlashRushToBuy operation = operationBase as OperationFlashRushToBuy; saleTimeCtrl.Refresh(); for(int i = 0; i < operation.times.Count; i++) { saleTimeCtrl.AddCell(ScrollerDataType.Header,i,CreateSaleItem); } saleTimeCtrl.Restart(); operation = operationBase as OperationFlashRushToBuy; } } public void CreateSaleItem(CellView cellView) private void Display() { if (rushToBuyModel.presentFlashShop.Equals(default(OperationFlashRushToBuy.FlashSaleShop)) || operation == null) return; opreationTimeText.text = StringUtility.Contact(Language.Get("ExpActivity_Text1"), operation.ToDisplayTime()); if (rushToBuyModel.presentFlashShop.items.Length > 0) { var moneyType = rushToBuyModel.presentFlashShop.items[0].moneyType; moneyIcon.SetIconWithMoneyType(moneyType); moneyNumText.text = UIHelper.GetMoneyCnt(moneyType).ToString(); } CreateOperationTimes(); CreateSaleItem(); } private void CreateOperationTimes() { if (operation == null) return; saleTimeCtrl.Refresh(); for (int i = 0; i < operation.flashShops.Count; i++) { saleTimeCtrl.AddCell(ScrollerDataType.Header, i); } saleTimeCtrl.Restart(); } public void CreateSaleItem() { saleItemCtrl.Refresh(); var flashItems = rushToBuyModel.presentFlashShop.items; for (int i = 0; i < flashItems.Length; i++) { saleItemCtrl.AddCell(ScrollerDataType.Header, i); } saleItemCtrl.Restart(); } private void OperationTimeUpdateEvent(Operation type) @@ -85,26 +112,7 @@ Display(); } private void Display() { OperationBase operationBase; if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.FlashRushToBuy, out operationBase)) { OperationFlashRushToBuy operation = operationBase as OperationFlashRushToBuy; opreationTimeText.text = StringUtility.Contact(Language.Get("ExpActivity_Text1"), operation.ToDisplayTime()); OperationFlashRushToBuy.FlashSale flashSale; if (operation.TryGetFlashSale(TimeUtility.ServerNow, out flashSale)) { if (flashSale.gifts.Length > 0) { var moneyType = flashSale.gifts[0].moneyType; moneyIcon.SetIconWithMoneyType(moneyType); moneyNumText.text = UIHelper.GetMoneyCnt(moneyType).ToString(); } } } GetSurplusTime(); } private void OperationStartEvent(Operation type, int state) { @@ -114,51 +122,9 @@ } } private void SecondEvent() { GetSurplusTime(); } private void OnDayEvent() { Display(); } private string GetSurplusTime() { OperationBase operationBase; OperationTimeHepler.Instance.TryGetOperationTime(Operation.FlashRushToBuy, out operationBase); var seconds = 0; var inAdvance = false; if (operationBase != null) { if (operationBase.InAdvanceTime(TimeUtility.ServerNow)) { inAdvance = true; seconds = operationBase.GetSecondsBeforeStart(TimeUtility.ServerNow); } else { OperationFlashRushToBuy operation = operationBase as OperationFlashRushToBuy; seconds = operation.GetResetSurplusTime(); } } if (seconds > 0) { if (inAdvance) { return Language.Get("OperationAdvanceOpen", TimeUtility.SecondsToDHMSCHS(seconds)); } else { return Language.Get("LimitGift1", TimeUtility.SecondsToDHMSCHS(seconds)); } } else { return Language.Get("ActivityEnd"); } } } } System/OpenServerActivity/FlashSaleItemCell.cs
@@ -20,15 +20,15 @@ public override void Refresh(CellView cell) { if (rushToBuyModel.presentFlashSale.Equals(default(OperationFlashRushToBuy.FlashSale))) return; if (rushToBuyModel.presentFlashShop.Equals(default(OperationFlashRushToBuy.FlashSaleShop))) return; var saleItem = rushToBuyModel.presentFlashSale.gifts[cell.index]; var saleItem = rushToBuyModel.presentFlashShop.items[cell.index]; originalMoneyIcon.SetIconWithMoneyType(saleItem.moneyType); presentMoneyIcon.SetIconWithMoneyType(saleItem.moneyType); originalPrice.text = saleItem.moneyOriginal.ToString(); presentPrice.text = saleItem.moneyNumber.ToString(); var buyInfo = storeModel.GetBuyShopLimit((uint)saleItem.id); var buyInfo = storeModel.GetBuyShopLimit((uint)saleItem.shopId); var buyCount = 0; if (buyInfo != null) { System/OpenServerActivity/FlashSaleTimeCell.cs
@@ -7,9 +7,16 @@ public class FlashSaleTimeCell : ScrollerUI { [SerializeField] Text remainText; FlashRushToBuyModel rushToBuyModel { get { return ModelCenter.Instance.GetModel<FlashRushToBuyModel>(); } } public override void Refresh(CellView cell) { var operation = rushToBuyModel.GetOperationFlashRushToBuy(); if (operation == null) return; } } } System/OpenServerActivity/OperationFlashRushToBuy.cs
@@ -6,18 +6,21 @@ { public class OperationFlashRushToBuy : OperationBase { public List<FlashSale> flashShops = new List<FlashSale>(); public List<FlashSaleShop> flashShops = new List<FlashSaleShop>(); public bool TryGetFlashSale(DateTime time, out FlashSale flashSale) public bool TryGetFlashShop(int dayIndex,int timeIndex ,out FlashSaleShop flashSaleShop) { flashSale = default(FlashSale); var index = IndexOfTime(time, inAdvanceMinute > 0 ? -1 : 0); index = Mathf.Min(index, flashShops.Count - 1); if (index >= 0) flashSaleShop = default(FlashSaleShop); for (int i = 0; i < flashShops.Count; i++) { flashSale = flashShops[index]; var shop = flashShops[i]; if (shop.dayIndex == dayIndex && shop.timeIndex == timeIndex) { return true; } } return index >= 0; return false; } public override bool SatisfyOpenCondition() @@ -44,59 +47,53 @@ return textBuilder.ToString(); } public void ParsePackage(HAA11_tagMCSpringSaleInfo package) public void ParsePackage(HAA17_tagMCFlashSaleInfo package) { for (int i = 0; i < package.ShopCount; i++) { var flashShop = new FlashSale(); var gift = new FlashSaleShop(); var shop = package.ShopInfo[i]; flashShop.gifts = new FlashSaleGift[shop.GiftbagCount]; gift.dayIndex = shop.DayIndex; gift.timeIndex = shop.TimeIndex; gift.items = new FlashSaleItem[shop.GiftbagCount]; for (int k = 0; k < shop.GiftbagCount; k++) { var gift = new FlashSaleGift(); var pakGift = shop.GiftbagInfo[k]; gift.id = (int)pakGift.GiftID; gift.limitNum = pakGift.BuyCountLimit; gift.moneyNumber = (int)pakGift.MoneyNumber; gift.moneyType = pakGift.MoneyType; gift.moneyOriginal = (int)pakGift.MoneyOriginal; gift.items = new FlashSaleItem[pakGift.GiftItemCount]; for (int q = 0; q < pakGift.GiftItemCount; q++) { var item = new FlashSaleItem(); item.itemId = (int)pakGift.ItemInfo[q].ItemID; item.isBind = pakGift.ItemInfo[q].IsBind; item.itemCount = pakGift.ItemInfo[q].ItemCount; item.isMainItem = pakGift.ItemInfo[q].IsMainItem == 1; gift.items[q] = item; } flashShop.gifts[k] = gift; var item = new FlashSaleItem(); var saleItem = shop.GiftbagInfo[k]; item.shopId = (int)saleItem.GiftID; item.limitNum = saleItem.BuyCountLimit; item.fullServerLimitNum = saleItem.ServerBuyCountLimit; item.moneyType = saleItem.MoneyType; item.moneyNumber = (int)saleItem.MoneyNumber; item.moneyOriginal = (int)saleItem.MoneyOriginal; item.itemId = (int)saleItem.ItemID; item.itemCount = saleItem.ItemCount; item.isBind = saleItem.IsBind; gift.items[k] = item; } flashShops.Add(flashShop); flashShops.Add(gift); } } public struct FlashSale public struct FlashSaleShop { public FlashSaleGift[] gifts; } public struct FlashSaleGift { public int id; public int limitNum; public int moneyType; public int moneyNumber; public int moneyOriginal; public int dayIndex; // 活动第几天 public int timeIndex;//第几个时间段 public FlashSaleItem[] items; } public struct FlashSaleItem { public int shopId; public int limitNum;//个人限购数量 public int fullServerLimitNum; //个人限购数量 public int moneyType; public int moneyNumber; public int moneyOriginal; public int itemId; public int itemCount; public int isBind; public bool isMainItem; } } } System/Welfare/OperationTimeHepler.cs
@@ -226,7 +226,7 @@ /// 限时抢购 /// </summary> /// <param name="package"></param> public void UpdateFlashRushToBuy(HAA11_tagMCSpringSaleInfo package) public void UpdateFlashRushToBuy(HAA17_tagMCFlashSaleInfo package) { OperationBase operationBase = null; operationDict.TryGetValue(Operation.FlashRushToBuy, out operationBase);