250501 커밋
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
using System.Collections.Concurrent;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using GameServer.Contents.GameMode.Helper;
|
||||
using GameServer.Contents.GameMode.Manage.PlayManage;
|
||||
using ServerCore;
|
||||
using NeoSmart.AsyncLock;
|
||||
using ServerBase;
|
||||
using ServerCommon;
|
||||
|
||||
namespace GameServer;
|
||||
|
||||
public class GameModeManager : Singleton<GameModeManager>
|
||||
{
|
||||
private AsyncLock m_lock = new();
|
||||
private ConcurrentDictionary<string, IGameMode> m_game_modes = new(); /**/
|
||||
|
||||
public async Task onInit()
|
||||
{
|
||||
//1. 이벤트 관리하는 Task 추가
|
||||
//var result = await createBattleEventCheckerTask(); //kihoon todo : 이부분은 GameModeEventCheckerTask라는 걸로 변경 처리 해준다. 여기서 처리 안해줄수 도 있다.
|
||||
await Task.CompletedTask;
|
||||
}
|
||||
|
||||
|
||||
public async Task<Result> createGameMode(InstanceRoom instanceRoom, GameModeType gameModeType)
|
||||
{
|
||||
(var result, var game_mode) = GameModeHelper.createGameMode(instanceRoom, gameModeType);
|
||||
if (result.isFail()) return result;
|
||||
if (game_mode is null)
|
||||
{
|
||||
var err_msg = $"game_mode is null !!!! gameModeType : {gameModeType}, instanceRoomId : {instanceRoom.getMap().m_room_id}";
|
||||
Log.getLogger().error(err_msg);
|
||||
result.setFail(ServerErrorCode.GameModeClassIsNull, err_msg);
|
||||
return result;
|
||||
}
|
||||
var room_id = instanceRoom.getMap().m_room_id;
|
||||
|
||||
if (false == tryAdd(room_id, game_mode))
|
||||
{
|
||||
//이미 들어가져 있으므로 로그만 남겨놓고 리턴
|
||||
Log.getLogger().warn($"game_mode already exist...... gameModeType : {gameModeType}, instanceRoomId : {instanceRoom.getMap().m_room_id}");
|
||||
}
|
||||
|
||||
await Task.CompletedTask;
|
||||
return result;
|
||||
}
|
||||
|
||||
public bool tryGetGameMode(string roomId, [MaybeNullWhen(false)] out IGameMode gameMode)
|
||||
{
|
||||
var ret = m_game_modes.TryGetValue(roomId, out gameMode);
|
||||
|
||||
if (ret == false)
|
||||
{
|
||||
var err_msg = $"gameMode is null : room_id - {roomId}";
|
||||
Log.getLogger().error(err_msg);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
public bool tryRemoveGameMode(string roomId, [MaybeNullWhen(false)] out IGameMode gameMode)
|
||||
{
|
||||
return m_game_modes.TryRemove(roomId, out gameMode);
|
||||
}
|
||||
|
||||
public bool tryAdd(string roomId, IGameMode gameMode)
|
||||
{
|
||||
return m_game_modes.TryAdd(roomId, gameMode);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user