Core/GameEngine/DataToCtl/PackageRegedit.cs
@@ -386,6 +386,9 @@ Register(typeof(HA3C1_tagMCDogzHelpbattleState), typeof(DTCA3C1_tagMCDogzHelpbattleState)); #endregion Register(typeof(HA324_tagMCBindJadeWheelResult),typeof(DTCA324_tagMCBindJadeWheelResult)); Register(typeof(HAA19_tagMCActWishingWellInfo), typeof(DTCAA19_tagMCActWishingWellInfo)); Register(typeof(HAA1A_tagMCActWishingWellPlayerInfo), typeof(DTCAA1A_tagMCActWishingWellPlayerInfo)); } private static void Register(Type _pack, Type _business) Core/NetworkPackage/ClientPack/ClientToMapServer/CAA SaleActivity/CAA06_tagCMActWishing.cs
New file @@ -0,0 +1,24 @@ using UnityEngine; using System.Collections; // AA 06 许愿池活动许愿 #tagCMActWishing public class CAA06_tagCMActWishing : GameNetPackBasic { public byte SrcWellType; // 来源库 0-可选库 1-结果库 public byte SrcIndex; // 来源索引 public byte DesWellType; // 目标库 0-可选库 1-结果库 public byte DesIndex; // 目标索引 public CAA06_tagCMActWishing () { combineCmd = (ushort)0x03FE; _cmd = (ushort)0xAA06; } public override void WriteToBytes () { WriteBytes (SrcWellType, NetDataType.BYTE); WriteBytes (SrcIndex, NetDataType.BYTE); WriteBytes (DesWellType, NetDataType.BYTE); WriteBytes (DesIndex, NetDataType.BYTE); } } Core/NetworkPackage/ClientPack/ClientToMapServer/CAA SaleActivity/CAA06_tagCMActWishing.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: a0799e6815403574f8e0804fc8f3489a timeCreated: 1540173914 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Core/NetworkPackage/ClientPack/ClientToMapServer/CAA SaleActivity/CAA07_tagCMActWishingRefresh.cs
New file @@ -0,0 +1,18 @@ using UnityEngine; using System.Collections; // AA 07 许愿池活动刷新奖池 #tagCMActWishingRefresh public class CAA07_tagCMActWishingRefresh : GameNetPackBasic { public byte IsFree; // 是否免费刷新 public CAA07_tagCMActWishingRefresh () { combineCmd = (ushort)0x03FE; _cmd = (ushort)0xAA07; } public override void WriteToBytes () { WriteBytes (IsFree, NetDataType.BYTE); } } Core/NetworkPackage/ClientPack/ClientToMapServer/CAA SaleActivity/CAA07_tagCMActWishingRefresh.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: b503cda0c98dd19448d4dc0e2093d333 timeCreated: 1540173914 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA19_tagMCActWishingWellInfo.cs
New file @@ -0,0 +1,11 @@ using UnityEngine; using System.Collections; using Snxxz.UI; // AA 19 许愿池活动信息 #tagMCActWishingWellInfo public class DTCAA19_tagMCActWishingWellInfo : DtcBasic { public override void Done(GameNetPackBasic vNetPack) { base.Done(vNetPack); HAA19_tagMCActWishingWellInfo vNetData = vNetPack as HAA19_tagMCActWishingWellInfo; OperationTimeHepler.Instance.UpdateWishingWellInfo(vNetData); } } Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA19_tagMCActWishingWellInfo.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 0f5809b019a6bd3458b831c341567252 timeCreated: 1540173914 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA1A_tagMCActWishingWellPlayerInfo.cs
New file @@ -0,0 +1,16 @@ using UnityEngine; using System.Collections; using Snxxz.UI; // AA 1A 许愿池活动玩家信息 #tagMCActWishingWellPlayerInfo public class DTCAA1A_tagMCActWishingWellPlayerInfo : DtcBasic { WishingPoolModel wishModel { get { return ModelCenter.Instance.GetModel<WishingPoolModel>(); } } public override void Done(GameNetPackBasic vNetPack) { base.Done(vNetPack); HAA1A_tagMCActWishingWellPlayerInfo vNetData = vNetPack as HAA1A_tagMCActWishingWellPlayerInfo; wishModel.SetWishingWellPlayerInfo(vNetData); } } Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA1A_tagMCActWishingWellPlayerInfo.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: f3b0342d3d2578d41a07f145e65fca6f timeCreated: 1540173914 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA19_tagMCActWishingWellInfo.cs
New file @@ -0,0 +1,43 @@ using UnityEngine; using System.Collections; // AA 19 许愿池活动信息 #tagMCActWishingWellInfo public class HAA19_tagMCActWishingWellInfo : GameNetPackBasic { public string StartDate; // 开始日期 y-m-d public string EndtDate; // 结束日期 y-m-d public byte IsDayReset; //是否每天重置 public byte ResetType; // 重置类型,0-0点重置;1-5点重置 public ushort LimitLV; // 限制等级 public ushort Count; // 物品数 public tagMCWishingWellItem[] WellItemInfo; // 随机库物品信息 public HAA19_tagMCActWishingWellInfo () { _cmd = (ushort)0xAA19; } 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 ResetType, vBytes, NetDataType.BYTE); TransBytes (out LimitLV, vBytes, NetDataType.WORD); TransBytes (out Count, vBytes, NetDataType.WORD); WellItemInfo = new tagMCWishingWellItem[Count]; for (int i = 0; i < Count; i ++) { WellItemInfo[i] = new tagMCWishingWellItem(); TransBytes (out WellItemInfo[i].ItemID, vBytes, NetDataType.DWORD); TransBytes (out WellItemInfo[i].ItemCnt, vBytes, NetDataType.WORD); TransBytes (out WellItemInfo[i].IsBind, vBytes, NetDataType.BYTE); TransBytes (out WellItemInfo[i].Mark, vBytes, NetDataType.DWORD); } } public struct tagMCWishingWellItem { public uint ItemID; // 物品ID public ushort ItemCnt; // 物品数量 public byte IsBind; // 是否绑定 public uint Mark; // 排序标识 } } Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA19_tagMCActWishingWellInfo.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 9e29f30207d395349a95715863102f47 timeCreated: 1540173914 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA1A_tagMCActWishingWellPlayerInfo.cs
New file @@ -0,0 +1,107 @@ using UnityEngine; using System.Collections; // AA 1A 许愿池活动玩家信息 #tagMCActWishingWellPlayerInfo public class HAA1A_tagMCActWishingWellPlayerInfo : GameNetPackBasic { public uint FreeStartTime; // 免费开始倒计时时间 public uint WishCnt; // 许愿付费刷新次数 public byte WellItemCnt; //许愿池物品数量 public tagMCPlayerWishingWellItem[] WellItemInfo; // 随机库物品信息 public byte CurAwardCnt; // 当前奖励物品数量 public tagMCPlayerWishingWellItem[] CurAwardItemInfo; // 当前奖励物品 public byte LastAwardCnt; // 可领取奖励物品数量 public tagMCPlayerWishingWellItem[] LastAwardItemInfo; // 可领取奖励物品 public HAA1A_tagMCActWishingWellPlayerInfo () { _cmd = (ushort)0xAA1A; } public override void ReadFromBytes (byte[] vBytes) { TransBytes (out FreeStartTime, vBytes, NetDataType.DWORD); TransBytes (out WishCnt, vBytes, NetDataType.DWORD); TransBytes (out WellItemCnt, vBytes, NetDataType.BYTE); WellItemInfo = new tagMCPlayerWishingWellItem[WellItemCnt]; for (int i = 0; i < WellItemCnt; i ++) { WellItemInfo[i] = new tagMCPlayerWishingWellItem(); TransBytes (out WellItemInfo[i].ItemID, vBytes, NetDataType.DWORD); TransBytes (out WellItemInfo[i].ItemCnt, vBytes, NetDataType.WORD); TransBytes (out WellItemInfo[i].IsBind, vBytes, NetDataType.BYTE); } TransBytes (out CurAwardCnt, vBytes, NetDataType.BYTE); CurAwardItemInfo = new tagMCPlayerWishingWellItem[CurAwardCnt]; for (int i = 0; i < CurAwardCnt; i ++) { CurAwardItemInfo[i] = new tagMCPlayerWishingWellItem(); TransBytes (out CurAwardItemInfo[i].ItemID, vBytes, NetDataType.DWORD); TransBytes (out CurAwardItemInfo[i].ItemCnt, vBytes, NetDataType.WORD); TransBytes (out CurAwardItemInfo[i].IsBind, vBytes, NetDataType.BYTE); } TransBytes (out LastAwardCnt, vBytes, NetDataType.BYTE); LastAwardItemInfo = new tagMCPlayerWishingWellItem[LastAwardCnt]; for (int i = 0; i < LastAwardCnt; i ++) { LastAwardItemInfo[i] = new tagMCPlayerWishingWellItem(); TransBytes (out LastAwardItemInfo[i].ItemID, vBytes, NetDataType.DWORD); TransBytes (out LastAwardItemInfo[i].ItemCnt, vBytes, NetDataType.WORD); TransBytes (out LastAwardItemInfo[i].IsBind, vBytes, NetDataType.BYTE); } } public struct tagMCPlayerWishingWellItem { public uint ItemID; // 物品ID public ushort ItemCnt; // 物品数量 public byte IsBind; // 是否绑定 } } Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA1A_tagMCActWishingWellPlayerInfo.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 6456db1385cb210498985c967a4a075b timeCreated: 1540173914 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/OpenServerActivity/ImpactRankModel.cs
@@ -787,6 +787,8 @@ FairyGrabBossNotice, [Header("限时抢购")] FlashRushToBuy, [Header("许愿池")] WishingPool, } } System/OpenServerActivity/OperationWishingWellInfo.cs
New file @@ -0,0 +1,103 @@ using System; using System.Collections; using System.Collections.Generic; using UnityEngine; namespace Snxxz.UI { public class OperationWishingWellInfo : OperationBase { public Dictionary<int, List<WishingWellItem>> wellItemDict = new Dictionary<int, List<WishingWellItem>>(); //key 组 public override void Reset() { base.Reset(); wellItemDict.Clear(); } 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 List<WishingWellItem> GetWellItemsByGroupType(int groupType) { List<WishingWellItem> items = null; wellItemDict.TryGetValue(groupType,out items); return items; } public int GetActivityDay() { int dayIndex = IndexOfDays(TimeUtility.ServerNow); return dayIndex + 1; } public void ParsePackage(HAA19_tagMCActWishingWellInfo package) { for (int i = 0; i < package.Count; i++) { var itemInfo = package.WellItemInfo[i]; var wellItem = new WishingWellItem((int)itemInfo.ItemID,itemInfo.ItemCnt,itemInfo.IsBind,(int)itemInfo.Mark); int group = GetGroupTypeByMark(wellItem.mark); if(!wellItemDict.ContainsKey(group)) { List<WishingWellItem> list = new List<WishingWellItem>(); list.Add(wellItem); wellItemDict.Add(group,list); } else { wellItemDict[group].Add(wellItem); } } foreach(var key in wellItemDict.Keys) { wellItemDict[key].Sort(CompareByMark); } } public int GetGroupTypeByMark(int mark) { return mark / 100; } public int GetGroupIndexByMark(int mark) { return mark % 100; } public int CompareByMark(WishingWellItem start,WishingWellItem end) { if(start.mark.CompareTo(end.mark) != 0) { return -start.mark.CompareTo(end.mark); } return 0; } public class WishingWellItem { public int itemId; public int itemCount; public int isBind; public int mark;// 排序标识 public WishingWellItem(int id, int count, int isBind,int mark) { this.itemId = id; this.itemCount = count; this.isBind = isBind; this.mark = mark; } } } } System/OpenServerActivity/OperationWishingWellInfo.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 63866afdba3f2ad47a206dc17e8da80f timeCreated: 1540178667 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/OpenServerActivity/PoolItemCell.cs
@@ -22,15 +22,15 @@ public void Display(int index) { this.index = index; int id = 0; bool isPoolData = wishingModel.TryGetPoolDataByIndex(index,out id); WishingPoolModel.WishingWellItem wellItem = null; bool isPoolData = wishingModel.TryGetPoolDataByIndex(index,out wellItem); bestIconObj.SetActive(false); ItemCellModel cellModel = new ItemCellModel(id); ItemCellModel cellModel = new ItemCellModel(wellItem.itemId,false,(ulong)wellItem.itemCount,wellItem.isBind); itemBaisc.Init(cellModel); itemBaisc.cellBtn.RemoveAllListeners(); itemBaisc.cellBtn.AddListener(()=> { ItemAttrData attrData = new ItemAttrData(id); ItemAttrData attrData = new ItemAttrData(wellItem.itemId, true, (ulong)wellItem.itemCount, -1,wellItem.isBind); tipsModel.SetItemTipsModel(attrData); }); } System/OpenServerActivity/WishGroupCell.cs
New file @@ -0,0 +1,62 @@ using EnhancedUI.EnhancedScroller; using UnityEngine; using UnityEngine.UI; using System; using System.Collections.Generic; namespace Snxxz.UI { public class WishGroupCell : ScrollerUI { [SerializeField] List<PoolItem> poolItems = new List<PoolItem>(); WishingPoolModel wishModel { get { return ModelCenter.Instance.GetModel<WishingPoolModel>(); } } ItemTipsModel tipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } } public override void Refresh(CellView cell) { var operation = wishModel.GetOperationWishing(); if (operation == null) return; var items = operation.GetWellItemsByGroupType(cell.index); if (items == null) return; for(int i = 0; i < poolItems.Count; i++) { var poolItem = poolItems[i]; if(i < items.Count) { poolItem.Object.SetActive(true); var info = items[i]; ItemCellModel cellModel = new ItemCellModel(info.itemId,true,(ulong)info.itemCount,info.isBind); poolItem.itemBaisc.Init(cellModel); if(i == 0) { poolItem.bestImg.SetActive(true); } else { poolItem.bestImg.SetActive(false); } poolItem.itemBaisc.cellBtn.RemoveAllListeners(); poolItem.itemBaisc.cellBtn.AddListener(()=> { ItemAttrData attrData = new ItemAttrData(info.itemId,true, (ulong)info.itemCount,-1,info.isBind); tipsModel.SetItemTipsModel(attrData); }); } else { poolItem.Object.SetActive(false); } } } [Serializable] public class PoolItem { public GameObject Object; public CommonItemBaisc itemBaisc; public GameObject bestImg; } } } System/OpenServerActivity/WishGroupCell.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 788a58cd965d16646b5452012b08d27b timeCreated: 1540193610 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/OpenServerActivity/WishingPoolModel.cs
@@ -5,14 +5,18 @@ namespace Snxxz.UI { public class WishingPoolModel : Model,IBeforePlayerDataInitialize,IPlayerLoginOk public class WishingPoolModel : Model,IBeforePlayerDataInitialize,IPlayerLoginOk,IOpenServerActivity { public event Action<int> UpdateWishingDataEvent; public event Action<int> UpdatePoolDataEvent; public event Action<int> onStateUpate; public const int WishRedKey = 20915; public override void Init() { OperationTimeHepler.Instance.operationStartEvent += OperationStartEvent; OperationTimeHepler.Instance.operationEndEvent += OperationEndEvent; OperationTimeHepler.Instance.operationAdvanceEvent += OperationAdvanceEvent; OpenServerActivityCenter.Instance.Register((int)OpenServerActivityCenter.OSActivityType.FlashRushToBuy, this); } public void OnBeforePlayerDataInitialize() @@ -23,12 +27,97 @@ public void OnPlayerLoginOk() { SetWishingPoolData(); UpdateRedpoint(); } public override void UnInit() { } public bool IsOpen { get { return OperationTimeHepler.Instance.SatisfyOpenCondition(Operation.WishingWellInfo); } } public bool priorityOpen { get { return wishPoolRedpoint.state == RedPointState.Simple; } } public bool IsAdvance { get { return OperationTimeHepler.Instance.SatisfyAdvanceCondition(Operation.WishingWellInfo); } } private void OperationEndEvent(Operation type, int state) { if (type == Operation.WishingWellInfo && state == 1) { UpdateRedpoint(); if (onStateUpate != null) { onStateUpate((int)OpenServerActivityCenter.OSActivityType.WishingPool); } } } private void OperationAdvanceEvent(Operation type) { if (type == Operation.WishingWellInfo) { if (onStateUpate != null) { onStateUpate((int)OpenServerActivityCenter.OSActivityType.WishingPool); } } } private void OperationStartEvent(Operation type, int state) { if (type == Operation.WishingWellInfo && state == 1) { UpdateRedpoint(); if (onStateUpate != null) { onStateUpate((int)OpenServerActivityCenter.OSActivityType.WishingPool); } } } public OperationWishingWellInfo GetOperationWishing() { OperationBase operationBase; if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.WishingWellInfo, out operationBase)) { return operationBase as OperationWishingWellInfo; } return null; } public bool TryGetFreeWishCoolTime(out int second) { second = 0; if (freeStartTime == 25) return false; int endhour = freeStartTime + 2; int nowHour = TimeUtility.ServerNow.Hour; second = (endhour - nowHour) * 3600; if(second > 0) { return true; } return false; } #region 本地数据 @@ -42,25 +131,47 @@ #endregion #region 协议 Dictionary<int, int> poolDataDict = new Dictionary<int, int>(); public void SetWishingPoolData() Dictionary<int, WishingWellItem> poolDataDict = new Dictionary<int, WishingWellItem>(); public int freeStartTime { get; private set; }// 免费开始倒计时时间 public int alreadyWishNum { get; private set; } // 许愿付费刷新次数 public void SetWishingWellPlayerInfo(HAA1A_tagMCActWishingWellPlayerInfo wishInfo) { for(int i = 0; i< 8; i++) freeStartTime = (int)wishInfo.FreeStartTime; alreadyWishNum = (int)wishInfo.WishCnt; for(int i = 0; i < wishInfo.WellItemCnt; i++) { int itemId = 1 + i; SetWishingPoolData(i,itemId); var itemInfo = wishInfo.WellItemInfo[i]; WishingWellItem wellItem = new WishingWellItem((int)itemInfo.ItemID,itemInfo.ItemCnt,itemInfo.IsBind); SetWishingPoolData(i,wellItem); } for(int i = 0; i < wishInfo.CurAwardCnt; i++) { var itemInfo = wishInfo.CurAwardItemInfo[i]; WishingWellItem wellItem = new WishingWellItem((int)itemInfo.ItemID, itemInfo.ItemCnt, itemInfo.IsBind); SetWishingData(i, wellItem); } wishingAwardDict.Clear(); for (int i = 0; i < wishInfo.LastAwardCnt; i++) { var itemInfo = wishInfo.LastAwardItemInfo[i]; WishingWellItem wellItem = new WishingWellItem((int)itemInfo.ItemID, itemInfo.ItemCnt, itemInfo.IsBind); SetWishingAwardData(i, wellItem); } UpdateRedpoint(); } public void SetWishingPoolData(int index, int id) public void SetWishingPoolData(int index, WishingWellItem wellItem) { if (!poolDataDict.ContainsKey(index)) { poolDataDict.Add(index, id); poolDataDict.Add(index,wellItem); } else { poolDataDict[index] = id; poolDataDict[index] = wellItem; } if(UpdatePoolDataEvent != null) { @@ -80,16 +191,16 @@ } } Dictionary<int, int> wishingDataDict = new Dictionary<int, int>(); public void SetWishingData(int index,int id) Dictionary<int, WishingWellItem> wishingDataDict = new Dictionary<int, WishingWellItem>(); public void SetWishingData(int index, WishingWellItem wellItem) { if(!wishingDataDict.ContainsKey(index)) { wishingDataDict.Add(index,id); wishingDataDict.Add(index,wellItem); } else { wishingDataDict[index] = id; wishingDataDict[index] = wellItem; } if(UpdateWishingDataEvent != null) @@ -98,21 +209,134 @@ } } public bool TryGetPoolDataByIndex(int index,out int id) Dictionary<int, WishingWellItem> wishingAwardDict = new Dictionary<int, WishingWellItem>(); public void SetWishingAwardData(int index, WishingWellItem wellItem) { return poolDataDict.TryGetValue(index,out id); if (!wishingAwardDict.ContainsKey(index)) { wishingAwardDict.Add(index, wellItem); } else { wishingAwardDict[index] = wellItem; } } public bool IsBetterItem() { return false; } public bool TryGetWishDataByIndex(int index, out int id) public bool TryGetPoolDataByIndex(int index,out WishingWellItem wellItem) { return wishingDataDict.TryGetValue(index, out id); if(poolDataDict.TryGetValue(index, out wellItem)) { if(wellItem.itemId != 0) { return true; } } return false; } public bool TryGetWishDataByIndex(int index, out WishingWellItem wellItem) { if(wishingDataDict.TryGetValue(index, out wellItem)) { if(wellItem.itemId != 0) { return true; } } return false; } public void SendRefreshPoolInfo(int refreshType) { CAA07_tagCMActWishingRefresh wishingRefresh = new CAA07_tagCMActWishingRefresh(); wishingRefresh.IsFree = (byte)refreshType; GameNetSystem.Instance.SendInfo(wishingRefresh); } public void SendRefreshWishInfo(int poolIndex,int wishIndex) { CAA06_tagCMActWishing actWishing = new CAA06_tagCMActWishing(); actWishing.SrcWellType = 0; actWishing.SrcIndex = (byte)poolIndex; actWishing.DesWellType = 1; actWishing.DesIndex = (byte)wishIndex; GameNetSystem.Instance.SendInfo(actWishing); } #endregion #region 红点 public Redpoint wishPoolRedpoint = new Redpoint(MainRedDot.REDPOINT_OPENSERVER, WishRedKey); public const int FREEWISH_REDKEY = 2091501; public Redpoint freeWishRedpoint = new Redpoint(WishRedKey, FREEWISH_REDKEY); public List<Redpoint> wishPointlist = new List<Redpoint>(); public void SetWishRedpoint() { wishPointlist.Clear(); for (int i = 0; i < 5; i++) { int redKey = WishRedKey * 100 + (i + 2); Redpoint redpoint = new Redpoint(WishRedKey,redKey); wishPointlist.Add(redpoint); } } private void UpdateRedpoint() { int second = 0; bool isCool = TryGetFreeWishCoolTime(out second); if(IsOpen && !isCool) { freeWishRedpoint.state = RedPointState.Simple; } else { freeWishRedpoint.state = RedPointState.None; } for (int i = 0; i < wishPointlist.Count; i++) { var wishPoint = wishPointlist[i]; wishPoint.state = RedPointState.None; } for (int i = 0; i < wishPointlist.Count; i++) { var wishPoint = wishPointlist[i]; WishingWellItem wellItem = null; bool isWishData = TryGetWishDataByIndex(i,out wellItem); if(!isWishData) { wishPoint.state = RedPointState.Simple; return; } } } #endregion public void ResetPoolData() { freeStartTime = 25; poolDataDict.Clear(); wishingDataDict.Clear(); wishingAwardDict.Clear(); } public class WishingWellItem { public int itemId; public int itemCount; public int isBind; public WishingWellItem(int id,int count,int isBind) { this.itemId = id; this.itemCount = count; this.isBind = isBind; } } } } System/OpenServerActivity/WishingPoolWin.cs
@@ -8,11 +8,19 @@ public class WishingPoolWin : Window { [SerializeField] DragItem dragItem; [SerializeField] Text activityDayText; [SerializeField] Text totalDayText; [SerializeField] Button lookAllBtn; [SerializeField] Button refreshWishBtn; [SerializeField] Text freeWishCoolText; [SerializeField] List<PoolItemCell> poolItemCells = new List<PoolItemCell>(); [SerializeField] List<WishingCell> wishingCells = new List<WishingCell>(); [SerializeField] GameObject activityOpenObj; [SerializeField] GameObject activityCloseObj; ItemTipsModel tipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } } WishingPoolModel wishingModel { get { return ModelCenter.Instance.GetModel<WishingPoolModel>(); } } OperationWishingWellInfo operation = null; #region Built-in protected override void BindController() { @@ -21,13 +29,16 @@ protected override void AddListeners() { refreshWishBtn.AddListener(ClickRefreshWish); lookAllBtn.AddListener(ClickLook); } protected override void OnPreOpen() { OperationTimeHepler.Instance.operationEndEvent += OperationEndEvent; wishingModel.UpdatePoolDataEvent += UpdatePoolItemByIndex; wishingModel.UpdateWishingDataEvent += UpdateWishItemByIndex; GlobalTimeEvent.Instance.hourEvent += UpdateFreeWishCool; Display(); } @@ -39,6 +50,8 @@ { wishingModel.UpdatePoolDataEvent -= UpdatePoolItemByIndex; wishingModel.UpdateWishingDataEvent -= UpdateWishItemByIndex; GlobalTimeEvent.Instance.hourEvent -= UpdateFreeWishCool; OperationTimeHepler.Instance.operationEndEvent -= OperationEndEvent; } protected override void OnAfterClose() @@ -49,15 +62,22 @@ private void Display() { operation = wishingModel.GetOperationWishing(); if (operation == null) return; UpdatePoolItem(); for(int i = 0; i < wishingCells.Count; i++) { UpdateWishItemByIndex(i); } dragItem.dragItemRect.gameObject.SetActive(false); UpdateFreeWishCool(); UpdateActivityState(); activityDayText.text = Language.Get("SignIn_4", Language.Get(StringUtility.Contact("Num_CHS_", operation.GetActivityDay()))); totalDayText.text = StringUtility.Contact("活动持续", Language.Get(StringUtility.Contact("Num_CHS_",operation.totalDays + 1)), "天"); } #region 许愿逻辑 protected override void LateUpdate() { if(wishingModel.isDraging) @@ -80,7 +100,7 @@ } } } private void CheckWishingCell() { for(int i = 0; i < wishingCells.Count; i++) @@ -91,19 +111,20 @@ var dis = Vector3.Distance(des.center, src.center); if (dis < rect.rect.width / 2) { int poolId = 0; bool isPoolData = wishingModel.TryGetPoolDataByIndex(wishingModel.dragIndex, out poolId); int wishId = 0; bool isWishData = wishingModel.TryGetWishDataByIndex(i, out wishId); if (wishId == 0) { wishingModel.RemovetWishingPoolData(i); } else { wishingModel.SetWishingPoolData(wishingModel.dragIndex, wishId); } wishingModel.SetWishingData(i,poolId); //WishingPoolModel.WishingWellItem wellPoolItem = null; //bool isPoolData = wishingModel.TryGetPoolDataByIndex(wishingModel.dragIndex, out wellPoolItem); //WishingPoolModel.WishingWellItem wellWishItem = null; //bool isWishData = wishingModel.TryGetWishDataByIndex(i, out wellWishItem); //if (wellWishItem.itemId == 0) //{ // wishingModel.RemovetWishingPoolData(i); //} //else //{ // wishingModel.SetWishingPoolData(wishingModel.dragIndex,wellWishItem); //} //wishingModel.SetWishingData(i,wellPoolItem); wishingModel.SendRefreshWishInfo(wishingModel.dragIndex,i); break; } } @@ -111,13 +132,13 @@ private bool TryGetDragItem() { int id = 0; bool isPoolData = wishingModel.TryGetPoolDataByIndex(wishingModel.dragIndex, out id); WishingPoolModel.WishingWellItem wellItem = null; bool isPoolData = wishingModel.TryGetPoolDataByIndex(wishingModel.dragIndex, out wellItem); if (isPoolData) { dragItem.dragItemRect.gameObject.SetActive(true); dragItem.dragBestIcon.SetActive(false); ItemCellModel cellModel = new ItemCellModel(id); ItemCellModel cellModel = new ItemCellModel(wellItem.itemId,false,(ulong)wellItem.itemCount,wellItem.isBind); dragItem.dragItemBasic.Init(cellModel); } else @@ -137,9 +158,9 @@ private void UpdatePoolItemByIndex(int index) { int id = 0; WishingPoolModel.WishingWellItem wellItem = null; var poolItemCell = poolItemCells[index]; bool isPoolData = wishingModel.TryGetPoolDataByIndex(index, out id); bool isPoolData = wishingModel.TryGetPoolDataByIndex(index, out wellItem); if (isPoolData) { poolItemCell.gameObject.SetActive(true); @@ -153,19 +174,19 @@ private void UpdateWishItemByIndex(int index) { int id = 0; WishingPoolModel.WishingWellItem wellItem = null; var wishCell = wishingCells[index]; bool isWishData = wishingModel.TryGetWishDataByIndex(index, out id); bool isWishData = wishingModel.TryGetWishDataByIndex(index, out wellItem); if (isWishData) { wishCell.itemBaisc.gameObject.SetActive(true); wishCell.noneItemObj.gameObject.SetActive(false); ItemCellModel cellModel = new ItemCellModel(id); ItemCellModel cellModel = new ItemCellModel(wellItem.itemId, false, (ulong)wellItem.itemCount, wellItem.isBind); wishCell.itemBaisc.Init(cellModel); wishCell.itemBaisc.cellBtn.RemoveAllListeners(); wishCell.itemBaisc.cellBtn.AddListener(() => { ItemAttrData attrData = new ItemAttrData(id); ItemAttrData attrData = new ItemAttrData(wellItem.itemId, true, (ulong)wellItem.itemCount,-1,wellItem.isBind); tipsModel.SetItemTipsModel(attrData); }); } @@ -192,5 +213,66 @@ public CommonItemBaisc dragItemBasic; public GameObject dragBestIcon; } #endregion #region 活动逻辑 private void OperationEndEvent(Operation type, int state) { if(type == Operation.WishingWellInfo && state == 1) { UpdateActivityState(); } } private void UpdateFreeWishCool() { int second = 0; bool isCool = wishingModel.TryGetFreeWishCoolTime(out second); if (isCool) { freeWishCoolText.gameObject.SetActive(true); freeWishCoolText.text = TimeUtility.SecondsToHMS(second); } else { freeWishCoolText.gameObject.SetActive(false); } } private void UpdateActivityState() { if (wishingModel.IsOpen) { activityOpenObj.SetActive(true); activityCloseObj.SetActive(false); } else { activityOpenObj.SetActive(false); activityCloseObj.SetActive(true); } } private void ClickLook() { WindowCenter.Instance.Open<WishingWarehouseWin>(); } private void ClickRefreshWish() { int second = 0; bool isCool = wishingModel.TryGetFreeWishCoolTime(out second); if(isCool) { } else { } } #endregion } } System/OpenServerActivity/WishingWarehouseWin.cs
New file @@ -0,0 +1,51 @@ using System; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class WishingWarehouseWin : Window { [SerializeField] ScrollerController wishGroupCtrl; WishingPoolModel wishModel { get { return ModelCenter.Instance.GetModel<WishingPoolModel>(); } } protected override void BindController() { } protected override void AddListeners() { } protected override void OnPreOpen() { CreateWishGroup(); } protected override void OnAfterOpen() { } protected override void OnPreClose() { } protected override void OnAfterClose() { } private void CreateWishGroup() { var operation = wishModel.GetOperationWishing(); if (operation == null) return; wishGroupCtrl.Refresh(); foreach(var key in operation.wellItemDict.Keys) { wishGroupCtrl.AddCell(ScrollerDataType.Header,key); } wishGroupCtrl.Restart(); } } } System/OpenServerActivity/WishingWarehouseWin.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: fe79dd1562e90624bb7c5e2443363897 timeCreated: 1540193204 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/Welfare/OperationTimeHepler.cs
@@ -262,6 +262,39 @@ } /// <summary> /// 许愿池 /// </summary> /// <param name="package"></param> public void UpdateWishingWellInfo(HAA19_tagMCActWishingWellInfo package) { OperationBase operationBase = null; operationDict.TryGetValue(Operation.WishingWellInfo, out operationBase); if (string.IsNullOrEmpty(package.StartDate) || string.IsNullOrEmpty(package.EndtDate)) { ForceStopOperation(Operation.WishingWellInfo); } else { if (operationBase == null) { operationBase = new OperationWishingWellInfo(); operationDict.Add(Operation.WishingWellInfo, operationBase); } OperationWishingWellInfo operation = operationBase as OperationWishingWellInfo; operation.Reset(); operation.limitLv = package.LimitLV; operation.startDate = ParseOperationDate(package.StartDate); operation.endDate = ParseOperationDate(package.EndtDate); operation.dayReset = package.IsDayReset == 1; operation.ParsePackage(package); if (operationTimeUpdateEvent != null) { operationTimeUpdateEvent(Operation.WishingWellInfo); } } } /// <summary> /// 限时礼包 /// </summary> /// <param name="package"></param> @@ -688,6 +721,7 @@ FairyCeremony, //仙界盛典 MultipRealmPoint, //N倍修行点 FlashRushToBuy, //限时抢购 WishingWellInfo, //许愿池 max, } }