142 lines
4.0 KiB
C#
142 lines
4.0 KiB
C#
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<int, ItemLimitInfo> itemLimitInfoDic;
|
|
public void AddItemLimitInfoToDic(ItemLimitInfo info)
|
|
{
|
|
if(itemLimitInfoDic == null)
|
|
itemLimitInfoDic = new Dictionary<int, ItemLimitInfo>();
|
|
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;
|
|
}
|
|
}
|