Browse Source

Merge branch 'develop' of https://gogs.veloe.link/Veloe/MafiaTelegramBot into develop

zelpold 4 years ago
parent
commit
1c9de9658c

+ 3 - 3
MafiaTelegramBot/Game/GameRoles/DameRole.cs

@@ -80,12 +80,12 @@ namespace MafiaTelegramBot.Game.GameRoles
             }
         }
 
-        public override Task Kill()
+        public override async Task Kill()
         {
             if (Room.PlayersRole.ContainsKey(Roles.Werewolf)
                 && Room.PlayersRole[Roles.Werewolf].Count == 1)
-                ((WerewolfRole) Room.PlayersRole[Roles.Werewolf][0].CurrentRole).TransformToMafia();
-            return base.Kill();
+                await ((WerewolfRole) Room.PlayersRole[Roles.Werewolf][0].CurrentRole).TransformToMafia();
+            await base.Kill();
         }
         
         public DameRole(GameRoom room, Player player) : base(room, player) { }

+ 3 - 3
MafiaTelegramBot/Game/GameRoles/DonRole.cs

@@ -78,12 +78,12 @@ namespace MafiaTelegramBot.Game.GameRoles
             }
         }
         
-        public override Task Kill()
+        public override async Task Kill()
         {
             if (Room.PlayersRole.ContainsKey(Roles.Werewolf)
                 && Room.PlayersRole[Roles.Werewolf].Count == 1)
-                ((WerewolfRole) Room.PlayersRole[Roles.Werewolf][0].CurrentRole).TransformToMafia();
-            return base.Kill();
+                await ((WerewolfRole) Room.PlayersRole[Roles.Werewolf][0].CurrentRole).TransformToMafia();
+            await base.Kill();
         }
         
         public DonRole(GameRoom room, Player player) : base(room, player) { }

+ 0 - 2
MafiaTelegramBot/Game/GameRoles/HookerRole.cs

@@ -1,6 +1,5 @@
 using System.Linq;
 using System.Threading.Tasks;
-using MafiaTelegramBot.CustomCollections.Extensions;
 using MafiaTelegramBot.Game.GameRooms;
 using MafiaTelegramBot.Models;
 using MafiaTelegramBot.Resources;
@@ -45,7 +44,6 @@ namespace MafiaTelegramBot.Game.GameRoles
             {
                 NightTargetId = userId;
                 Room.Players[NightTargetId].CanBeBlockedNight = false;
-                Room.Players[NightTargetId].IsBlocked = true;
                 await Room.Players[NightTargetId].CurrentRole.CancelNightActionResult(strings.hooker_block_you);
                 await Room.PlayersCh.EditTo(Player.ChatId, MessageId, $"{strings.you_choose_target} {Room.Players[userId].NickName}");
             }

+ 1 - 2
MafiaTelegramBot/Game/GameRoles/JournalistRole.cs

@@ -4,7 +4,6 @@ using System.Threading.Tasks;
 using MafiaTelegramBot.Game.GameRooms;
 using MafiaTelegramBot.Models;
 using MafiaTelegramBot.Resources;
-using Telegram.Bot.Types;
 
 namespace MafiaTelegramBot.Game.GameRoles
 {
@@ -82,7 +81,7 @@ namespace MafiaTelegramBot.Game.GameRoles
                 else if (NightTargetTwoId == -1)
                 {
                     NightTargetTwoId = userId;
-                    await Room.PlayersCh.EditTo(Player.ChatId, MessageId, $"{strings.choosed_targets} {Room.Players[NightTargetId]} - {Room.Players[NightTargetTwoId]}");
+                    await Room.PlayersCh.EditTo(Player.ChatId, MessageId, $"{strings.choosed_targets} {Room.Players[NightTargetId].NickName} - {Room.Players[NightTargetTwoId].NickName}");
                 }
             }
         }

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

@@ -47,13 +47,13 @@ namespace MafiaTelegramBot.Game.GameRoles
                 }
             }
         }
-
-        public override Task Kill()
+        
+        public override async Task Kill()
         {
             if (Room.PlayersRole.ContainsKey(Roles.Werewolf)
                 && Room.PlayersRole[Roles.Werewolf].Count == 1)
-                ((WerewolfRole) Room.PlayersRole[Roles.Werewolf][0].CurrentRole).TransformToMafia();
-            return base.Kill();
+                await ((WerewolfRole) Room.PlayersRole[Roles.Werewolf][0].CurrentRole).TransformToMafia();
+            await base.Kill();
         }
 
         public MafiaRole(GameRoom room, Player player) : base(room, player) { }

+ 14 - 3
MafiaTelegramBot/Game/GameRoles/WerewolfRole.cs

