Files
caliverse_server/GameServer/Entity/BuildingProfit/Action/BuildingProfitAction.cs
2025-05-01 07:20:41 +09:00

103 lines
4.1 KiB
C#

using ServerCommon;
using ServerCore; using ServerBase;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GameServer
{
internal class BuildingProfitAction : EntityActionBase
{
public BuildingProfitAction(BuildingProfit owner)
: base(owner)
{ }
public override async Task<Result> onInit()
{
var result = new Result();
return await Task.FromResult(result);
}
public override void onClear()
{
return;
}
public Result tryLoadBuildingProfitFromDoc(BuildingProfitDoc buildingProfitDoc)
{
var result = new Result();
var err_msg = string.Empty;
var building_profit = getOwner() as BuildingProfit;
NullReferenceCheckHelper.throwIfNull(building_profit, () => $"building_profit is null !!!");
var building_profit_attribute = building_profit.getEntityAttribute<BuildingProfitAttribute>();
NullReferenceCheckHelper.throwIfNull(building_profit_attribute, () => $"building_profit_attribute is null !!!");
if (!building_profit_attribute.copyEntityAttributeFromDoc(buildingProfitDoc))
{
err_msg = $"Failed to copyEntityAttributeFromDoc() !!! to:{building_profit_attribute.getTypeName()}, from:{buildingProfitDoc.getTypeName()} : {this.getTypeName()}";
result.setFail(ServerErrorCode.DynamoDbDocCopyToEntityAttributeFailed, err_msg);
Log.getLogger().error(result.toBasicString());
return result;
}
return result;
}
public int getFloor()
{
var building_profit = getOwner() as BuildingProfit;
NullReferenceCheckHelper.throwIfNull(building_profit, () => $"building_profit is null !!!");
var building_profit_attribute = building_profit.getEntityAttribute<BuildingProfitAttribute>();
NullReferenceCheckHelper.throwIfNull(building_profit_attribute, () => $"building_profit_attribute is null !!!");
return building_profit_attribute.Floor;
}
public Dictionary<CurrencyType, double> getProfits()
{
var building_profit = getOwner() as BuildingProfit;
NullReferenceCheckHelper.throwIfNull(building_profit, () => $"building_profit is null !!!");
var building_profit_attribute = building_profit.getEntityAttribute<BuildingProfitAttribute>();
NullReferenceCheckHelper.throwIfNull(building_profit_attribute, () => $"building_profit_attribute is null !!!");
var profits = new Dictionary<CurrencyType, double>(building_profit_attribute.Profits);
return profits;
}
public double getProfit(CurrencyType currencyType)
{
var building_profit = getOwner() as BuildingProfit;
NullReferenceCheckHelper.throwIfNull(building_profit, () => $"building_profit is null !!!");
var building_profit_attribute = building_profit.getEntityAttribute<BuildingProfitAttribute>();
NullReferenceCheckHelper.throwIfNull(building_profit_attribute, () => $"building_profit_attribute is null !!!");
building_profit_attribute.Profits.TryGetValue(currencyType, out var currency_amount);
return currency_amount;
}
public void modifyProfit(CurrencyType currencyType, double deltaAmount)
{
var building_profit = getOwner() as BuildingProfit;
NullReferenceCheckHelper.throwIfNull(building_profit, () => $"building_profit is null !!!");
var building_profit_attribute = building_profit.getEntityAttribute<BuildingProfitAttribute>();
NullReferenceCheckHelper.throwIfNull(building_profit_attribute, () => $"building_profit_attribute is null !!!");
building_profit_attribute.Profits.TryGetValue(currencyType, out var currency_amount);
currency_amount += deltaAmount;
building_profit_attribute.Profits[currencyType] = currency_amount;
}
}
}