| | |
| | | namespace Snxxz.UI
|
| | | {
|
| | | [XLua.LuaCallCSharp]
|
| | | public class WishingPoolModel : Model,IBeforePlayerDataInitialize,IPlayerLoginOk,IOpenServerActivity
|
| | | public class WishingPoolModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk, IOpenServerActivity
|
| | | {
|
| | | public event Action<int> UpdateWishingDataEvent;
|
| | | public event Action<int> UpdatePoolDataEvent;
|
| | | public event Action UpdateWishAwardEvent;
|
| | | public event Action<int> onStateUpate;
|
| | | public const int WishRedKey = 20915;
|
| | | public bool isOpenPrompting { get; set;}
|
| | | public bool isOpenPrompting { get; set; }
|
| | | public override void Init()
|
| | | {
|
| | | ParseConfig();
|
| | |
| | |
|
| | | public override void UnInit()
|
| | | {
|
| | | |
| | |
|
| | | }
|
| | |
|
| | | public bool IsOpen
|
| | | {
|
| | | get
|
| | | {
|
| | | public bool IsOpen {
|
| | | get {
|
| | | return OperationTimeHepler.Instance.SatisfyOpenCondition(Operation.WishingWellInfo);
|
| | | }
|
| | | }
|
| | |
|
| | | public bool priorityOpen
|
| | | {
|
| | | get
|
| | | {
|
| | | public bool priorityOpen {
|
| | | get {
|
| | | return wishPoolRedpoint.state == RedPointState.Simple;
|
| | | }
|
| | | }
|
| | |
|
| | | public bool IsAdvance
|
| | | {
|
| | | get
|
| | | {
|
| | | public bool IsAdvance {
|
| | | get {
|
| | | return OperationTimeHepler.Instance.SatisfyAdvanceCondition(Operation.WishingWellInfo);
|
| | | }
|
| | | }
|
| | |
| | | {
|
| | | if (type == Operation.WishingWellInfo && state == 0)
|
| | | {
|
| | | |
| | |
|
| | | UpdateRedpoint();
|
| | | UpdateFreeWishRedpoint();
|
| | | if (onStateUpate != null)
|
| | |
| | | int endSeconds = freeStartTime + freeRefreshCoolTime;
|
| | | DateTime endTime = TimeUtility.GetTime((uint)endSeconds);
|
| | | second = Mathf.CeilToInt((float)(endTime - TimeUtility.ServerNow).TotalSeconds);
|
| | | if(second > 0)
|
| | | if (second > 0)
|
| | | {
|
| | | return true;
|
| | | }
|
| | |
| | |
|
| | | public bool IsBestItem()
|
| | | {
|
| | | foreach(var key in poolDataDict.Keys)
|
| | | foreach (var key in poolDataDict.Keys)
|
| | | {
|
| | | if(poolDataDict[key].rare == 1)
|
| | | if (poolDataDict[key].rare == 1)
|
| | | {
|
| | | return true;
|
| | | }
|
| | |
| | | return false;
|
| | | }
|
| | |
|
| | | public bool TryGetItemRareIcon(int rare,out string iconKey)
|
| | | public bool TryGetItemRareIcon(int rare, out string iconKey)
|
| | | {
|
| | | iconKey = string.Empty;
|
| | | return wishItemRareDict.TryGetValue(rare,out iconKey);
|
| | | return wishItemRareDict.TryGetValue(rare, out iconKey);
|
| | | }
|
| | |
|
| | | public int handStartIndex { get; private set; }
|
| | | public int handEndIndex { get; private set;}
|
| | | public int handEndIndex { get; private set; }
|
| | | public event Action UpdateHandMoveEvent;
|
| | | public bool isClick { get; set; }
|
| | | public void SetHandMovePos(int wishIndex)
|
| | | {
|
| | | if (!isClick) return;
|
| | |
|
| | | foreach(var key in poolDataDict.Keys)
|
| | | foreach (var key in poolDataDict.Keys)
|
| | | {
|
| | | if(poolDataDict[key].itemId != 0)
|
| | | if (poolDataDict[key].itemId != 0)
|
| | | {
|
| | | handStartIndex = key;
|
| | | break;
|
| | | }
|
| | | }
|
| | | handEndIndex = wishIndex;
|
| | | if(UpdateHandMoveEvent != null)
|
| | | if (UpdateHandMoveEvent != null)
|
| | | {
|
| | | isClick = false;
|
| | | UpdateHandMoveEvent();
|
| | |
| | |
|
| | | int second = 0;
|
| | | bool isCool = TryGetFreeWishCoolTime(out second);
|
| | | if(!isCool)
|
| | | if (!isCool)
|
| | | {
|
| | | UpdateFreeWishRedpoint();
|
| | | }
|
| | |
| | | isDraging = false;
|
| | | dragIndex = -1;
|
| | | }
|
| | | public int freeRefreshCoolTime { get; private set;}
|
| | | public string wishingPriceFormula { get; private set;}
|
| | | public int freeRefreshCoolTime { get; private set; }
|
| | | public string wishingPriceFormula { get; private set; }
|
| | | public Dictionary<int, string> wishItemRareDict { get; private set; }
|
| | |
|
| | | public void ParseConfig()
|
| | |
| | | Dictionary<int, WishingWellItem> poolDataDict = new Dictionary<int, WishingWellItem>();
|
| | | public int freeStartTime { get; private set; }// 免费开始倒计时时间
|
| | | public int alreadyWishNum { get; private set; } // 许愿付费刷新次数
|
| | | public int wishingPrice { get; private set;}
|
| | | public int wishingPrice { get; private set; }
|
| | | public void SetWishingWellPlayerInfo(HAA1A_tagMCActWishingWellPlayerInfo wishInfo)
|
| | | {
|
| | | freeStartTime = (int)wishInfo.FreeStartTime;
|
| | | alreadyWishNum = (int)wishInfo.WishCnt;
|
| | | wishingPrice = GetWishingPrice((int)wishInfo.WishCnt);
|
| | | for(int i = 0; i < wishInfo.WellItemCnt; i++)
|
| | | for (int i = 0; i < wishInfo.WellItemCnt; i++)
|
| | | {
|
| | | var itemInfo = wishInfo.WellItemInfo[i];
|
| | | WishingWellItem wellItem = new WishingWellItem((int)itemInfo.ItemID,itemInfo.ItemCnt,itemInfo.IsBind,itemInfo.IsSpecial);
|
| | | SetWishingPoolData(i,wellItem);
|
| | | WishingWellItem wellItem = new WishingWellItem((int)itemInfo.ItemID, itemInfo.ItemCnt, itemInfo.IsSpecial);
|
| | | SetWishingPoolData(i, wellItem);
|
| | | }
|
| | |
|
| | | for(int i = 0; i < wishInfo.CurAwardCnt; i++)
|
| | | for (int i = 0; i < wishInfo.CurAwardCnt; i++)
|
| | | {
|
| | | var itemInfo = wishInfo.CurAwardItemInfo[i];
|
| | | WishingWellItem wellItem = new WishingWellItem((int)itemInfo.ItemID, itemInfo.ItemCnt, itemInfo.IsBind, itemInfo.IsSpecial);
|
| | | WishingWellItem wellItem = new WishingWellItem((int)itemInfo.ItemID, itemInfo.ItemCnt, itemInfo.IsSpecial);
|
| | | SetWishingData(i, wellItem);
|
| | | }
|
| | |
|
| | |
| | | for (int i = 0; i < wishInfo.LastAwardCnt; i++)
|
| | | {
|
| | | var itemInfo = wishInfo.LastAwardItemInfo[i];
|
| | | if(itemInfo.ItemID != 0)
|
| | | if (itemInfo.ItemID != 0)
|
| | | {
|
| | | WishingWellItem wellItem = new WishingWellItem((int)itemInfo.ItemID, itemInfo.ItemCnt, itemInfo.IsBind, itemInfo.IsSpecial);
|
| | | WishingWellItem wellItem = new WishingWellItem((int)itemInfo.ItemID, itemInfo.ItemCnt, itemInfo.IsSpecial);
|
| | | SetWishingAwardData(i, wellItem);
|
| | | }
|
| | | }
|
| | |
| | | public int GetWishingPrice(int wishNum)
|
| | | {
|
| | | Equation.Instance.Clear();
|
| | | Equation.Instance.AddKeyValue("refreshCnt",wishNum);
|
| | | Equation.Instance.AddKeyValue("refreshCnt", wishNum);
|
| | | return Equation.Instance.Eval<int>(wishingPriceFormula);
|
| | | }
|
| | |
|
| | | public void SetWishingResultInfo(HAA1B_tagMCActWishingDragResult result)
|
| | | {
|
| | | for(int i = 0; i < result.Cnt;i++)
|
| | | for (int i = 0; i < result.Cnt; i++)
|
| | | {
|
| | | var resultInfo = result.InfoList[i];
|
| | | WishingWellItem wellItem = new WishingWellItem((int)resultInfo.ItemID, resultInfo.ItemCnt, resultInfo.IsBind, resultInfo.IsSpecial);
|
| | | WishingWellItem wellItem = new WishingWellItem((int)resultInfo.ItemID, resultInfo.ItemCnt, resultInfo.IsSpecial);
|
| | | switch (resultInfo.WellType)
|
| | | {
|
| | | case 0:
|
| | |
| | | {
|
| | | if (!poolDataDict.ContainsKey(index))
|
| | | {
|
| | | poolDataDict.Add(index,wellItem);
|
| | | poolDataDict.Add(index, wellItem);
|
| | | }
|
| | | else
|
| | | {
|
| | | poolDataDict[index] = wellItem;
|
| | | }
|
| | | if(UpdatePoolDataEvent != null)
|
| | | if (UpdatePoolDataEvent != null)
|
| | | {
|
| | | UpdatePoolDataEvent(index);
|
| | | }
|
| | |
| | | Dictionary<int, WishingWellItem> wishingDataDict = new Dictionary<int, WishingWellItem>();
|
| | | public void SetWishingData(int index, WishingWellItem wellItem)
|
| | | {
|
| | | if(!wishingDataDict.ContainsKey(index))
|
| | | if (!wishingDataDict.ContainsKey(index))
|
| | | {
|
| | | wishingDataDict.Add(index,wellItem);
|
| | | wishingDataDict.Add(index, wellItem);
|
| | | }
|
| | | else
|
| | | {
|
| | | wishingDataDict[index] = wellItem;
|
| | | }
|
| | |
|
| | | if(UpdateWishingDataEvent != null)
|
| | | if (UpdateWishingDataEvent != null)
|
| | | {
|
| | | UpdateWishingDataEvent(index);
|
| | | }
|
| | |
| | | wishingAwardDict[index] = wellItem;
|
| | | }
|
| | | }
|
| | | |
| | |
|
| | | public bool IsBetterItem()
|
| | | {
|
| | | return false;
|
| | | }
|
| | |
|
| | | public bool TryGetPoolDataByIndex(int index,out WishingWellItem wellItem)
|
| | | public bool TryGetPoolDataByIndex(int index, out WishingWellItem wellItem)
|
| | | {
|
| | | if(poolDataDict.TryGetValue(index, out wellItem))
|
| | | if (poolDataDict.TryGetValue(index, out wellItem))
|
| | | {
|
| | | if(wellItem.itemId != 0)
|
| | | if (wellItem.itemId != 0)
|
| | | {
|
| | | return true;
|
| | | }
|
| | |
| | |
|
| | | public bool TryGetWishDataByIndex(int index, out WishingWellItem wellItem)
|
| | | {
|
| | | if(wishingDataDict.TryGetValue(index, out wellItem))
|
| | | if (wishingDataDict.TryGetValue(index, out wellItem))
|
| | | {
|
| | | if(wellItem.itemId != 0)
|
| | | if (wellItem.itemId != 0)
|
| | | {
|
| | | return true;
|
| | | }
|
| | |
| | | GameNetSystem.Instance.SendInfo(getReward);
|
| | | }
|
| | |
|
| | | public void SendRefreshWishInfo(int poolIndex,int wishIndex)
|
| | | public void SendRefreshWishInfo(int poolIndex, int wishIndex)
|
| | | {
|
| | | CAA06_tagCMActWishing actWishing = new CAA06_tagCMActWishing();
|
| | | actWishing.SrcWellType = 0;
|
| | |
| | | for (int i = 0; i < 5; i++)
|
| | | {
|
| | | int redKey = WishRedKey * 100 + (i + 2);
|
| | | Redpoint redpoint = new Redpoint(WishRedKey,redKey);
|
| | | Redpoint redpoint = new Redpoint(WishRedKey, redKey);
|
| | | wishPointlist.Add(redpoint);
|
| | | }
|
| | | }
|
| | |
| | | for (int i = 0; i < wishPointlist.Count; i++)
|
| | | {
|
| | | var wishPoint = wishPointlist[i];
|
| | | if(wishPoint.state != RedPointState.None)
|
| | | if (wishPoint.state != RedPointState.None)
|
| | | {
|
| | | return;
|
| | | }
|
| | |
| | | {
|
| | | var wishPoint = wishPointlist[i];
|
| | | WishingWellItem wellItem = null;
|
| | | bool isWishData = TryGetWishDataByIndex(i,out wellItem);
|
| | | if(!isWishData)
|
| | | bool isWishData = TryGetWishDataByIndex(i, out wellItem);
|
| | | if (!isWishData)
|
| | | {
|
| | | wishPoint.state = RedPointState.Simple;
|
| | | return;
|
| | |
| | | {
|
| | | public int itemId;
|
| | | public int itemCount;
|
| | | public int isBind;
|
| | | public int rare;
|
| | | public WishingWellItem(int id,int count,int isBind,int rare)
|
| | |
|
| | | public WishingWellItem(int id, int count, int rare)
|
| | | {
|
| | | this.itemId = id;
|
| | | this.itemCount = count;
|
| | | this.isBind = isBind;
|
| | | this.rare = rare;
|
| | | }
|
| | | }
|