Browse Source

cop abd doctor fix

Tigran 4 years ago
parent
commit
612c3632e0

+ 10 - 6
MafiaTelegramBot/Game/GameRoles/CopRole.cs

@@ -14,7 +14,7 @@ namespace MafiaTelegramBot.Game.GameRoles
         public override async Task NightAction()
         {
             var targets = Room.Players.Values.Except(KnownRoles).Where(p => p.IsAlive).ToList();
-            var message = await Bot.SendWithMarkdown2(Player.ChatId, strings.choose_player_to_check_role, 
+            var message = await Room.PlayersCh.SendTo(Player.ChatId, strings.choose_player_to_check_role, 
                 Keyboard.NightChooseTargetKeyboard(targets, Player.Id));
             MessageId = message.MessageId;
         }
@@ -22,7 +22,7 @@ namespace MafiaTelegramBot.Game.GameRoles
         public override async Task ApplyNightActionResult()
         {
             if (NightTargetId == -1)
-                await Bot.EditMessageAsync(Player.ChatId, MessageId, strings.you_have_not_choosen_target);
+                await Room.PlayersCh.EditTo(Player.Id, MessageId, strings.you_have_not_choosen_target);
             else
             {
                 var user = Room.Players[NightTargetId];
@@ -31,14 +31,18 @@ namespace MafiaTelegramBot.Game.GameRoles
                 var role = user.GetRole() is Roles.Don or Roles.Mafia
                     ? roles.Mafia
                     : roles.Villager;
-                await Bot.EditMessageAsync(Player.ChatId, MessageId, $"{strings.role_of_your_target} {user.NickName} - {role}");
+                await Room.PlayersCh.EditTo(Player.Id, MessageId, $"{strings.role_of_your_target} {user.NickName} - {role}");
             }
         }
 
-        public override Task SetNightTarget(long userId)
+        public override async Task SetNightTarget(long userId)
         {
-            NightTargetId = userId;
-            return Bot.EditMessageAsync(Player.ChatId, MessageId, $"{strings.you_choose_target} {Room.Players[userId].NickName}");
+            if (userId == -1) await Room.PlayersCh.EditTo(Player.Id, MessageId,strings.you_skip_vote);
+            else
+            {
+                NightTargetId = userId;
+                await Room.PlayersCh.EditTo(Player.Id, MessageId, $"{strings.you_choose_target} {Room.Players[userId].NickName}");
+            }
         }
 
         public CopRole(GameRoom room, Player player) : base(room, player) { }

+ 10 - 8
MafiaTelegramBot/Game/GameRoles/DoctorRole.cs

@@ -1,7 +1,6 @@
 using System.Linq;
 using System.Threading.Tasks;
 using MafiaTelegramBot.Game.GameRooms;
-using MafiaTelegramBot.Models;
 using MafiaTelegramBot.Resources;
 using Telegram.Bot.Types;
 
@@ -17,10 +16,10 @@ namespace MafiaTelegramBot.Game.GameRoles
             Message message;
             if (targets.Count == 0)
             {
-                message = await Bot.SendWithMarkdown2(Player.ChatId, strings.nothing_to_heal);
+                message = await Room.PlayersCh.SendTo(Player.Id, strings.nothing_to_heal);
                 _haveTargets = false;
             }
-            else message = await Bot.SendWithMarkdown2(Player.ChatId, strings.choose_player_to_heal, 
+            else message = await Room.PlayersCh.SendTo(Player.Id, strings.choose_player_to_heal, 
                 Keyboard.NightChooseTargetKeyboard(targets, Player.Id));
             MessageId = message.MessageId;
         }
@@ -28,7 +27,7 @@ namespace MafiaTelegramBot.Game.GameRoles
         public override async Task ApplyNightActionResult()
         {
             if (NightTargetId == -1 && _haveTargets)
-                await Bot.EditMessageAsync(Player.ChatId, MessageId, strings.you_have_not_choosen_target);
+                await Room.PlayersCh.EditTo(Player.Id, MessageId, strings.you_have_not_choosen_target);
             else
             {
                 var target = Room.Players[NightTargetId];
@@ -40,10 +39,13 @@ namespace MafiaTelegramBot.Game.GameRoles
 
         public override async Task SetNightTarget(long userId)
         {
-            NightTargetId = userId;
-            var target = Room.Players[userId];
-            if(userId == Player.Id) await Bot.SendWithMarkdown2(target.ChatId, strings.you_heal_yourself);
-            else await Bot.EditMessageAsync(Player.ChatId, MessageId, $"{strings.you_choose_target} {Room.Players[userId].NickName}");
+            if (userId == -1) await Room.PlayersCh.EditTo(Player.Id, MessageId,strings.you_skip_vote);
+            else
+            {
+                NightTargetId = userId;var target = Room.Players[userId];
+                if(userId == Player.Id) await Room.PlayersCh.EditTo(Player.Id, MessageId,strings.you_heal_yourself);
+                else await Room.PlayersCh.EditTo(Player.Id, MessageId, $"{strings.you_choose_target} {Room.Players[userId].NickName}");
+            }
         }
 
         public DoctorRole(GameRoom room, Player player) : base(room, player) { }

+ 12 - 5
MafiaTelegramBot/Game/GameRooms/GameRoom.Role.cs

@@ -18,7 +18,7 @@ namespace MafiaTelegramBot.Game.GameRooms
             protected readonly GameRoom Room;
             protected readonly Player Player;
             public readonly List<Player> KnownRoles = new();
-            public long NightTargetId = -1;
+            protected long NightTargetId = -1;
             public long MafiaTargetId = -1;
             public readonly ManualResetEvent TalkingActionComplete = new(false);
             public readonly ManualResetEvent VoteActionComplete = new(false);
@@ -32,10 +32,17 @@ namespace MafiaTelegramBot.Game.GameRooms
 
             public async Task CancelNightActionResult(string message)
             {
-                await Bot.EditMessageAsync(Player.ChatId, MessageId, strings.activity_blocked);
-                NightTargetId = -1;
-                MessageId = -1;
-                Player.IsSpeaker = false;
+                if (MessageId != -1)
+                {
+                    await Room.PlayersCh.EditTo(Player.Id, MessageId, strings.activity_blocked);
+                    NightTargetId = -1;
+                }
+                if (MafiaMessageId != -1)
+                {
+                    Player.IsSpeaker = false;
+                    await Room.PlayersCh.EditTo(Player.Id, MafiaMessageId, strings.activity_blocked);
+                    MafiaTargetId = -1;
+                }
                 await Room.PlayersCh.SendTo(Player.ChatId, message);
             }