Exemple #1
0
        /// <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);
            }
        }
Exemple #2
0
 /// <summary>
 /// 释放游戏
 /// </summary>
 /// <param name="game"></param>
 public override void ReleaseGame(GameBase game)
 {
     base.ReleaseGame(game);
     GameRoomsManager.ReleaseRoom(this);
 }