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 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(); 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(); NullReferenceCheckHelper.throwIfNull(building_profit_attribute, () => $"building_profit_attribute is null !!!"); return building_profit_attribute.Floor; } public Dictionary getProfits() { var building_profit = getOwner() as BuildingProfit; NullReferenceCheckHelper.throwIfNull(building_profit, () => $"building_profit is null !!!"); var building_profit_attribute = building_profit.getEntityAttribute(); NullReferenceCheckHelper.throwIfNull(building_profit_attribute, () => $"building_profit_attribute is null !!!"); var profits = new Dictionary(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(); 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(); 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; } } }