using System.Collections.Concurrent; using Axion.Collections.Concurrent; using GameServer.Contents.Battle.Log; using GameServer.Contents.GameMode.Helper; using GameServer.Contents.GameMode.Manage.PlayManage; using GameServer.Contents.GameMode.Mode_Battle.Manage; using MetaAssets; using Newtonsoft.Json; using Newtonsoft.Json.Serialization; using Org.BouncyCastle.Tls.Crypto.Impl; using ServerBase; using ServerCommon; using ServerCore; namespace GameServer; public class BattleInstanceRoom : EntityBase, IWithLogActor, IBattleMode { public BattleInstanceRoom() : base(EntityType.BattleInstance) { } public override async Task onInit() { await Task.CompletedTask; var result = new Result(); return result; } public ILogActor toLogActor() { var server_logic = GameServerApp.getServerLogic(); var region_id = server_logic.getServerConfig().getRegionId(); var server_name = server_logic.getServerName(); var log_info = new BattleInstanceActorLog(region_id, server_name, "", 0); return log_info; } public async Task LeaveBattleRoom(Player player, string roomId, bool disconnected = false) { if (false == GameModeManager.It.tryGetGameMode(roomId, out var gameMode)) return false; var game_mode_base = GameModeHelper.toGameModeBase(gameMode); Log.getLogger().info($"LeaveBattleRoom, player : {player.toBasicString()}, roomId : {roomId}, disconnected : {disconnected}"); //await game_mode_base.getInstanceRoom().LeaveGameInstanceRoom(player, disconnected); await Task.CompletedTask; if (game_mode_base.getInstanceRoom().isDestroy) { Log.getLogger().info($"m_instance_room.isDestroy, so destroyBattleRoom : {player.toBasicString()}, roomId : {roomId}, disconnected : {disconnected}"); InstanceRoomManager.Instance.DestroyRoom(roomId); Log.getLogger().info($"destroy InstanceRoomManager room Player : {player.toBasicString()}, roomId : {roomId}, disconnected : {disconnected}"); } return true; } public override string toBasicString() { return $"BattleInstanceRoom room_id"; } public Task init() { throw new NotImplementedException(); } }