250501 커밋

This commit is contained in:
2025-05-01 07:23:28 +09:00
parent 98bb2e3c5c
commit 23176551b7
353 changed files with 9972 additions and 6652 deletions

View File

@@ -0,0 +1,76 @@
using GameServer.Contents.GameMode.Manage.PlayManage;
using ServerBase;
using ServerCommon;
using ServerCore;
namespace GameServer.Contents.GameMode.Manage.LeaveManage;
public abstract class GameModeDestroyHandlerBase : IGameModeDestroyHandler
{
protected readonly GameModeType m_game_mode_type;
protected string m_room_id;
protected IGameMode? m_game_mode;
public GameModeDestroyHandlerBase(string roomId, GameModeType gameModeType)
{
m_game_mode_type = gameModeType;
m_room_id = roomId;
}
public abstract Task<Result> postDestroy(IGameMode gameMode);
public async Task<Result> gameModeDestroy()
{
var result = new Result();
if (false == GameModeManager.It.tryGetGameMode(m_room_id, out var gameMode))
{
var err_msg = $"game_mode is null !!!! gameModeType : {m_game_mode_type}, instanceRoomId : {m_room_id}";
Log.getLogger().error(err_msg);
result.setFail(ServerErrorCode.GameModeClassIsNull, err_msg);
return result;
}
var game_mode_base = gameMode as GameModeBase;
NullReferenceCheckHelper.throwIfNull(game_mode_base, () => $"game_mode_base is null !!! casting error");
using (var releaser = await game_mode_base.getAsyncLock())
{
var ticker = game_mode_base.getEntityTicker();
if (ticker is not null)
{
try
{
ticker.cancel();
ticker = null;
}
catch(Exception e)
{
var err_msg = $"Exception !!!, Failed to cancel ||| : Exception:{e}";
Log.getLogger().debug(err_msg);
}
}
//모드별 destroy 처리
await postDestroy(gameMode);
if (false == GameModeManager.It.tryRemoveGameMode(m_room_id, out var _))
{
var err_msg = $"game_mode is null !!!! gameModeType : {m_game_mode_type}, instanceRoomId : {m_room_id}";
Log.getLogger().warn(err_msg);
}
}
return result;
}
}