using System; using System.Collections.Generic; namespace ET { [ActorMessageHandler] public class C2M_AddEnergyHandler : AMActorLocationRpcHandler { protected override async ETTask Run(Unit unit, C2M_AddEnergy request, M2C_AddEnergy response, Action reply) { PlayerData data = unit.GetComponent(); int count = data.buyEnergyCount; if (count >= ConstDefine.AddEnergyPriceArr.Length) { Log.Error($"【{UserComponent.Instance.Get(unit.Id)?.NickName}({unit.Id})】购买次数上限!!!"); response.Message = "系统错误"; reply(); return; } int price = ConstDefine.AddEnergyPriceArr[count]; var num = unit.GetComponent(); int energy = num.GetAsInt(NumericType.Energy); if (energy + ConstDefine.AddEnergyPerCount >= ConstDefine.MaxEnergy) { response.Message = "行动值达到上限!"; reply(); return; } var ret = CharacterHelper.ReduceMoney(unit, CharacterHelper.MoneyType.Coin, price); if (ret != null) { response.Message = ret; reply(); return; } if(energy + ConstDefine.AddEnergyPerCount > 0) { data.ForbidExp = false; } data.buyEnergyCount++; await UnitHelper.SaveComponenet(data); num.AddSet(NumericType.Energy, ConstDefine.AddEnergyPerCount); await UnitHelper.SaveComponenet(num); reply(); await ETTask.CompletedTask; } } }