private void ChatClientOnOnWhisperReceived(object sender, WhisperReceivedEventArgs e) { if (!_ongoingDuels.Any()) { return; } Duel existingDuel = _ongoingDuels .SingleOrDefault(duel => duel.IsExpectingInputFrom(e.FromDisplayName)); DuelResult duelResult = existingDuel?.ApplySelection(e.FromDisplayName, e.Message); if (duelResult.DuelIsOver) { _ongoingDuels.Remove(existingDuel); } if (!string.IsNullOrWhiteSpace(duelResult.MessageForUser)) { _chatClient.SendDirectMessage(e.FromDisplayName, duelResult.MessageForUser); } if (!string.IsNullOrWhiteSpace(duelResult.MessageForChat)) { _chatClient.SendMessage(duelResult.MessageForChat); } }
private DuelResult RunContest() { var result = new DuelResult { DuelIsOver = true }; if (ChallengerChoice.LosesTo() == OpponentChoice) { result.MessageForChat = $"In the epic duel, @{Challenger} 's {ChallengerChoice} lost! @{Opponent} 's {OpponentChoice} won!"; } else if (OpponentChoice.LosesTo() == ChallengerChoice) { result.MessageForChat = $"In the epic duel, @{Challenger} 's {ChallengerChoice} won! @{Opponent} 's {OpponentChoice} lost!"; } else { result.MessageForChat = $"The duel between {Challenger} and {Opponent} was a tie! Both picked {ChallengerChoice}."; } return(result); }