MafiaRole.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. using System.Linq;
  2. using System.Threading.Tasks;
  3. using MafiaTelegramBot.Game.GameRooms;
  4. using MafiaTelegramBot.Models;
  5. using MafiaTelegramBot.Resources;
  6. using Telegram.Bot.Types;
  7. namespace MafiaTelegramBot.Game.GameRoles
  8. {
  9. public class MafiaRole : GameRoom.Role
  10. {
  11. public override Roles RoleKey => Roles.Mafia;
  12. public override async Task NightAction()
  13. {
  14. NightTargetId = -1;
  15. Player.IsSpeaker = true;
  16. var targets = Room.Players.Values.Where(p => p.IsAlive).ToList();
  17. var message = await Bot.SendWithMarkdown2(Player.ChatId, strings.choose_player_to_kill,
  18. Keyboard.NightChooseTargetKeyboard(targets, Player.Id, true));
  19. MessageId = message.MessageId;
  20. }
  21. public override Task ApplyNightActionResult() { return Task.CompletedTask; }
  22. public override Task CancelNightActionResult(string message)
  23. {
  24. //TODO why action canceled
  25. return Task.CompletedTask;
  26. }
  27. public override async Task<Message> SetNightTarget(long userId)
  28. {
  29. NightTargetId = userId;
  30. return await Bot.Get().EditMessageTextAsync(Player.ChatId, MessageId, $"{strings.you_choose_target} {Room.Players[userId].NickName}");
  31. }
  32. public MafiaRole(GameRoom room, Player player) : base(room, player) { }
  33. }
  34. }