/// <summary> /// 初始化游戏房间 /// </summary> /// <param name="initializer">游戏创建者</param> internal async Task Initialize(PlayerHost initializer) { try { var options = GameManager.RegisteredGames.Select(item => Option.Create(item, item.GameName, item.GameDescription)).ToArray(); if (options.Any() == false) { initializer.WriteSystemMessage("当前没有已经注册的游戏,无法创建房间"); throw new InvalidOperationException(); } var factory = await initializer.Console.Choose("请选择游戏类型:", options, CancellationToken.None); await InitializeGame(factory.CreateGame(), initializer); } catch { GameRoomsManager.ReleaseRoom(this); } }
/// <summary> /// 释放游戏 /// </summary> /// <param name="game"></param> public override void ReleaseGame(GameBase game) { base.ReleaseGame(game); GameRoomsManager.ReleaseRoom(this); }