초기커밋

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,163 @@
using Amazon.S3.Model;
using ServerCommon;
using ServerCore; using ServerBase;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GameServer
{
public class BuildingManager
{
ConcurrentDictionary<int, Building> m_buildings = new();
public async Task<Result> loadBuildings()
{
var result = new Result();
var err_msg = string.Empty;
var building_meta_ids = MapManager.Instance.getBuildingMetaIds();
foreach (var building_meta_id in building_meta_ids)
{
var building = new Building();
await building.onInit();
m_buildings.TryAdd(building_meta_id, building);
var building_action = building.getEntityAction<BuildingAction>();
NullReferenceCheckHelper.throwIfNull(building_action, () => $"building_action is null !!!");
result = await building_action.tryLoadBuildingFromDb(building_meta_id);
if (result.isFail())
{
err_msg = $"Failed to tryLoadBuildingFromDb() !!! : {result.toBasicString()}";
Log.getLogger().error(err_msg);
return result;
}
var building_floor_agent_action = building.getEntityAction<BuildingFloorAgentAction>();
NullReferenceCheckHelper.throwIfNull(building_floor_agent_action, () => $"building_floor_agent_action is null !!!");
result = await building_floor_agent_action.tryLoadBuildingFloorFromDb(building_meta_id);
if (result.isFail())
{
err_msg = $"Failed to tryLoadBuildingFloorFromDb() !!! : {result.toBasicString()}";
Log.getLogger().error(err_msg);
return result;
}
var building_profit_agent_action = building.getEntityAction<BuildingProfitAgentAction>();
NullReferenceCheckHelper.throwIfNull(building_profit_agent_action, () => $"building_profit_agent_action is null !!!");
result = await building_profit_agent_action.tryLoadBuildingProfitFromDb(building_meta_id);
if (result.isFail())
{
err_msg = $"Failed to tryLoadBuildingProfitFromDb() !!! : {result.toBasicString()}";
Log.getLogger().error(err_msg);
return result;
}
var building_profit_history_agent_action = building.getEntityAction<BuildingProfitHistoryAgentAction>();
NullReferenceCheckHelper.throwIfNull(building_profit_history_agent_action, () => $"building_profit_history_agent_action is null !!!");
result = await building_profit_history_agent_action.tryLoadBuildingProfitHistoryFromDb(building_meta_id);
if (result.isFail())
{
err_msg = $"Failed to tryLoadBuildingProfitHistoryFromDb() !!! : {result.toBasicString()}";
Log.getLogger().error(err_msg);
return result;
}
var building_rental_history_agent_action = building.getEntityAction<BuildingRentalHistoryAgentAction>();
NullReferenceCheckHelper.throwIfNull(building_rental_history_agent_action, () => $"building_rental_history_agent_action is null !!!");
result = await building_rental_history_agent_action.tryLoadBuildingRentalHistoryFromDb(building_meta_id);
if (result.isFail())
{
err_msg = $"Failed to tryLoadBuildingRentalHistoryFromDb() !!! : {result.toBasicString()}";
Log.getLogger().error(err_msg);
return result;
}
}
return result;
}
public bool tryGetBuilding(int buildingMetaId, [MaybeNullWhen(false)] out Building building)
{
return m_buildings.TryGetValue(buildingMetaId, out building);
}
public async Task<List<BuildingInfo>> tryGetBuildingInfos()
{
var building_infos = new List<BuildingInfo>();
foreach (var building in m_buildings.Values)
{
var building_info = await building.toBuildingInfo();
building_infos.Add(building_info);
}
return building_infos;
}
public List<(int, int, int)> checkRentalFinish()
{
var rental_finish_building_floors = new List<(int, int, int)>();
foreach (var building in m_buildings.Values)
{
var building_floor_agent_action = building.getEntityAction<BuildingFloorAgentAction>();
NullReferenceCheckHelper.throwIfNull(building_floor_agent_action, () => $"building_floor_agent_action is null !!!");
var building_floors = building_floor_agent_action.getBuildingFloors();
foreach (var building_floor in building_floors.Values)
{
var building_floor_action = building_floor.getEntityAction<BuildingFloorAction>();
NullReferenceCheckHelper.throwIfNull(building_floor_action, () => $"building_floor_action is null !!!");
if (building_floor_action.isRentalFinish())
{
var (land_meta_id, building_meta_id, floor) = building_floor_action.getAddress();
rental_finish_building_floors.Add((land_meta_id, (int)building_meta_id, floor));
}
}
}
return rental_finish_building_floors;
}
public Result tryRemoveBuildingFloor(int buildingMetaId, int floor)
{
var result = new Result();
var err_msg = string.Empty;
if (!m_buildings.TryGetValue(buildingMetaId, out var building))
{
err_msg = $"Failed to TryGetValue() !!! : buildingMetaId:{buildingMetaId} : {this.getTypeName()}";
result.setFail(ServerErrorCode.BuildingNotFound, err_msg);
Log.getLogger().error(result.toBasicString());
return result;
}
var building_floor_agent_action = building.getEntityAction<BuildingFloorAgentAction>();
NullReferenceCheckHelper.throwIfNull(building_floor_agent_action, () => $"building_floor_agent_action is null !!!");
building_floor_agent_action.removeBuildingFloor(floor);
return result;
}
}
}