Browse Source

Send stickers with role and game phase

Tigran 4 years ago
parent
commit
2e5acab323

+ 5 - 4
MafiaTelegramBot/Game/GameRooms/ExtendedGameRoom.cs

@@ -10,6 +10,11 @@ namespace MafiaTelegramBot.Game.GameRooms
 
         protected override Dictionary<Roles, List<Player>> PlayersRole { get; } = new()
         {
+            //passive roles
+            [Roles.Elder] = new List<Player>(),
+            [Roles.Fool] = new List<Player>(),
+            [Roles.Villager] = new List<Player>(),
+            //Active roles
             [Roles.Hooker] = new List<Player>(),
             [Roles.Parasite] = new List<Player>(),
             [Roles.Mafia] = new List<Player>(),
@@ -23,10 +28,6 @@ namespace MafiaTelegramBot.Game.GameRooms
             [Roles.Doctor] = new List<Player>(),
             [Roles.Necromancer] = new List<Player>(),
             [Roles.Werewolf] = new List<Player>(),
-            //passive roles
-            [Roles.Elder] = new List<Player>(),
-            [Roles.Fool] = new List<Player>(),
-            [Roles.Villager] = new List<Player>(),
         };
 
         protected override Task ReadSettings()

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

@@ -30,6 +30,7 @@ namespace MafiaTelegramBot.Game.GameRooms
         private async Task FirstDay()
         {
             IsDay = true;
+            await PlayersCh.SendSticker(Stickers.Sticker["Day"]);
             await PlayersCh.Send(strings.first_day_message);
             await Task.Run(async() =>
             {
@@ -53,6 +54,7 @@ namespace MafiaTelegramBot.Game.GameRooms
             IsDay = false;
             await Task.Run(async() =>
             {
+                await PlayersCh.SendSticker(Stickers.Sticker["Night"]);
                 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);
@@ -127,6 +129,7 @@ namespace MafiaTelegramBot.Game.GameRooms
         private async Task NightPhase()
         {
             IsDay = false;
+            await PlayersCh.SendSticker(Stickers.Sticker["Night"]);
             await PlayersCh.Send(strings.city_falls_asleep);
             await Task.Run(async () =>
             {
@@ -178,6 +181,7 @@ namespace MafiaTelegramBot.Game.GameRooms
                 var message = strings.city_wakes_up;
                 if (killedPlayer is {IsAlive: false}) message += $"{strings.at_this_night} {killedPlayer.NickName}";
                 else message += strings.everyone_survived;
+                await PlayersCh.SendSticker(Stickers.Sticker["Day"]);
                 await PlayersCh.Send(message);
             });
         }

+ 9 - 0
MafiaTelegramBot/Game/GameRooms/GameRoom.MessageChannels.cs

@@ -44,6 +44,15 @@ namespace MafiaTelegramBot.Game.GameRooms
                     await Bot.SendWithMarkdown2(player.ChatId, message, replyMarkup);
             }
 
+            public async Task SendSticker(string fileId, bool exceptDied = true)
+            {
+                var receivers = exceptDied
+                    ? Room.Players.Values
+                    : Room.Players.Values.Where(p => p.IsAlive);
+                foreach (var player in receivers)
+                    await Bot.SendStickerAsync(player.ChatId, fileId);
+            }
+
             public PlayersChannel(GameRoom room) : base(room)
             {
             }

+ 1 - 0
MafiaTelegramBot/Game/GameRooms/GameRoom.PrepareRoom.cs

@@ -70,6 +70,7 @@ namespace MafiaTelegramBot.Game.GameRooms
         {
             foreach (var player in Players.Values)
             {
+                await Bot.SendStickerAsync(player.ChatId, Stickers.Sticker[player.GetRole().ToString()]);
                 var message =
                     $"{strings.your_role}: _*{player.GetRoleName()}*_\n" +
                     $"{strings.your_turn_order}: _*{player.TurnOrder}*_\n"+

+ 3 - 2
MafiaTelegramBot/Game/GameRooms/NormalGameRoom.cs

@@ -10,12 +10,13 @@ namespace MafiaTelegramBot.Game.GameRooms
 
         protected override Dictionary<Roles, List<Player>> PlayersRole { get; } = new()
         {
+            //passive roles
+            [Roles.Villager] = new List<Player>(),
+            //Active roles
             [Roles.Mafia] = new List<Player>(),
             [Roles.Don] = new List<Player>(),
             [Roles.Cop] = new List<Player>(),
             [Roles.Doctor] = new List<Player>(),
-            //passive roles
-            [Roles.Villager] = new List<Player>()
         };
 
         protected override async Task ReadSettings()

+ 1 - 1
MafiaTelegramBot/Models/Bot.cs

@@ -87,7 +87,7 @@ namespace MafiaTelegramBot.Models
             };
         }
 
-        public static async Task SendStickerWithoutPackAsync(long chatId, string fileId)
+        public static async Task SendStickerAsync(long chatId, string fileId)
         {
             await Get().SendStickerAsync(chatId, fileId, disableNotification: true);
         }

+ 0 - 1
MafiaTelegramBot/Models/Commands/CreateGameCommand.cs

@@ -12,7 +12,6 @@ namespace MafiaTelegramBot.Models.Commands
         protected override async Task<Message> Execute(Update update)
         {
             var user = await UserDao.GetPlayerById(UserId);
-            await Bot.SendStickerWithoutPackAsync(ChatId, "https://github.com/TelegramBots/book/raw/master/src/docs/sticker-fred.webp");
             if (user.GetRoomName() != "")
                 return await Bot.SendWithMarkdown2(ChatId, strings.user_already_in_game);
             return await Bot.SendWithMarkdown2(ChatId, strings.choose_type_room,