69 lines
2.1 KiB
C#
69 lines
2.1 KiB
C#
|
|
using ServerCore;
|
|
using ServerBase;
|
|
using ServerCommon;
|
|
|
|
|
|
namespace GameServer;
|
|
|
|
public class CaliumExchangerAction : EntityActionBase
|
|
{
|
|
private const double BaseExchangeValue = 0.01;
|
|
|
|
public CaliumExchangerAction(Player owner) : base(owner)
|
|
{
|
|
}
|
|
|
|
public override async Task<Result> onInit() => await Task.FromResult(new Result());
|
|
|
|
public override void onClear()
|
|
{
|
|
return;
|
|
}
|
|
|
|
public async Task<double> calculationConvertCalium(double sapphire)
|
|
{
|
|
var calium = await CaliumStorageHelper.calculateCaliumFromSapphire(sapphire);
|
|
if (calium < BaseExchangeValue) calium = 0;
|
|
|
|
return calium;
|
|
}
|
|
|
|
public Result checkConvertConditions(double sapphire)
|
|
{
|
|
var result = new Result();
|
|
|
|
var player = getOwner() as Player;
|
|
NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!");
|
|
|
|
// 1. 재화 보유 체크
|
|
var money_attribute = getOwner().getEntityAttribute<MoneyAttribute>();
|
|
NullReferenceCheckHelper.throwIfNull(money_attribute, () => $"money_attribute is null !!!");
|
|
|
|
if (money_attribute.Sapphire < sapphire)
|
|
{
|
|
var err_msg = $"fail to convert calium!!! : lack of currency - currency[{sapphire}]";
|
|
result.setFail(ServerErrorCode.LackOfCommissionCurrency, err_msg);
|
|
Log.getLogger().error(err_msg);
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
public async Task<Result> changeCurrency(double obtainCalium, CurrencyType currencyType, double spendCurrency)
|
|
{
|
|
var result = new Result();
|
|
|
|
var money_action = getOwner().getEntityAction<MoneyAction>();
|
|
NullReferenceCheckHelper.throwIfNull(money_action, () => $"money_action is null !!!");
|
|
|
|
// 1. calium 획득
|
|
result = await money_action.changeMoney(CurrencyType.Calium, obtainCalium, useCaliumEvent: false);
|
|
if (result.isFail()) return result;
|
|
|
|
// 2. 변환을 위한 재화 소모
|
|
result = await money_action.changeMoney(currencyType, -1 * spendCurrency, useCaliumEvent: false);
|
|
|
|
return result;
|
|
}
|
|
} |