1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- using System.Linq;
- using System.Threading.Tasks;
- using MafiaTelegramBot.Game.GameRooms;
- using MafiaTelegramBot.Models;
- using MafiaTelegramBot.Resources;
- namespace MafiaTelegramBot.Game.GameRoles
- {
- public class DameRole : GameRoom.Role
- {
- public override Roles RoleKey => Roles.Dame;
-
- private int _color = 2;
- public override int ColorRole
- {
- get => _color;
- set => _color = (int) value;
- }
-
- public override async Task NightAction()
- {
- NightTargetId = -1;
- MafiaTargetId = -1;
- Player.IsSpeaker = true;
- var alivePlayers = Room.Players.Values.Where(p => p.IsAlive).ToList();
- NightTargetList = alivePlayers.Where(p=> p.CanBeBlockedDay && p.Id != Player.Id).ToList();
-
- var message = await Bot.SendWithMarkdown2(Player.ChatId, strings.choose_player_to_block,
- Keyboard.NightChooseTargetKeyboard(NightTargetList, Player.Id));
- MessageId = message.MessageId;
-
- message = await Bot.SendWithMarkdown2(Player.ChatId, strings.choose_player_to_kill,
- Keyboard.NightMafiaTargetKeyboard(alivePlayers, Player.Id));
- MafiaMessageId = message.MessageId;
- }
- public override async Task ApplyNightActionResult()
- {
- Player.IsSpeaker = false;
- if (NightTargetId != -2 && MafiaTargetId != -2)
- {
- if (MafiaTargetId == -1) await Room.PlayersCh.EditTo(Player.Id, MafiaMessageId, strings.you_have_not_choosen_target);
- else MafiaTargetId = -1;
- if (NightTargetId == -1) await SetRandomNightTarget();
- if(Room.Players.ContainsKey(NightTargetId))
- {
- Room.Players[NightTargetId].IsBlocked = true;
- Room.Players[NightTargetId].CanBeBlockedDay = false;
- await Room.PlayersCh.SendTo(NightTargetId, strings.dame_block_you);
- await Room.PlayersCh.SendExcept(NightTargetId, $"{strings.dame_block_player} " +
- $"({Room.Players[NightTargetId].TurnOrder}) " +
- $"{Room.Players[NightTargetId].NickName}. " +
- $"{strings.player_cant_talk_and_vote}");
- }
- }
- }
- public override async Task SetNightTarget(long userId)
- {
- if (!Room.Players.ContainsKey(userId)) await Room.PlayersCh.SendTo(Player.Id, strings.this_player_left_from_game);
- else
- {
- NightTargetId = userId;
- await Room.PlayersCh.EditTo(Player.Id, MessageId, $"{strings.you_choose_target} {Room.Players[NightTargetId].NickName}");
- }
- }
-
- public override async Task SetMafiaTarget(long userId)
- {
- if(userId == -1) await Room.PlayersCh.EditTo(Player.Id, MafiaMessageId, strings.you_skip_vote);
- else
- {
- if (!Room.Players.ContainsKey(userId)) await Room.PlayersCh.SendTo(Player.Id, strings.this_player_left_from_game);
- else
- {
- MafiaTargetId = userId;
- await Room.PlayersCh.EditTo(Player.Id, MafiaMessageId,
- $"{strings.you_choose_target} {Room.Players[MafiaTargetId].NickName}");
- }
- }
- }
-
- public DameRole(GameRoom room, Player player) : base(room, player) { }
- }
- }
|