Browse Source

Merge remote-tracking branch 'origin/develop' into develop

zelpold 4 years ago
parent
commit
56ac7e4f2d

+ 5 - 12
MafiaTelegramBot/Game/GameRoles/DameRole.cs

@@ -69,20 +69,13 @@ namespace MafiaTelegramBot.Game.GameRoles
                 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}");
-                }
-            }
+            MafiaTargetId = userId;
+            if (userId == -4) 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 await Room.PlayersCh.EditTo(Player.Id, MafiaMessageId, $"{strings.you_choose_target} {Room.Players[userId].NickName}");
         }
         
         public DameRole(GameRoom room, Player player) : base(room, player) { }

+ 5 - 12
MafiaTelegramBot/Game/GameRoles/DonRole.cs

@@ -69,20 +69,13 @@ namespace MafiaTelegramBot.Game.GameRoles
                 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}");
-                }
-            }
+            MafiaTargetId = userId;
+            if (userId == -4) 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 await Room.PlayersCh.EditTo(Player.Id, MafiaMessageId, $"{strings.you_choose_target} {Room.Players[userId].NickName}");
         }
         
         public DonRole(GameRoom room, Player player) : base(room, player) { }

+ 4 - 10
MafiaTelegramBot/Game/GameRoles/MafiaRole.cs

@@ -38,16 +38,10 @@ namespace MafiaTelegramBot.Game.GameRoles
 
         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[userId].NickName}");
-                }
-            }
+            MafiaTargetId = userId;
+            if (userId == -4) 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 await Room.PlayersCh.EditTo(Player.Id, MafiaMessageId, $"{strings.you_choose_target} {Room.Players[userId].NickName}");
         }
 
         public MafiaRole(GameRoom room, Player player) : base(room, player) { }

+ 14 - 4
MafiaTelegramBot/Game/GameRooms/GameRoom.GameProcess.cs

@@ -224,13 +224,23 @@ namespace MafiaTelegramBot.Game.GameRooms
             {
                 var beforeKill = Players.Values.ToDictionary(p=>p.Id,p=>p.IsAlive);
                 var mafiaNotAgree = "";
-                var votes = Players.Values.Where(p=> p.IsAlive && p.CurrentRole.MafiaTargetId != -1 && p.CurrentRole.MafiaTargetId != -2)
+                var votes = Players.Values.Where(p=> p.IsAlive && p.CurrentRole.MafiaTargetId != -1 && p.CurrentRole.MafiaTargetId != -2 && p.CurrentRole.MafiaTargetId != -4)
                     .GroupBy(p => p.CurrentRole.MafiaTargetId)
                     .Select(item => new {id = item.Key, count = item.Count()})
                     .ToList();
-                var hookerBlock = Players.Values.Any(p => p.CurrentRole.MafiaTargetId == -2);
-                if (hookerBlock) { }
-                else if (votes.Count == 0) mafiaNotAgree = strings.mafia_not_kill_message;
+                if (votes.Count == 0)
+                {
+                    var allMafiaVotes = Players.Values.Where(p => p.CurrentRole.MafiaTargetId is -1 or -2 or -3).Distinct().ToList();
+                    if (allMafiaVotes.Count == 1)
+                    {
+                        mafiaNotAgree = allMafiaVotes[0].CurrentRole.MafiaTargetId switch
+                        {
+                            -1 => strings.mafia_not_kill_message,
+                            -3 => strings.mafia_decided_not_kill,
+                            _ => "",
+                        };
+                    }
+                }
                 else {
                     var max = votes.Max(item => item.count);
                     var maxObjects = votes.Where(item => item.count == max).ToList();

+ 1 - 1
MafiaTelegramBot/Resources/Keyboard.cs

@@ -201,7 +201,7 @@ namespace MafiaTelegramBot.Resources
                 };
             }
             inlineButtons[players.Count] = new[] {
-                InlineKeyboardButton.WithCallbackData(strings.skip, $"{Callback.MafiaTarget}|{userId}|-1")
+                InlineKeyboardButton.WithCallbackData(strings.skip, $"{Callback.MafiaTarget}|{userId}|-4")
             };
             return inlineButtons;
         }

+ 6 - 0
MafiaTelegramBot/Resources/strings.Designer.cs

@@ -1118,5 +1118,11 @@ namespace MafiaTelegramBot {
                 return ResourceManager.GetString("calculating_votes", resourceCulture);
             }
         }
+        
+        internal static string mafia_decided_not_kill {
+            get {
+                return ResourceManager.GetString("mafia_decided_not_kill", resourceCulture);
+            }
+        }
     }
 }

+ 3 - 0
MafiaTelegramBot/Resources/strings.resx

@@ -555,4 +555,7 @@
     <data name="calculating_votes" xml:space="preserve">
         <value>Подвожу итоги...</value>
     </data>
+    <data name="mafia_decided_not_kill" xml:space="preserve">
+        <value>Мафия решила никого не убивать</value>
+    </data>
 </root>