MafiaRole.cs 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. using System.Linq;
  2. using System.Threading.Tasks;
  3. using MafiaTelegramBot.Game.GameRooms;
  4. using MafiaTelegramBot.Resources;
  5. namespace MafiaTelegramBot.Game.GameRoles
  6. {
  7. public class MafiaRole : GameRoom.Role
  8. {
  9. public override Roles RoleKey => Roles.Mafia;
  10. public override int RankingCost { get; } = 20;
  11. private int _color = 2;
  12. public override int ColorRole
  13. {
  14. get => _color;
  15. set => _color = (int) value;
  16. }
  17. public override async Task NightAction()
  18. {
  19. Logs.LogOut(GetType(), "NightAction");
  20. MafiaTargetId = -1;
  21. if(Player.IsAlive)
  22. {
  23. Player.IsSpeaker = true;
  24. var targets = Room.Players.Values.Where(p => p.IsAlive).ToList();
  25. var message = await Room.PlayersMessageChannel.SendTo(Player.Info, strings.choose_player_to_kill,
  26. Keyboard.NightMafiaTargetKeyboard(targets));
  27. MafiaMessageId = message.MessageId;
  28. }
  29. else MafiaTargetId = -3;
  30. }
  31. public override async Task ApplyNightActionResult()
  32. {
  33. Logs.LogOut(GetType(), "ApplyNightActionResult");
  34. Player.IsSpeaker = false;
  35. if (MafiaTargetId == -1)
  36. await Room.PlayersMessageChannel.EditTo(Player.Info, MafiaMessageId, strings.you_have_not_choosen_target);
  37. }
  38. public override async Task SetMafiaTarget(long userId)
  39. {
  40. Logs.LogOut(GetType(), "SetMafiaTarget");
  41. MafiaTargetId = userId;
  42. if (userId == -4) await Room.PlayersMessageChannel.EditTo(Player.Info, MafiaMessageId, strings.you_skip_vote);
  43. else if(!Room.Players.ContainsKey(userId)) await Room.PlayersMessageChannel.SendTo(Player.Info, strings.this_player_left_from_game);
  44. else await Room.PlayersMessageChannel.EditTo(Player.Info, MafiaMessageId, $"{strings.you_choose_target} {Room.Players[userId].Info.NickName}");
  45. }
  46. public MafiaRole(GameRoom room, Player player) : base(room, player) { }
  47. }
  48. }