250501 커밋
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
using GameServer.Contents.GameMode.Helper;
|
||||
using GameServer.Contents.GameMode.Manage;
|
||||
using GameServer.Contents.GameMode.Manage.PlayManage;
|
||||
using ServerBase;
|
||||
using ServerCommon;
|
||||
using ServerCore;
|
||||
|
||||
namespace GameServer;
|
||||
|
||||
public abstract class GameModeInitHandlerBase : IGameModeInitHandler
|
||||
{
|
||||
protected readonly GameModeType m_game_mode_type;
|
||||
protected readonly InstanceRoom m_instance_room;
|
||||
|
||||
public GameModeInitHandlerBase(InstanceRoom instanceRoom, GameModeType gameModeType)
|
||||
{
|
||||
m_instance_room = instanceRoom;
|
||||
m_game_mode_type = gameModeType;
|
||||
|
||||
}
|
||||
|
||||
public abstract Result gamedModeInstanceInitValidate();
|
||||
|
||||
public virtual async Task<Result> gamedModeInstanceInit()
|
||||
{
|
||||
var result = await GameModeManager.It.createGameMode(m_instance_room, m_game_mode_type); //kihoon todo : 이렇게 짜는게 맞는지...고민좀 해보자
|
||||
if (result.isFail()) return result;
|
||||
|
||||
var room_id = m_instance_room.getMap().m_room_id;
|
||||
if(false == GameModeManager.It.tryGetGameMode(room_id, out var gameMode))
|
||||
{
|
||||
var err_msg = $"game_mode is null !!!! gameModeType : {m_game_mode_type}, instanceRoomId : {room_id}";
|
||||
Log.getLogger().error(err_msg);
|
||||
result.setFail(ServerErrorCode.GameModeClassIsNull, err_msg);
|
||||
return result;
|
||||
}
|
||||
|
||||
var initializer = gameMode as IInitializer;
|
||||
NullReferenceCheckHelper.throwIfNull(initializer, () => $"initializer is null !!! casting error");
|
||||
|
||||
var gamd_mod_base = gameMode as GameModeBase;
|
||||
NullReferenceCheckHelper.throwIfNull(gamd_mod_base, () => $"gamd_mod_base is null !!! casting error");
|
||||
|
||||
//모드별로 필요한 내용 초기화
|
||||
using (var releaser = await gamd_mod_base.getAsyncLock())
|
||||
{
|
||||
if (gamd_mod_base.isLoadCompleted()) return result;
|
||||
|
||||
result = await initializer.onInit();
|
||||
if (result.isFail()) return result;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
using ServerCommon;
|
||||
|
||||
namespace GameServer.Contents.GameMode.Manage;
|
||||
|
||||
public abstract class GameModeJoinHandlerBase : IGameModeJoinHandler
|
||||
{
|
||||
protected readonly InstanceRoom m_instance_room;
|
||||
protected readonly GameModeType m_game_mode_type;
|
||||
|
||||
public GameModeJoinHandlerBase(InstanceRoom instanceRoom, GameModeType gameModeType)
|
||||
{
|
||||
m_instance_room = instanceRoom;
|
||||
m_game_mode_type = gameModeType;
|
||||
}
|
||||
|
||||
public abstract Result gamedModeInstanceJoinValidate();
|
||||
public abstract Result gamedModeInstanceJoin(Player player);
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
using ServerBase;
|
||||
using ServerCommon;
|
||||
|
||||
namespace GameServer.Contents.GameMode.Manage;
|
||||
|
||||
public abstract class GameModeJoinSuccessHandlerBase : IGameModeJoinSuccessHandler
|
||||
{
|
||||
protected Player m_player;
|
||||
protected GameModeType m_game_mode_type;
|
||||
protected List<ILogInvoker> m_log_invorkers;
|
||||
protected InstanceRoom m_instance_room;
|
||||
|
||||
public GameModeJoinSuccessHandlerBase(Player player, GameModeType gameModeType, InstanceRoom instanceRoom)
|
||||
{
|
||||
m_player = player;
|
||||
m_game_mode_type = gameModeType;
|
||||
m_log_invorkers = new();
|
||||
m_instance_room = instanceRoom;
|
||||
}
|
||||
|
||||
public async Task<Result> joinSuccess()
|
||||
{
|
||||
var result = joinSuccessValidate();
|
||||
if (result.isFail()) return result;
|
||||
|
||||
result = await joinSuccessConfirmation();
|
||||
if (result.isFail()) return result;
|
||||
|
||||
result = joinSuccessNotify().Result;
|
||||
if (result.isFail()) return result;
|
||||
|
||||
joinSuccessWriteLog();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public abstract Result joinSuccessValidate();
|
||||
public abstract Task<Result> joinSuccessConfirmation();
|
||||
public abstract Task<Result> joinSuccessNotify();
|
||||
|
||||
public abstract void joinSuccessWriteLog();
|
||||
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
namespace GameServer;
|
||||
|
||||
public interface IGameModeInitHandler
|
||||
{
|
||||
public Result gamedModeInstanceInitValidate();
|
||||
public Task<Result> gamedModeInstanceInit();
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
using ServerCommon;
|
||||
|
||||
namespace GameServer.Contents.GameMode.Manage;
|
||||
|
||||
public interface IGameModeJoinHandler
|
||||
{
|
||||
public Result gamedModeInstanceJoinValidate();
|
||||
public Result gamedModeInstanceJoin(Player player);
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
namespace GameServer.Contents.GameMode.Manage;
|
||||
|
||||
public interface IGameModeJoinSuccessHandler
|
||||
{
|
||||
public Task<Result> joinSuccess();
|
||||
}
|
||||
Reference in New Issue
Block a user