public async Task LeaveRoom(CommandContext ctx) { foreach (var room in BotHandler.openRooms) { if (room.Value.players.Contains(ctx.User.Id)) { room.Value.players.Remove(ctx.User.Id); BotHandler.SetUserState(ctx.User.Id, UserState.Idle); await ctx.RespondAsync(new DiscordEmbedBuilder { Title = "Room Left Successfully", Color = DiscordColor.Green }).ConfigureAwait(false); return; } } await ctx.RespondAsync(new DiscordEmbedBuilder { Title = "You Are Not In Any Rooms", Description = "You shouln't be seeing this message. This is a bug.", Color = DiscordColor.Violet }).ConfigureAwait(false); }
public async Task AutomaticGame(CommandContext ctx, Room room) { //calls the Room command that starts a game / tries to start the Room bool successfulStart = await room.StartGame(ctx); if (!successfulStart) { await ctx.RespondAsync(new DiscordEmbedBuilder { Title = "Something Went Wrong", Color = DiscordColor.Red }).ConfigureAwait(false); return; } await ctx.RespondAsync(new DiscordEmbedBuilder { Title = "Game Started Successfully", Color = DiscordColor.Green }).ConfigureAwait(false); do { //send shops await room.gameHandler.SendShopsAsync(ctx).ConfigureAwait(false); //show pairs await PairsList(ctx); //make a msg that updates on ready await room.gameHandler.SendNewInteractivePlayerList(ctx); //wait for all players to ready await WaitToProceedToFights(room); //do end of turn foreach (var player in room.gameHandler.players) { await player.Value.TriggerEndOfTurn(room.gameHandler, player.Key, room.gameHandler.pairsHandler.opponents[player.Key], ctx); } //do the fights await DoAllFights(ctx); if (room.gameHandler.AlivePlayers > 1) { await NextRound(ctx); } } while (room.gameHandler.AlivePlayers > 1); ulong winner = 0; foreach (var player in room.gameHandler.players) { if (player.Value.lives > 0) { winner = player.Key; break; } } if (winner == 0) { return; } await room.gameHandler.outputChannel.SendMessageAsync(new DiscordEmbedBuilder { Title = $"{room.nicknames[winner]} Is The Winner!", Color = DiscordColor.Gold }).ConfigureAwait(false); foreach (var player in room.gameHandler.players) { BotHandler.SetUserState(player.Key, UserState.WaitingInRoom); if (room.hostId == player.Key) { BotHandler.SetUserState(player.Key, UserState.HostingARoom); } } }