From a974a2621a6dcb90b8fe52b23d075814873c0960 Mon Sep 17 00:00:00 2001
From: client_Wu Xijin <364452445@qq.com>
Date: 星期二, 23 十月 2018 20:53:49 +0800
Subject: [PATCH] Merge branch 'master' into leonard
---
System/OpenServerActivity/WishingPoolModel.cs | 266 +++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 246 insertions(+), 20 deletions(-)
diff --git a/System/OpenServerActivity/WishingPoolModel.cs b/System/OpenServerActivity/WishingPoolModel.cs
index 5272159..f3de045 100644
--- a/System/OpenServerActivity/WishingPoolModel.cs
+++ b/System/OpenServerActivity/WishingPoolModel.cs
@@ -6,14 +6,18 @@
namespace Snxxz.UI
{
[XLua.LuaCallCSharp]
- 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()
@@ -24,13 +28,100 @@
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 鏈湴鏁版嵁
public bool isDraging { get; set; }
@@ -43,25 +134,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)
{
@@ -81,16 +194,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)
@@ -99,21 +212,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;
+ }
}
}
}
--
Gitblit v1.8.0