Переглянути джерело

in game players list showing by turn order

Tigran 4 роки тому
батько
коміт
ba0bf422c4

+ 2 - 2
MafiaTelegramBot/Game/GameRooms/GameRoom.GameProcess.cs

@@ -137,8 +137,8 @@ namespace MafiaTelegramBot.Game.GameRooms
             for (var i = 0; i < turnsCount; ++i)
             {
                 var player = _turnOrder.Dequeue();
-                if(!Players.ContainsKey(player.Id) || !player.IsAlive) continue;
-                if (!player.IsBlocked)
+                if(!Players.ContainsKey(player.Id)) continue;
+                if (!player.IsBlocked && player.IsAlive)
                 {
                     await PlayersCh.Send($"{strings.now_turn} ({player.TurnOrder}) {player.NickName}");
                     if (TimerEnabled) await Bot.SendWithMarkdown2(player.ChatId, strings.you_turn_say);

+ 12 - 7
MafiaTelegramBot/Game/GameRooms/GameRoom.MessageHandler.cs

@@ -49,18 +49,23 @@ namespace MafiaTelegramBot.Game.GameRooms
 
             private async Task LookPlayers(Player player)
             {
-                var players = _room.Players.Values.ToList();
+                var players = _room.Players.Values.ToArray();
+                var nextPlayer = _room._turnOrder.Peek();
                 var knownRoles = player.CurrentRole.KnownRoles;
                 var message = strings.players_list;
-                foreach (var item in players)
+                var stopIndex = -1;
+                for (var i = 0; i <= players.Length && i != stopIndex; ++i)
                 {
-                    var role =  knownRoles.ContainsKey(item.Id)
-                        ? knownRoles[item.Id]
+                    if (stopIndex == -1 && players[i].Id == nextPlayer.Id) stopIndex = i;
+                    if (stopIndex == -1) continue;
+                    i %= players.Length;
+                    var role =  knownRoles.ContainsKey(players[i].Id)
+                        ? knownRoles[players[i].Id]
                         : "";
                     message +=
-                        $"\n({item.TurnOrder}) " +
-                        $"{item.NickName} " +
-                        $"({(item.IsAlive ? strings.alive : strings.died)}) " +
+                        $"\n({players[i].TurnOrder}) " +
+                        $"{players[i].NickName} " +
+                        $"({(players[i].IsAlive ? strings.alive : strings.died)}) " +
                         $"{role}";
                 }
                 await _room.PlayersCh.SendTo(player.Id, message);