2024-05-15 18:37:08 +08:00
|
|
|
|
|
|
|
|
|
|
/****************************************************
|
|
|
|
|
|
文件:Assets/Code/Scripts/Gameplay/UI/Energy/EnergyManager.cs
|
|
|
|
|
|
作者:yuntao-Hu
|
|
|
|
|
|
时间:2024/5
|
|
|
|
|
|
描述:管理体力相关信息
|
|
|
|
|
|
接口:
|
2024-05-20 12:51:49 +08:00
|
|
|
|
public int ItemIDBuyEnergyCount()
|
|
|
|
|
|
public int GetItemIDBuyEnergy(int index)
|
2024-05-15 18:37:08 +08:00
|
|
|
|
public int GetMaxEnergyPoint()
|
|
|
|
|
|
public uint GetNowEnergy()
|
|
|
|
|
|
public DateTime GetNextEnergyRecoverTime()
|
|
|
|
|
|
|
|
|
|
|
|
public void BuyEnergy(int itemID, uint usageAmount)
|
|
|
|
|
|
public bool isItemCanBuyEnergy(int itemID)
|
|
|
|
|
|
public int GetConvertConsumes(int itemID, int usageAmount = 1)
|
|
|
|
|
|
public int GetConvertRecharges(int itemID, int usageAmount = 1)
|
2024-05-17 19:53:15 +08:00
|
|
|
|
|
2024-05-15 18:37:08 +08:00
|
|
|
|
*****************************************************/
|
|
|
|
|
|
|
2024-05-17 19:53:15 +08:00
|
|
|
|
using cfg.ActorCfg;
|
2024-05-15 14:24:25 +08:00
|
|
|
|
using Framework;
|
2024-05-17 19:53:15 +08:00
|
|
|
|
using Gameplay;
|
2024-05-15 14:24:25 +08:00
|
|
|
|
using Gameplay.Common;
|
|
|
|
|
|
using Gameplay.Net;
|
|
|
|
|
|
using NLDPB;
|
|
|
|
|
|
using PhxhSDK;
|
|
|
|
|
|
using System;
|
|
|
|
|
|
using System.Collections.Generic;
|
2024-05-21 17:10:34 +08:00
|
|
|
|
using System.Threading.Tasks;
|
2024-05-15 14:24:25 +08:00
|
|
|
|
|
|
|
|
|
|
public class EnergyManager : Singlenton<EnergyManager>
|
|
|
|
|
|
{
|
2024-06-20 16:56:40 +08:00
|
|
|
|
//private List<int> itemIdBuyEnergy = new List<int>(); //= { ENERGY_ITEM_ID, GLConfig.Inst.data.DiamondItemId };//更新体力补充方式时在此处添加物品ID
|
2024-05-29 15:11:32 +08:00
|
|
|
|
//按优先级顺序,将钻石补充方式放在最后
|
2024-05-17 19:53:15 +08:00
|
|
|
|
|
2024-05-20 12:51:49 +08:00
|
|
|
|
ConvertRatesWrap convertRatesWrap;
|
|
|
|
|
|
|
2024-05-15 18:37:08 +08:00
|
|
|
|
#region class
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 存储体力转换率
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
class ConvertRatesWrap
|
|
|
|
|
|
{
|
2024-06-20 16:56:40 +08:00
|
|
|
|
public int energyItemID;
|
|
|
|
|
|
public readonly List<int> itemList;
|
2024-05-15 18:37:08 +08:00
|
|
|
|
private Dictionary<int, ConversionRate> convertRates;
|
|
|
|
|
|
|
2024-06-20 16:56:40 +08:00
|
|
|
|
public ConvertRatesWrap(int energyItemID)
|
2024-05-15 18:37:08 +08:00
|
|
|
|
{
|
2024-06-20 16:56:40 +08:00
|
|
|
|
this.energyItemID = energyItemID;
|
2024-05-15 18:37:08 +08:00
|
|
|
|
convertRates = new Dictionary<int, ConversionRate>();
|
2024-06-20 16:56:40 +08:00
|
|
|
|
itemList = new List<int>();
|
2024-05-15 18:37:08 +08:00
|
|
|
|
|
2024-06-20 16:56:40 +08:00
|
|
|
|
List<DataItem> consumeItems = CategoryManager.Instance.GetItemsByType(StorageItemType.ConsumableItem, inStorage: false);
|
|
|
|
|
|
foreach (var item in consumeItems)
|
2024-05-20 12:51:49 +08:00
|
|
|
|
{
|
2024-06-20 16:56:40 +08:00
|
|
|
|
if (item.Param2 == energyItemID)//物品可以转化为体力
|
|
|
|
|
|
{
|
|
|
|
|
|
int itemID = item.ID;
|
|
|
|
|
|
AddRate(itemID, RateConfig(itemID));
|
|
|
|
|
|
itemList.Add(itemID);
|
|
|
|
|
|
}
|
2024-05-20 12:51:49 +08:00
|
|
|
|
}
|
2024-06-20 19:39:04 +08:00
|
|
|
|
|
|
|
|
|
|
AddRate(GLConfig.Inst.data.DiamondItemId, CategoryManager.Instance.GetItemData(energyItemID).ExchangeParam[2], CategoryManager.Instance.GetItemData(energyItemID).ExchangeParam[0]);
|
|
|
|
|
|
//AddRate(GLConfig.Inst.data.DiamondItemId, RateConfig(GLConfig.Inst.data.DiamondItemId)); //按优先级顺序,将钻石补充方式放在最后
|
2024-06-20 16:56:40 +08:00
|
|
|
|
itemList.Add(GLConfig.Inst.data.DiamondItemId);
|
|
|
|
|
|
|
|
|
|
|
|
//itemIdBuyEnergy.Add(GLConfig.Inst.data.DiamondItemId);
|
|
|
|
|
|
|
|
|
|
|
|
//if (EnergyManager.Instance.itemIdBuyEnergy.Count == 0)
|
|
|
|
|
|
// Instance.loadAndInit(energyItemID);
|
|
|
|
|
|
|
|
|
|
|
|
//for (int i = 0; i < EnergyManager.Instance.itemIdBuyEnergy.Count; i++)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// int itemID = EnergyManager.Instance.itemIdBuyEnergy[i];
|
|
|
|
|
|
// AddRate(itemID, RateConfig(itemID));
|
|
|
|
|
|
//}
|
2024-05-20 12:51:49 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
List<int> RateConfig(int itemID)
|
|
|
|
|
|
{
|
2024-05-29 15:11:32 +08:00
|
|
|
|
|
2024-06-20 19:39:04 +08:00
|
|
|
|
//if (itemID == GLConfig.Inst.data.DiamondItemId)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// return GLConfig.Inst.data.DiamondExchangeEnergy;
|
|
|
|
|
|
//}
|
|
|
|
|
|
//else
|
|
|
|
|
|
//{
|
2024-05-29 15:11:32 +08:00
|
|
|
|
DataItem itemData = CategoryManager.Instance.GetItemData(itemID);
|
2024-06-20 16:56:40 +08:00
|
|
|
|
if (itemData == null || itemData.Param2 != energyItemID)//param2为转化物品ID
|
2024-05-29 15:11:32 +08:00
|
|
|
|
{
|
|
|
|
|
|
DebugUtil.LogError("该道具不具备补充体力功能或并非可使用道具,错误物品id: " + itemID
|
|
|
|
|
|
+ "\n请检查是否错误的将其加入itemIdBuyEnergy数组,或Item配置表中未配置道具转化参数");
|
|
|
|
|
|
return default;
|
|
|
|
|
|
}
|
|
|
|
|
|
return new List<int> { 1, itemData.Param3 };//兑换比例:1→Param3
|
2024-06-20 19:39:04 +08:00
|
|
|
|
//}
|
2024-05-15 18:37:08 +08:00
|
|
|
|
}
|
|
|
|
|
|
void AddRate(int itemID, int consume, int recharge)
|
|
|
|
|
|
{
|
|
|
|
|
|
convertRates.Add(itemID, new ConversionRate(consume, recharge));
|
|
|
|
|
|
}
|
|
|
|
|
|
void AddRate(int itemID, List<int> exchangeRate)
|
|
|
|
|
|
{
|
2024-05-20 12:51:49 +08:00
|
|
|
|
if (exchangeRate == null)
|
|
|
|
|
|
{
|
2024-05-28 18:00:29 +08:00
|
|
|
|
DebugUtil.LogError("传入转化率list为null\n该物品已加入EnergyManager内itemIDBuyEnergy数组,但未配置转化率,错误物品id: " + itemID);
|
2024-05-20 12:51:49 +08:00
|
|
|
|
return;
|
|
|
|
|
|
}
|
2024-05-15 18:37:08 +08:00
|
|
|
|
if (exchangeRate.Count >= 2)
|
|
|
|
|
|
convertRates.Add(itemID, new ConversionRate(exchangeRate[0], exchangeRate[1]));
|
|
|
|
|
|
else
|
2024-05-20 12:51:49 +08:00
|
|
|
|
DebugUtil.LogError("转化率list传入参数不足!\n错误物品id: " + itemID);
|
2024-05-15 18:37:08 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//API
|
|
|
|
|
|
public bool isRateContained(int itemID)
|
|
|
|
|
|
{
|
|
|
|
|
|
return convertRates.ContainsKey(itemID);
|
|
|
|
|
|
}
|
|
|
|
|
|
public int GetConsume(int itemID)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (convertRates.ContainsKey(itemID))
|
|
|
|
|
|
{
|
|
|
|
|
|
return convertRates[itemID].consume;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
DebugUtil.LogError("不包含的体力补充方式!请检查!");
|
|
|
|
|
|
return default;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
public int GetRecharge(int itemID)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (convertRates.ContainsKey(itemID))
|
|
|
|
|
|
{
|
|
|
|
|
|
return convertRates[itemID].recharge;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
DebugUtil.LogError("不包含的体力补充方式!请检查!");
|
|
|
|
|
|
return default;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//class
|
|
|
|
|
|
public class ConversionRate
|
|
|
|
|
|
{
|
|
|
|
|
|
public int consume;
|
|
|
|
|
|
public int recharge;
|
|
|
|
|
|
|
|
|
|
|
|
public ConversionRate(int consume, int recharge)
|
|
|
|
|
|
{
|
|
|
|
|
|
this.consume = consume;
|
|
|
|
|
|
this.recharge = recharge;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
2024-06-20 16:56:40 +08:00
|
|
|
|
void loadAndInit(int energyID)
|
2024-05-30 16:30:04 +08:00
|
|
|
|
{
|
2024-06-20 16:56:40 +08:00
|
|
|
|
if (convertRatesWrap == null || energyID != convertRatesWrap.energyItemID)
|
2024-05-30 16:30:04 +08:00
|
|
|
|
{
|
2024-06-20 16:56:40 +08:00
|
|
|
|
convertRatesWrap = new ConvertRatesWrap(energyID);
|
2024-05-30 16:30:04 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-05-15 18:37:08 +08:00
|
|
|
|
#region API
|
2024-06-20 16:56:40 +08:00
|
|
|
|
public int ItemIDBuyEnergyCount(int energyID)
|
2024-05-20 12:51:49 +08:00
|
|
|
|
{
|
2024-06-20 16:56:40 +08:00
|
|
|
|
if (convertRatesWrap == null || convertRatesWrap.energyItemID != energyID)
|
2024-05-30 16:30:04 +08:00
|
|
|
|
{
|
2024-06-20 16:56:40 +08:00
|
|
|
|
loadAndInit(energyID);
|
2024-05-30 16:30:04 +08:00
|
|
|
|
}
|
2024-06-20 16:56:40 +08:00
|
|
|
|
return convertRatesWrap.itemList.Count;
|
2024-05-20 12:51:49 +08:00
|
|
|
|
}
|
2024-05-30 13:24:40 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 根据索引获取购买体力物品ID
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="index">补充体力方式索引</param>
|
|
|
|
|
|
/// <returns></returns>
|
2024-06-20 16:56:40 +08:00
|
|
|
|
public int GetItemIDBuyEnergy(int index, int energyID)
|
2024-05-17 19:53:15 +08:00
|
|
|
|
{
|
2024-06-20 16:56:40 +08:00
|
|
|
|
if (index < ItemIDBuyEnergyCount(energyID))
|
|
|
|
|
|
return convertRatesWrap.itemList[index];
|
2024-05-17 19:53:15 +08:00
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
DebugUtil.LogError("购买体力物品ID超出范围,请检查!");
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-05-15 14:24:25 +08:00
|
|
|
|
/// <summary>
|
2024-05-15 18:37:08 +08:00
|
|
|
|
/// 获取最大体力
|
2024-05-15 14:24:25 +08:00
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
public int GetMaxEnergyPoint()
|
|
|
|
|
|
{
|
2024-05-20 12:51:49 +08:00
|
|
|
|
var level = Actor.Instance.Base.GetProp(ActorProp.Level);
|
|
|
|
|
|
var actorCfg = ActorLevelTableHelper.Instance.Get((int)level);
|
2024-05-15 19:49:25 +08:00
|
|
|
|
return actorCfg.MaxEnergy;
|
2024-05-15 14:24:25 +08:00
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
2024-05-15 18:37:08 +08:00
|
|
|
|
/// 获取当前体力
|
2024-05-15 14:24:25 +08:00
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <returns></returns>
|
2024-06-20 16:56:40 +08:00
|
|
|
|
public uint GetNowEnergy(int energyID = 0)
|
2024-05-15 14:24:25 +08:00
|
|
|
|
{
|
2024-06-20 16:56:40 +08:00
|
|
|
|
if (energyID == 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
energyID = GLConfig.Inst.data.EnergyPointID;
|
|
|
|
|
|
}
|
|
|
|
|
|
return CategoryManager.Instance.GetItemCount(energyID);
|
2024-05-15 14:24:25 +08:00
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
2024-05-15 18:37:08 +08:00
|
|
|
|
/// 获取下一次体力恢复时间
|
2024-05-15 14:24:25 +08:00
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
public DateTime GetNextEnergyRecoverTime()
|
|
|
|
|
|
{
|
|
|
|
|
|
DateTime lastDateTime = CommonUtils.GetTimeByTimestamp(Actor.Instance.Logic.GetCount((uint)LogicID.EnergyRecoverTime));
|
|
|
|
|
|
|
|
|
|
|
|
return lastDateTime.AddSeconds(TableManager.Instance.Tables.GlobalConfig.EnergyPointRecoverTime);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-05-21 17:10:34 +08:00
|
|
|
|
/// <summary>
|
2024-05-24 12:28:38 +08:00
|
|
|
|
/// 检查体力是否足够
|
2024-05-21 17:10:34 +08:00
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="requireEnergy"></param>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
public bool EnergyCheck(int requireEnergy)
|
|
|
|
|
|
{
|
|
|
|
|
|
int nowEnergy = (int)GetNowEnergy();
|
|
|
|
|
|
return nowEnergy >= requireEnergy;
|
|
|
|
|
|
}
|
2024-05-15 14:24:25 +08:00
|
|
|
|
|
2024-09-29 14:38:21 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 获取最大战斗次数
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="oneEnergy">一次战斗所需的体力</param>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
public int GetMaxFightCount(int oneEnergy)
|
|
|
|
|
|
{
|
|
|
|
|
|
int nowEnergy = (int)GetNowEnergy();
|
|
|
|
|
|
|
|
|
|
|
|
return nowEnergy / oneEnergy;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-05-21 17:10:34 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 兑换体力
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="itemID">消耗物品ID</param>
|
|
|
|
|
|
/// <param name="usageAmount">物品使用份数</param>
|
2024-06-21 15:06:21 +08:00
|
|
|
|
public void BuyEnergy(int itemID, uint usageAmount, int energyID)
|
2024-05-15 18:37:08 +08:00
|
|
|
|
{
|
2024-06-20 16:56:40 +08:00
|
|
|
|
if (isItemCanBuyEnergy(itemID, energyID))
|
2024-05-29 15:35:41 +08:00
|
|
|
|
{
|
|
|
|
|
|
if (itemID == GLConfig.Inst.data.DiamondItemId)
|
|
|
|
|
|
{
|
2024-06-20 16:56:40 +08:00
|
|
|
|
NetHelper.ConvertResources((uint)itemID, usageAmount, (uint)energyID);
|
2024-05-29 15:35:41 +08:00
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
2024-06-20 16:56:40 +08:00
|
|
|
|
CategoryManager.Instance.UseItem(itemID, (int)usageAmount, energyID);
|
2024-05-29 15:35:41 +08:00
|
|
|
|
}//如果不是货币兑换方式,直接使用道具补充逻辑
|
|
|
|
|
|
}
|
2024-05-15 18:37:08 +08:00
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 该物品是否有补充体力功能
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="itemID"></param>
|
|
|
|
|
|
/// <returns></returns>
|
2024-06-20 16:56:40 +08:00
|
|
|
|
public bool isItemCanBuyEnergy(int itemID,int energyID)
|
2024-05-15 18:37:08 +08:00
|
|
|
|
{
|
2024-06-20 16:56:40 +08:00
|
|
|
|
if (convertRatesWrap == null)
|
|
|
|
|
|
{
|
|
|
|
|
|
convertRatesWrap = new ConvertRatesWrap(energyID);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
if (convertRatesWrap.energyItemID != energyID)
|
|
|
|
|
|
{
|
|
|
|
|
|
convertRatesWrap = new ConvertRatesWrap(energyID);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2024-05-15 18:37:08 +08:00
|
|
|
|
return convertRatesWrap.isRateContained(itemID);
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 每份物品补充体力时的物品实际消耗量,参数可设定份数
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="itemID"></param>
|
|
|
|
|
|
/// <param name="usageAmount">物品份数</param>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
public int GetConvertConsumes(int itemID, int usageAmount = 1)
|
|
|
|
|
|
{
|
2024-06-20 16:56:40 +08:00
|
|
|
|
if (isItemCanBuyEnergy(itemID, convertRatesWrap.energyItemID))
|
2024-05-15 18:37:08 +08:00
|
|
|
|
return usageAmount * convertRatesWrap.GetConsume(itemID);
|
|
|
|
|
|
else
|
2024-05-17 19:53:15 +08:00
|
|
|
|
{
|
2024-05-21 17:10:34 +08:00
|
|
|
|
DebugUtil.LogError("补充体力列表内不包含该物品,不可补充体力!请检查\n错误物品ID: " + itemID);
|
2024-05-15 18:37:08 +08:00
|
|
|
|
return 0;
|
2024-05-17 19:53:15 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2024-05-15 18:37:08 +08:00
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 每份物品补充体力时的体力补充量,参数可设定份数
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="itemID"></param>
|
|
|
|
|
|
/// <param name="usageAmount">物品份数</param>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
public int GetConvertRecharges(int itemID, int usageAmount = 1)
|
|
|
|
|
|
{
|
2024-06-20 16:56:40 +08:00
|
|
|
|
if (isItemCanBuyEnergy(itemID, convertRatesWrap.energyItemID))
|
2024-05-15 18:37:08 +08:00
|
|
|
|
return usageAmount * convertRatesWrap.GetRecharge(itemID);
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
2024-05-21 17:10:34 +08:00
|
|
|
|
DebugUtil.LogError("补充体力列表内不包含该物品,不可补充体力!请检查\n错误物品ID: " + itemID);
|
2024-05-17 19:53:15 +08:00
|
|
|
|
return 0;
|
2024-05-15 18:37:08 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2024-05-17 19:53:15 +08:00
|
|
|
|
/// 获取当前选中状态下的最大消耗数目(实际数据需要乘比例转化)
|
2024-05-15 18:37:08 +08:00
|
|
|
|
/// </summary>
|
2024-05-17 19:53:15 +08:00
|
|
|
|
/// <param name="itemID"></param>
|
|
|
|
|
|
/// <param name="itemLimited"></param>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
public int MaxConsumeAmountWithoutConvert(int itemID, out bool itemLimited)
|
2024-05-15 18:37:08 +08:00
|
|
|
|
{
|
2024-05-17 19:53:15 +08:00
|
|
|
|
int maxConsumeRate = 0;
|
|
|
|
|
|
int maxConsumeRateByEnergy = 0;
|
2024-05-15 18:37:08 +08:00
|
|
|
|
|
2024-05-21 17:10:34 +08:00
|
|
|
|
if (!ValueValidator.IsIdValid(itemID))
|
2024-05-15 18:37:08 +08:00
|
|
|
|
{
|
2024-05-21 17:10:34 +08:00
|
|
|
|
DebugUtil.LogError("补充体力方式对应的物品ID不合规,请检查配置!\n错误物品ID: " + itemID);
|
2024-05-15 18:37:08 +08:00
|
|
|
|
}
|
2024-05-21 17:10:34 +08:00
|
|
|
|
int consumePerItem = GetConvertConsumes(itemID);
|
|
|
|
|
|
int rechargePerItem = GetConvertRecharges(itemID);
|
2024-05-17 19:53:15 +08:00
|
|
|
|
//道具数目限制
|
2024-06-06 13:38:23 +08:00
|
|
|
|
uint AmountInStorage = CategoryManager.Instance.GetItemCount(itemID);
|
2024-05-21 17:10:34 +08:00
|
|
|
|
if (consumePerItem != 0)
|
|
|
|
|
|
maxConsumeRate = (int)(AmountInStorage / consumePerItem);
|
2024-05-17 19:53:15 +08:00
|
|
|
|
|
|
|
|
|
|
//体力上限限制
|
2024-07-31 12:46:41 +08:00
|
|
|
|
uint energyToMax = (uint)CategoryManager.Instance.GetItemMaxCount(convertRatesWrap.energyItemID) - CategoryManager.Instance.GetItemCount(convertRatesWrap.energyItemID);
|
2024-05-21 17:10:34 +08:00
|
|
|
|
if (rechargePerItem != 0)
|
|
|
|
|
|
maxConsumeRateByEnergy = (int)(energyToMax / rechargePerItem);
|
2024-05-17 19:53:15 +08:00
|
|
|
|
|
|
|
|
|
|
itemLimited = maxConsumeRate <= maxConsumeRateByEnergy;
|
|
|
|
|
|
|
|
|
|
|
|
return Math.Min(maxConsumeRate, maxConsumeRateByEnergy);
|
|
|
|
|
|
}
|
2024-07-10 17:09:11 +08:00
|
|
|
|
|
|
|
|
|
|
public int GetMaxEnergyByLevel(int level)
|
|
|
|
|
|
{
|
|
|
|
|
|
var cfg = ActorLevelTableHelper.Instance.Get(level);
|
|
|
|
|
|
if (cfg != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
return cfg.MaxEnergy;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
}
|
2024-05-15 18:37:08 +08:00
|
|
|
|
#endregion
|
2024-05-15 14:24:25 +08:00
|
|
|
|
}
|