Tigran 4 éve
szülő
commit
661e27336c

+ 29 - 14
MafiaTelegramBot/Game/GameRooms/GameRoom.MessageChannels.cs

@@ -8,7 +8,6 @@ namespace MafiaTelegramBot.Game.GameRooms
 {
     public partial class GameRoom
     {
-
         public abstract class Channel
         {
             protected readonly GameRoom Room;
@@ -18,46 +17,62 @@ namespace MafiaTelegramBot.Game.GameRooms
                 Room = room;
             }
 
-            public abstract Task Send(string message, IReplyMarkup replyMarkup = null);
-            public abstract Task SendExcept(long playerId, string message, IReplyMarkup replyMarkup = null);
+            public abstract Task Send(string message, IReplyMarkup replyMarkup = null,
+                bool exceptDied = false);
+
+            public abstract Task SendExcept(long playerId, string message, IReplyMarkup replyMarkup = null,
+                bool exceptDied = false);
         }
+
         public class PlayersChannel : Channel
         {
-            public override async Task Send(string message, IReplyMarkup replyMarkup = null)
+            public override async Task Send(string message, IReplyMarkup replyMarkup = null,
+                bool exceptDied = false)
             {
-                var receivers = Room.Players.Values;
+                var receivers = exceptDied
+                    ? Room.Players.Values
+                    : Room.Players.Values.Where(p => p.IsAlive);
                 foreach (var player in receivers)
                     await Bot.SendWithMarkdown2(player.ChatId, message, replyMarkup);
             }
 
-            public override async Task SendExcept(long playerId, string message, IReplyMarkup replyMarkup = null)
+            public override async Task SendExcept(long playerId, string message, IReplyMarkup replyMarkup = null,
+                bool exceptDied = false)
             {
-                var receivers = Room.Players.Values.Where(p => p.Id != playerId);
+                var receivers = exceptDied ? Room.Players.Values
+                    : Room.Players.Values.Where(p => p.IsAlive && p.Id != playerId);
                 foreach (var player in receivers)
                     await Bot.SendWithMarkdown2(player.ChatId, message, replyMarkup);
             }
 
-            public PlayersChannel(GameRoom room) : base(room) { }
+            public PlayersChannel(GameRoom room) : base(room)
+            {
+            }
         }
-        
+
         public class MafiaChannel : Channel
         {
-            public override async Task Send(string message, IReplyMarkup replyMarkup = null)
+            public override async Task Send(string message, IReplyMarkup replyMarkup = null, bool exceptDied = false)
             {
-                var receivers = Room.Players.Values.Where(p=> p.CurrentRole.RoleKey is Roles.Don or Roles.Mafia);
+                var mafia = Room.Players.Values.Where(p => p.CurrentRole.RoleKey is Roles.Don or Roles.Mafia);
+                var receivers = exceptDied ? mafia : mafia.Where(p => p.IsAlive);
                 foreach (var player in receivers)
                     await Bot.SendWithMarkdown2(player.ChatId, message, replyMarkup);
             }
 
-            public override async Task SendExcept(long playerId, string message, IReplyMarkup replyMarkup = null)
+            public override async Task SendExcept(long playerId, string message, IReplyMarkup replyMarkup = null,
+                bool exceptDied = false)
             {
                 var except = Room.Players.Values.Where(p => p.Id != playerId);
-                var receivers = except.Where(p=> p.CurrentRole.RoleKey is Roles.Don or Roles.Mafia);
+                var mafia = except.Where(p => p.CurrentRole.RoleKey is Roles.Don or Roles.Mafia);
+                var receivers = exceptDied ? mafia : mafia.Where(p => p.IsAlive);
                 foreach (var player in receivers)
                     await Bot.SendWithMarkdown2(player.ChatId, message, replyMarkup);
             }
 
-            public MafiaChannel(GameRoom room) : base(room) { }
+            public MafiaChannel(GameRoom room) : base(room)
+            {
+            }
         }
     }
 }

+ 1 - 1
MafiaTelegramBot/Game/GameRooms/GameRoom.MessageHandler.cs

@@ -60,7 +60,7 @@ namespace MafiaTelegramBot.Game.GameRooms
                 var players = _room.Players.Values.ToList();
                 players.Sort((x, y) => x.TurnOrder - y.TurnOrder);
                 var message = players.Aggregate(strings.players_list,
-                    (current, player) => current + $"\n\\({player.TurnOrder}\\) {player.NickName}");
+                    (current, player) => current + $"\n\\({player.TurnOrder}\\) {player.NickName} {(player.IsAlive ? strings.alive : strings.died)}");
                 await Bot.SendWithMarkdown2(chatId, message);
             }
 

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

@@ -488,5 +488,17 @@ namespace MafiaTelegramBot {
                 return ResourceManager.GetString("mafia_get_mail", resourceCulture);
             }
         }
+        
+        internal static string alive {
+            get {
+                return ResourceManager.GetString("alive", resourceCulture);
+            }
+        }
+        
+        internal static string died {
+            get {
+                return ResourceManager.GetString("died", resourceCulture);
+            }
+        }
     }
 }

+ 6 - 0
MafiaTelegramBot/Resources/strings.resx

@@ -240,4 +240,10 @@
     <data name="mafia_get_mail" xml:space="preserve">
         <value>В первую ночь мафия получает список соучастников.</value>
     </data>
+    <data name="alive" xml:space="preserve">
+        <value>живой</value>
+    </data>
+    <data name="died" xml:space="preserve">
+        <value>мертвый</value>
+    </data>
 </root>