public async Task Hangman([Remainder] string type = "All") { var hm = new HangmanGame(Context.Channel, type); if (!HangmanGames.TryAdd(Context.Channel.Id, hm)) { await Context.Channel.SendErrorAsync("Hangman game already running on this channel.").ConfigureAwait(false); return; } hm.OnEnded += (g) => { HangmanGame throwaway; HangmanGames.TryRemove(g.GameChannel.Id, out throwaway); }; try { hm.Start(); } catch (Exception ex) { try { await Context.Channel.SendErrorAsync($"Starting errored: {ex.Message}").ConfigureAwait(false); } catch { } HangmanGame throwaway; HangmanGames.TryRemove(Context.Channel.Id, out throwaway); throwaway.Dispose(); return; } await Context.Channel.SendConfirmAsync("Hangman game started", hm.ScrambledWord + "\n" + hm.GetHangman() + "\n" + hm.ScrambledWord); }
public async Task Hangman(HangmanTermPool.HangmanTermType type = HangmanTermPool.HangmanTermType.All) { var hm = new HangmanGame(Context.Channel, type); if (!HangmanGames.TryAdd(Context.Channel.Id, hm)) { await Context.Channel.SendErrorAsync("Hangman game already running on this channel.").ConfigureAwait(false); return; } hm.OnEnded += (g) => { HangmanGame throwaway; HangmanGames.TryRemove(g.GameChannel.Id, out throwaway); }; hm.Start(); await Context.Channel.SendConfirmAsync("Hangman game started", hm.ScrambledWord + "\n" + hm.GetHangman() + "\n" + hm.ScrambledWord); }
public async Task Unload() { _t.Change(Timeout.Infinite, Timeout.Infinite); AcrophobiaGames.ForEach(x => x.Value.Dispose()); AcrophobiaGames.Clear(); HangmanGames.ForEach(x => x.Value.Dispose()); HangmanGames.Clear(); await Task.WhenAll(RunningTrivias.Select(x => x.Value.StopGame())).ConfigureAwait(false); RunningTrivias.Clear(); TicTacToeGames.Clear(); await Task.WhenAll(RunningContests.Select(x => x.Value.Stop())) .ConfigureAwait(false); RunningContests.Clear(); NunchiGames.ForEach(x => x.Value.Dispose()); NunchiGames.Clear(); }
public async Task Unload() { _t.Change(Timeout.Infinite, Timeout.Infinite); _cmd.OnMessageNoTrigger -= PotentialFlowerGeneration; AcrophobiaGames.ForEach(x => x.Value.Dispose()); AcrophobiaGames.Clear(); Connect4Games.ForEach(x => x.Value.Dispose()); Connect4Games.Clear(); HangmanGames.ForEach(x => x.Value.Dispose()); HangmanGames.Clear(); await Task.WhenAll(RunningTrivias.Select(x => x.Value.StopGame())); RunningTrivias.Clear(); TicTacToeGames.Clear(); await Task.WhenAll(RunningContests.Select(x => x.Value.Stop())) .ConfigureAwait(false); RunningContests.Clear(); NunchiGames.ForEach(x => x.Value.Dispose()); NunchiGames.Clear(); }