Files
JJBB/Assets/Project/Script/GUI/BackPack/ItemLimtInfoCtr.cs
2024-08-23 15:49:34 +08:00

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;
}
}