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,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);
}
}