초기커밋
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
41
GameServer/Entity/BuildingFloor/BuildingFloor.cs
Normal file
41
GameServer/Entity/BuildingFloor/BuildingFloor.cs
Normal file
@@ -0,0 +1,41 @@
|
||||
using ServerCommon;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
|
||||
using ServerCore; using ServerBase;
|
||||
|
||||
|
||||
|
||||
namespace GameServer
|
||||
{
|
||||
internal class BuildingFloor : EntityBase
|
||||
|
||||
{
|
||||
public BuildingFloor(Building building)
|
||||
: base(EntityType.BuildingFloor, building)
|
||||
{
|
||||
}
|
||||
|
||||
public override async Task<Result> onInit()
|
||||
{
|
||||
addEntityAttribute(new BuildingFloorAttribute(this));
|
||||
addEntityAction(new BuildingFloorAction(this));
|
||||
|
||||
return await base.onInit();
|
||||
}
|
||||
|
||||
public override string toBasicString()
|
||||
{
|
||||
return $"{this.getTypeName()}, BuildingMetaId:{getOriginEntityAttribute<BuildingFloorAttribute>()?.BuildingMetaId}, Floor:{getOriginEntityAttribute<BuildingFloorAttribute>()?.Floor}";
|
||||
}
|
||||
|
||||
public override string toSummaryString()
|
||||
{
|
||||
return $"{this.getTypeName()}, {getEntityAttribute<BuildingFloorAttribute>()?.toBasicString()}";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
using Google.Protobuf.WellKnownTypes;
|
||||
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 static class BuildingFloorHelper
|
||||
{
|
||||
public static async Task<(Result, BuildingFloorInfo)> tryGetBuildingFloorInfo(this BuildingFloor buildingFloor)
|
||||
{
|
||||
var result = new Result();
|
||||
var err_msg = string.Empty;
|
||||
|
||||
var building_floor_info = new BuildingFloorInfo();
|
||||
|
||||
var building_floor_attribute = buildingFloor.getEntityAttribute<BuildingFloorAttribute>();
|
||||
NullReferenceCheckHelper.throwIfNull(building_floor_attribute, () => $"building_floor_attribute is null !!!");
|
||||
|
||||
(result, var nickname_attrib) = await NicknameDoc.findNicknameFromGuid(building_floor_attribute.OwnerGuid);
|
||||
if (result.isFail())
|
||||
{
|
||||
err_msg = $"Failed to findNicknameFromGuid() !!! : userGuid:{building_floor_attribute.OwnerGuid}, {result.toBasicString()}";
|
||||
Log.getLogger().error(err_msg);
|
||||
|
||||
return (result, building_floor_info);
|
||||
}
|
||||
NullReferenceCheckHelper.throwIfNull(nickname_attrib, () => $"nickname_attrib is null !!!");
|
||||
|
||||
building_floor_info.Floor = (int)building_floor_attribute.Floor;
|
||||
building_floor_info.InstanceName = building_floor_attribute.InstanceName;
|
||||
building_floor_info.RenteeUserGuid = building_floor_attribute.OwnerGuid;
|
||||
building_floor_info.RenteeUserNickname = nickname_attrib.Nickname;
|
||||
building_floor_info.RentalFinishTime = building_floor_attribute.RentalFinishTime.ToTimestamp();
|
||||
|
||||
return (result, building_floor_info);
|
||||
}
|
||||
|
||||
public static async Task<(Result, BuildingFloor?, DynamoDbDocBase?)> tryMakeBuildingFloor(Building building, RentFloorRequestInfo rentFloorRequestInfo)
|
||||
{
|
||||
var result = new Result();
|
||||
var err_msg = string.Empty;
|
||||
|
||||
var building_floor = new BuildingFloor(building);
|
||||
await building_floor.onInit();
|
||||
|
||||
var building_floor_attribute = building_floor.getEntityAttribute<BuildingFloorAttribute>();
|
||||
NullReferenceCheckHelper.throwIfNull(building_floor_attribute, () => $"building_floor_attribute is null !!!");
|
||||
|
||||
var rental_period = TimeSpan.FromDays(rentFloorRequestInfo.RentalPeriod);
|
||||
|
||||
building_floor_attribute.LandMetaId = rentFloorRequestInfo.LandId;
|
||||
building_floor_attribute.BuildingMetaId = rentFloorRequestInfo.BuildingId;
|
||||
building_floor_attribute.Floor = rentFloorRequestInfo.Floor;
|
||||
building_floor_attribute.OwnerGuid = rentFloorRequestInfo.OwnerGuid;
|
||||
building_floor_attribute.MyhomeGuid = rentFloorRequestInfo.MyhomeGuid;
|
||||
building_floor_attribute.InstanceName = rentFloorRequestInfo.InstanceName;
|
||||
building_floor_attribute.ThumbnailImageId = rentFloorRequestInfo.ThumbnailImageId;
|
||||
building_floor_attribute.ListImageId = rentFloorRequestInfo.ListImageId;
|
||||
building_floor_attribute.EnterPlayerCount = rentFloorRequestInfo.EnterPlayerCount;
|
||||
building_floor_attribute.RentalPeriod = rental_period;
|
||||
building_floor_attribute.RentalStartTime = rentFloorRequestInfo.RentalStartTime.ToDateTime();
|
||||
building_floor_attribute.RentalFinishTime = rentFloorRequestInfo.RentalFinishTime.ToDateTime();
|
||||
building_floor_attribute.modifiedEntityAttribute(true);
|
||||
|
||||
(result, var building_floor_doc) = await building_floor_attribute.toDocBase();
|
||||
if (result.isFail())
|
||||
{
|
||||
err_msg = $"Failed to toDocBase() !!! : {result.toBasicString()}";
|
||||
Log.getLogger().error(err_msg);
|
||||
|
||||
return (result, null, null);
|
||||
}
|
||||
|
||||
return (result, building_floor, building_floor_doc);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user