using UnityEngine; using System.Collections; using System.Collections.Generic; using GCGame.Table; public class ItemLimitInfo { public int limitId; public int dayUsedCount; //今日用过的次数 public int dayIncCount; //今日道具增加的使用次数(增加道具今日的使用上限) public int weekUsedCount; public int weekIncCount; public int monthUsedCount; public int monthIncCount; public int totalUsedCount; public int totalIncCount; public ItemLimitInfo() { } public ItemLimitInfo(int limitId, int dayUsedCount, int dayIncCount, int weekUsedCount, int weekIncCount, int monthUsedCount, int monthIncCount, int totalUsedCount, int totalIncCount) { this.limitId = limitId; this.dayUsedCount = dayUsedCount; this.dayIncCount = dayIncCount; this.weekUsedCount = weekUsedCount; this.weekIncCount = weekIncCount; this.monthUsedCount = monthUsedCount; this.monthIncCount = monthIncCount; this.totalUsedCount = totalUsedCount; this.totalIncCount = totalIncCount; } } public class ItemLimtInfoCtr { //public static ItemLimtInfoCtr Instance; //public static ItemLimtInfoCtr GetInstance() //{ // if (null == Instance) // { // Instance = new ItemLimtInfoCtr(); // } // return Instance; //} public void AskForItemLimitInfo() { CG_REQ_USE_COUNT_INFO ask = (CG_REQ_USE_COUNT_INFO)PacketDistributed.CreatePacket(MessageID.PACKET_CG_REQ_USE_COUNT_INFO); ask.SetLimitid(-1); ask.SendPacket(); } public Dictionary itemLimitInfoDic; public void AddItemLimitInfoToDic(ItemLimitInfo info) { if(itemLimitInfoDic == null) itemLimitInfoDic = new Dictionary(); if (itemLimitInfoDic.ContainsKey(info.limitId)) { itemLimitInfoDic[info.limitId] = info; } else { itemLimitInfoDic.Add(info.limitId, info); } } //是否还有使用次数 public bool CanUseItem(int itemId) { if(GetItemRemainCanUseTimes(itemId) == -1 || GetItemRemainCanUseTimes(itemId) > 0) { return true; }else { return false; } } public int GetItemRemainCanUseTimes(int _ItemId) { Tab_UsableItem usableItem = TableManager.GetUsableItemByID(_ItemId, 0); if (usableItem == null) { return -1; } int _LimitId = usableItem.LimitId; Tab_CountLimit countLimit = TableManager.GetCountLimitByID(_LimitId, 0); if(countLimit == null) { return -1; } if (itemLimitInfoDic == null || !itemLimitInfoDic.ContainsKey(_LimitId)) { if (countLimit.DayLimit != -1) { return countLimit.DayLimit; } if (countLimit.WeekLimit != -1) { return countLimit.WeekLimit; } if (countLimit.MonthLimit != -1) { return countLimit.MonthLimit; } if (countLimit.TotalLimit != -1) { return countLimit.TotalLimit; } return -1; } if(countLimit.DayLimit != -1) { return itemLimitInfoDic[_LimitId].dayIncCount + countLimit.DayLimit - itemLimitInfoDic[_LimitId].dayUsedCount; } else if(countLimit.WeekLimit != -1) { return itemLimitInfoDic[_LimitId].weekIncCount + countLimit.WeekLimit - itemLimitInfoDic[_LimitId].weekUsedCount; } else if(countLimit.MonthLimit != -1) { return itemLimitInfoDic[_LimitId].monthIncCount + countLimit.MonthLimit - itemLimitInfoDic[_LimitId].monthUsedCount; } else if(countLimit.TotalLimit != -1) { return itemLimitInfoDic[_LimitId].totalIncCount + countLimit.TotalLimit - itemLimitInfoDic[_LimitId].totalUsedCount; } return -1; } }