103 lines
4.1 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|