초기커밋

This commit is contained in:
2025-05-01 07:20:41 +09:00
commit 98bb2e3c5c
2747 changed files with 646947 additions and 0 deletions

View File

@@ -0,0 +1,80 @@
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 BuildingFloorAction : EntityActionBase
{
public BuildingFloorAction(BuildingFloor 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 tryLoadBuildingFloorFromDoc(BuildingFloorDoc buildingFloorDoc)
{
var result = new Result();
var err_msg = string.Empty;
var building_floor = getOwner() as BuildingFloor;
NullReferenceCheckHelper.throwIfNull(building_floor, () => $"building_floor is null !!!");
var building_floor_attribute = building_floor.getEntityAttribute<BuildingFloorAttribute>();
NullReferenceCheckHelper.throwIfNull(building_floor_attribute, () => $"building_floor_attribute is null !!!");
if (!building_floor_attribute.copyEntityAttributeFromDoc(buildingFloorDoc))
{
err_msg = $"Failed to copyEntityAttributeFromDoc() !!! to:{building_floor_attribute.getTypeName()}, from:{buildingFloorDoc.getTypeName()} : {this.getTypeName()}";
result.setFail(ServerErrorCode.DynamoDbDocCopyToEntityAttributeFailed, err_msg);
Log.getLogger().error(result.toBasicString());
return result;
}
return result;
}
public bool isRentalFinish()
{
var building_floor = getOwner() as BuildingFloor;
NullReferenceCheckHelper.throwIfNull(building_floor, () => $"building_floor is null !!!");
var building_floor_attribute = building_floor.getEntityAttribute<BuildingFloorAttribute>();
NullReferenceCheckHelper.throwIfNull(building_floor_attribute, () => $"building_floor_attribute is null !!!");
if (DateTime.UtcNow > building_floor_attribute.RentalFinishTime)
return true;
return false;
}
public (int, int, int) getAddress()
{
var building_floor = getOwner() as BuildingFloor;
NullReferenceCheckHelper.throwIfNull(building_floor, () => $"building_floor is null !!!");
var building_floor_attribute = building_floor.getEntityAttribute<BuildingFloorAttribute>();
NullReferenceCheckHelper.throwIfNull(building_floor_attribute, () => $"building_floor_attribute is null !!!");
var land_meta_id = building_floor_attribute.LandMetaId;
var building_meta_id = building_floor_attribute.BuildingMetaId;
var floor = building_floor_attribute.Floor;
return (land_meta_id, building_meta_id, floor);
}
}
}

View File

@@ -0,0 +1,125 @@
using ServerCommon;
using ServerCore; using ServerBase;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static ClientToGameReq.Types;
namespace GameServer
{
internal class BuildingFloorAgentAction : EntityActionBase
{
ConcurrentDictionary<int, BuildingFloor> m_building_floors = new();
public BuildingFloorAgentAction(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> tryLoadBuildingFloorFromDb(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 BuildingFloorDoc();
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.makeQueryConfigWithPKSKBySKBeginWith(doc.getPK(), BuildingFloorDoc.getPrefixOfSK());
(result, var read_docs) = await db_client.simpleQueryDocTypesWithQueryOperationConfig<BuildingFloorDoc>(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 !!!");
foreach (var read_doc in read_docs)
{
var building_floor_attrib = read_doc.getAttrib<BuildingFloorAttrib>();
NullReferenceCheckHelper.throwIfNull(building_floor_attrib, () => $"building_floor_attrib is null !!!");
if (building_floor_attrib.RentalFinishTime < DateTime.UtcNow)
continue;
var building_floor = new BuildingFloor(building);
await building_floor.onInit();
var building_floor_action = building_floor.getEntityAction<BuildingFloorAction>();
NullReferenceCheckHelper.throwIfNull(building_floor_action, () => $"building_floor_action is null !!!");
result = building_floor_action.tryLoadBuildingFloorFromDoc(read_doc);
if (result.isFail())
{
err_msg = $"Failed to tryLoadBuildingFloorFromDoc() !!! : {result.toBasicString()}";
Log.getLogger().error(err_msg);
return result;
}
var building_floor_attribute = building_floor.getEntityAttribute<BuildingFloorAttribute>();
NullReferenceCheckHelper.throwIfNull(building_floor_attribute, () => $"building_floor_attribute is null !!!");
if (!m_building_floors.TryAdd(building_floor_attribute.Floor, building_floor))
{
err_msg = $"Failed to TryAdd() !!! : {building_floor.toBasicString()} : {this.getTypeName()}";
result.setFail(ServerErrorCode.RentalDocLoadDuplicatedRental, err_msg);
Log.getLogger().error(result.toBasicString());
return result;
}
await MapManager.Instance.tryAddRoomMapTreeFromDb(read_doc);
}
return result;
}
public bool isEmptyFloor(int floor)
{
return !m_building_floors.ContainsKey(floor);
}
public void addBuildingFloor(int floor, BuildingFloor buildingFloor)
{
m_building_floors[floor] = buildingFloor;
}
public void removeBuildingFloor(int floor)
{
m_building_floors.TryRemove(floor, out _);
}
public ConcurrentDictionary<int, BuildingFloor> getBuildingFloors() => m_building_floors;
}
}