초기커밋
This commit is contained in:
69
GameServer/Contents/Calium/Action/CaliumExchangerAction.cs
Normal file
69
GameServer/Contents/Calium/Action/CaliumExchangerAction.cs
Normal file
@@ -0,0 +1,69 @@
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user