@@ -43,14 +43,25 @@ namespace MafiaTelegramBot.Game.GameRoles
             }
         }
 
-        public void TransformToMafia()
+        public async Task TransformToMafia()
         {
             if (IsMafia) return;
             ColorRole = 2;
             IsMafia = true;
             var mafiaList = Room.Players.Values.Where(p => p.GetRole() is Roles.Don or Roles.Mafia or Roles.Dame).ToDictionary(p=>p.Id, p => p.GetRoleName());
-            foreach (var mafia in mafiaList)
-                Room.Players[mafia.Key].CurrentRole.KnownRoles.Add(Player.Id, Player.GetRoleName());
+            foreach (var player in mafiaList)
+            {
+                Room.Players[player.Key].CurrentRole.KnownRoles.Add(Player.Id, Player.GetRoleName());
+                KnownRoles.Add(player.Key, player.Value);
+            }
+            var mafia = Room.Players.Values.Where(player => player.GetRole() is Roles.Mafia).ToArray();
+            var don = Room.Players.Values.FirstOrDefault(player => player.GetRole() is Roles.Don);
+            var dame = Room.Players.Values.FirstOrDefault(player => player.GetRole() is Roles.Dame);
+            var message = strings.your_teammates;
+            if (don != null) message += $"\n({don.TurnOrder}) {don.NickName} - {roles.Don}";
+            if (dame != null) message += $"\n({dame.TurnOrder}) {dame.NickName} - {roles.Dame}";
+            message = mafia.Aggregate(message, (current, player) => current + $"\n({player.TurnOrder}) {player.NickName}");
+            await Room.PlayersCh.SendTo(Player.Id, message);
         }
 
         public override async Task SetMafiaTarget(long userId)

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

@@ -61,8 +61,10 @@ namespace MafiaTelegramBot.Game.GameRooms
                 await PlayersCh.Send(strings.city_falls_asleep);
                 var mafia = Players.Values.Where(player => player.GetRole() is Roles.Mafia).ToArray();
                 var don = Players.Values.FirstOrDefault(player => player.GetRole() is Roles.Don);
+                var dame = Players.Values.FirstOrDefault(player => player.GetRole() is Roles.Dame);
                 var message = strings.your_teammates;
                 if (don != null) message += $"\n({don.TurnOrder}) {don.NickName} - {roles.Don}";
+                if (dame != null) message += $"\n({dame.TurnOrder}) {dame.NickName} - {roles.Dame}";
                 message = mafia.Aggregate(message, (current, player) => current + $"\n({player.TurnOrder}) {player.NickName}");
                 await _mafiaCh.Send(message);
                 var resetEvent = new ManualResetEvent(false);
@@ -187,7 +189,8 @@ namespace MafiaTelegramBot.Game.GameRooms
                     .Select(item => new {id = item.Key, count = item.Count()})
                     .ToList();
                 var hookerBlock = Players.Values.Any(p => p.CurrentRole.MafiaTargetId == -2);
-                if (votes.Count == 0 && !hookerBlock) mafiaNotAgree = strings.mafia_not_kill_message;
+                if (hookerBlock) { }
+                else if (votes.Count == 0) mafiaNotAgree = strings.mafia_not_kill_message;
                 else {
                     var max = votes.Max(item => item.count);
                     var maxObjects = votes.Where(item => item.count == max).ToList();

+ 4 - 1
MafiaTelegramBot/Resources/Keyboard.cs

@@ -1,5 +1,6 @@
 using System.Collections.Generic;
 using MafiaTelegramBot.Game;
+using MafiaTelegramBot.Game.GameRoles;
 using MafiaTelegramBot.Game.GameRooms;
 using Telegram.Bot.Types.ReplyMarkups;
 
@@ -189,10 +190,12 @@ namespace MafiaTelegramBot.Resources
             var inlineButtons = new InlineKeyboardButton[players.Count + 1][];
             for (var i = 0; i<players.Count; ++i)
             {
+                var isMafia = (players[i].GetRole() is Roles.Mafia or Roles.Don or Roles.Dame)
+                               || (players[i].GetRole() is Roles.Werewolf && ((WerewolfRole) players[i].CurrentRole).IsMafia);
                 inlineButtons[i] = new[]
                 {
                     InlineKeyboardButton.WithCallbackData($"({players[i].TurnOrder}) " +
-                        $"{players[i].NickName}{(players[i].GetRole() is Roles.Mafia or Roles.Don or Roles.Dame ? " - " + players[i].GetRoleName() : "")}", 
+                        $"{players[i].NickName}{(isMafia ? " - " + players[i].GetRoleName() : "")}", 
                         $"{Callback.MafiaTarget}|{userId}|{players[i].Id}")
                 };
             }