초기커밋
This commit is contained in:
241
GameServer/Entity/Building/Action/BuildingAction.cs
Normal file
241
GameServer/Entity/Building/Action/BuildingAction.cs
Normal file
@@ -0,0 +1,241 @@
|
||||
|
||||
using ServerCore;
|
||||
using ServerBase;
|
||||
using ServerCommon;
|
||||
|
||||
|
||||
namespace GameServer;
|
||||
|
||||
internal class BuildingAction : EntityActionBase
|
||||
{
|
||||
public BuildingAction(Building owner)
|
||||
: base(owner)
|
||||
{ }
|
||||
|
||||
public override async Task<Result> onInit()
|
||||
{
|
||||
var result = new Result();
|
||||
return await Task.FromResult(result);
|
||||
}
|
||||
|
||||
public override void onClear()
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
public async Task<Result> tryLoadBuildingFromDb(int buildingMetaId)
|
||||
{
|
||||
var result = new Result();
|
||||
var err_msg = string.Empty;
|
||||
|
||||
var server_logic = GameServerApp.getServerLogic();
|
||||
var db_client = server_logic.getDynamoDbClient();
|
||||
|
||||
var doc = new BuildingDoc();
|
||||
doc.setCombinationKeyForPK(buildingMetaId.ToString());
|
||||
|
||||
var error_code = doc.onApplyPKSK();
|
||||
if (error_code.isFail())
|
||||
{
|
||||
err_msg = $"Failed to onApplyPKSK() !!! : {error_code.toBasicString()}";
|
||||
result.setFail(error_code, err_msg);
|
||||
Log.getLogger().error(result.toBasicString());
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
var query_config = db_client.makeQueryConfigForReadByPKSK(doc.getPK());
|
||||
(result, var read_docs) = await db_client.simpleQueryDocTypesWithQueryOperationConfig<BuildingDoc>(query_config);
|
||||
if (result.isFail())
|
||||
{
|
||||
err_msg = $"Failed to simpleQueryDocTypesWithQueryOperationConfig() !!! : {result.toBasicString()}";
|
||||
Log.getLogger().error(err_msg);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
var building = getOwner() as Building;
|
||||
NullReferenceCheckHelper.throwIfNull(building, () => $"building is null !!!");
|
||||
|
||||
var building_attribute = building.getEntityAttribute<BuildingAttribute>();
|
||||
NullReferenceCheckHelper.throwIfNull(building_attribute, () => $"building_attribute is null !!!");
|
||||
|
||||
foreach (var read_doc in read_docs)
|
||||
{
|
||||
if (!building_attribute.copyEntityAttributeFromDoc(read_doc))
|
||||
{
|
||||
err_msg = $"Failed to copyEntityAttributeFromDoc() !!! to:{building_attribute.getTypeName()}, from:{read_doc.getTypeName()} : {this.getTypeName()}";
|
||||
result.setFail(ServerErrorCode.DynamoDbDocCopyToEntityAttributeFailed, err_msg);
|
||||
Log.getLogger().error(result.toBasicString());
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
if (building_attribute.BuildingMetaId == 0)
|
||||
{
|
||||
(result, var land_meta_data, var rental_fee_meta_data) = BuildingHelper.validCheckBuilding((uint)buildingMetaId);
|
||||
if (result.isFail())
|
||||
{
|
||||
err_msg = $"Failed to validCheckOwnerLand() !!! : {result.toBasicString()}";
|
||||
Log.getLogger().error(err_msg);
|
||||
|
||||
return result;
|
||||
}
|
||||
NullReferenceCheckHelper.throwIfNull(land_meta_data, () => $"land_meta_data is null !!!");
|
||||
NullReferenceCheckHelper.throwIfNull(rental_fee_meta_data, () => $"rental_fee_meta_data is null !!!");
|
||||
|
||||
building_attribute.BuildingMetaId = (uint)buildingMetaId;
|
||||
building_attribute.RentalCurrencyType = (CurrencyType)rental_fee_meta_data.CurrencyType;
|
||||
building_attribute.RentalCurrencyAmount = rental_fee_meta_data.CurrencyValue;
|
||||
building_attribute.IsRentalOpen = land_meta_data.RentalAvailable;
|
||||
|
||||
if (read_docs.Count != 0)
|
||||
{
|
||||
Log.getLogger().info($"BuildingDoc.BuildingAtrib.BuildingMetaId is 0 !!! - buildingMetaId:{buildingMetaId}");
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public async Task<(Result, DynamoDbDocBase?)> modifyBuildingInfo(string buildingName, string buildingDescription, CurrencyType rentalCurrencyType, double rentalCurrencyAmount, bool isRantalOpen)
|
||||
{
|
||||
var result = new Result();
|
||||
var err_msg = string.Empty;
|
||||
|
||||
var currency_amount = rentalCurrencyAmount;
|
||||
if (rentalCurrencyType != CurrencyType.Calium)
|
||||
{
|
||||
currency_amount = (int)rentalCurrencyAmount;
|
||||
}
|
||||
|
||||
var building = getOwner() as Building;
|
||||
NullReferenceCheckHelper.throwIfNull(building, () => $"building is null !!!");
|
||||
|
||||
var building_attribute = building.getEntityAttribute<BuildingAttribute>();
|
||||
NullReferenceCheckHelper.throwIfNull(building_attribute, () => $"building_attribute is null !!!");
|
||||
|
||||
building_attribute.BuildingName = buildingName;
|
||||
building_attribute.Description = buildingDescription;
|
||||
building_attribute.RentalCurrencyType = rentalCurrencyType;
|
||||
building_attribute.RentalCurrencyAmount = currency_amount;
|
||||
building_attribute.IsRentalOpen = isRantalOpen;
|
||||
building_attribute.modifiedEntityAttribute();
|
||||
|
||||
(result, var building_doc) = await building_attribute.toDocBase();
|
||||
if (result.isFail())
|
||||
{
|
||||
err_msg = $"Failed to toDocBase() !!! : {result.toBasicString()}";
|
||||
Log.getLogger().error(err_msg);
|
||||
|
||||
return (result, null);
|
||||
}
|
||||
|
||||
return (result, building_doc);
|
||||
}
|
||||
|
||||
public void modifyBuildingInfo(BuildingInfo buildingInfo)
|
||||
{
|
||||
var currency_amount = buildingInfo.RentalCurrencyAmount;
|
||||
if (buildingInfo.RentalCurrencyType != CurrencyType.Calium)
|
||||
{
|
||||
currency_amount = (int)buildingInfo.RentalCurrencyAmount;
|
||||
}
|
||||
|
||||
var building = getOwner() as Building;
|
||||
NullReferenceCheckHelper.throwIfNull(building, () => $"building is null !!!");
|
||||
|
||||
var building_attribute = building.getEntityAttribute<BuildingAttribute>();
|
||||
NullReferenceCheckHelper.throwIfNull(building_attribute, () => $"building_attribute is null !!!");
|
||||
|
||||
building_attribute.BuildingName = buildingInfo.BuildingName;
|
||||
building_attribute.Description = buildingInfo.BuildingDescription;
|
||||
building_attribute.RentalCurrencyType = buildingInfo.RentalCurrencyType;
|
||||
building_attribute.RentalCurrencyAmount = currency_amount;
|
||||
building_attribute.IsRentalOpen = buildingInfo.IsRentalOpen == BoolType.True;
|
||||
building_attribute.IsLoadFromDb = true;
|
||||
building_attribute.modifiedEntityAttribute();
|
||||
}
|
||||
|
||||
public (CurrencyType, double) getRentalCurrency()
|
||||
{
|
||||
var building = getOwner() as Building;
|
||||
NullReferenceCheckHelper.throwIfNull(building, () => $"building is null !!!");
|
||||
|
||||
var building_attribute = building.getEntityAttribute<BuildingAttribute>();
|
||||
NullReferenceCheckHelper.throwIfNull(building_attribute, () => $"building_attribute is null !!!");
|
||||
|
||||
return (building_attribute.RentalCurrencyType, building_attribute.RentalCurrencyAmount);
|
||||
}
|
||||
|
||||
public void setBuildingOwner(int buildingMetaId, string userGuid, CurrencyType rentalCurrencyType, double rentalCurrencyAmount, bool initialRentalOpen)
|
||||
{
|
||||
var building = getOwner() as Building;
|
||||
NullReferenceCheckHelper.throwIfNull(building, () => $"building is null !!!");
|
||||
|
||||
var building_attribute = building.getEntityAttribute<BuildingAttribute>();
|
||||
NullReferenceCheckHelper.throwIfNull(building_attribute, () => $"building_attribute is null !!!");
|
||||
|
||||
if (!building_attribute.IsLoadFromDb)
|
||||
{
|
||||
building_attribute.BuildingMetaId = (uint)buildingMetaId;
|
||||
building_attribute.OwnerUserGuid = userGuid;
|
||||
building_attribute.RentalCurrencyType = rentalCurrencyType;
|
||||
building_attribute.RentalCurrencyAmount = rentalCurrencyAmount;
|
||||
building_attribute.IsRentalOpen = initialRentalOpen;
|
||||
building_attribute.IsLoadFromDb = true;
|
||||
building_attribute.newEntityAttribute();
|
||||
}
|
||||
else
|
||||
{
|
||||
building_attribute.OwnerUserGuid = userGuid;
|
||||
building_attribute.modifiedEntityAttribute();
|
||||
}
|
||||
}
|
||||
|
||||
public bool isRentalOpen()
|
||||
{
|
||||
var building = getOwner() as Building;
|
||||
NullReferenceCheckHelper.throwIfNull(building, () => $"building is null !!!");
|
||||
|
||||
var building_attribute = building.getEntityAttribute<BuildingAttribute>();
|
||||
NullReferenceCheckHelper.throwIfNull(building_attribute, () => $"building_attribute is null !!!");
|
||||
|
||||
return building_attribute.IsRentalOpen;
|
||||
}
|
||||
|
||||
public void initOwner()
|
||||
{
|
||||
var building = getOwner() as Building;
|
||||
NullReferenceCheckHelper.throwIfNull(building, () => $"building is null !!!");
|
||||
|
||||
var building_attribute = building.getEntityAttribute<BuildingAttribute>();
|
||||
NullReferenceCheckHelper.throwIfNull(building_attribute, () => $"building_attribute is null !!!");
|
||||
|
||||
building_attribute.OwnerUserGuid = string.Empty;
|
||||
building_attribute.modifiedEntityAttribute();
|
||||
}
|
||||
|
||||
public bool isBuildingOwner(string userGuid)
|
||||
{
|
||||
var building = getOwner() as Building;
|
||||
NullReferenceCheckHelper.throwIfNull(building, () => $"building is null !!!");
|
||||
|
||||
var building_attribute = building.getEntityAttribute<BuildingAttribute>();
|
||||
NullReferenceCheckHelper.throwIfNull(building_attribute, () => $"building_attribute is null !!!");
|
||||
|
||||
return building_attribute.OwnerUserGuid == userGuid;
|
||||
}
|
||||
|
||||
public bool isLoadFromDb()
|
||||
{
|
||||
var building = getOwner() as Building;
|
||||
NullReferenceCheckHelper.throwIfNull(building, () => $"building is null !!!");
|
||||
|
||||
var building_attribute = building.getEntityAttribute<BuildingAttribute>();
|
||||
NullReferenceCheckHelper.throwIfNull(building_attribute, () => $"building_attribute is null !!!");
|
||||
|
||||
return building_attribute.IsLoadFromDb;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user