Tigran 4 年 前
コミット
ce18b0c8c0

+ 5 - 8
MafiaTelegramBot/Controllers/RoomController.cs

@@ -1,11 +1,8 @@
 using System.Collections.Generic;
 using System.Linq;
 using System.Threading.Tasks;
-using MafiaTelegramBot.DataBase.EntityDao;
 using MafiaTelegramBot.Game;
-using MafiaTelegramBot.Game.GameRoles;
 using MafiaTelegramBot.Game.GameRooms;
-using MafiaTelegramBot.Models;
 using MafiaTelegramBot.Resources;
 
 namespace MafiaTelegramBot.Controllers
@@ -16,7 +13,7 @@ namespace MafiaTelegramBot.Controllers
 
         public static async Task<ResultCode> CreateNewGame(Player creator, string roomName, bool isExtended, bool isPrivate)
         {
-            return await Task.Run( () =>
+            return await Task.Run(() =>
             {
                 var roomKey = RoomEncrypter.GetCode(roomName);
                 if (OpenedGames.ContainsKey(roomKey)) return ResultCode.GameAlreadyExists;
@@ -28,7 +25,7 @@ namespace MafiaTelegramBot.Controllers
                 room.Players.Add(creator.Id, creator);
                 
                 room.SetTimer();
-                UserDao.GetPlayerById(creator.Id).Result.StopTimer();
+                creator.StopTimer();
                 
                 return ResultCode.CodeOk;
             });
@@ -47,7 +44,7 @@ namespace MafiaTelegramBot.Controllers
 
                 if (OpenedGames[roomKey].Players.Count > Constants.PLAYER_DISABLE_TIMER)
                     OpenedGames[roomKey].StopTimer();
-                UserDao.GetPlayerById(player.Id).Result.StopTimer();
+                player.StopTimer();
                 
                 await OpenedGames[roomKey].PlayersCh.SendExcept(player.Id, $"{player.NickName} {strings.connected_to_game}");
                 return ResultCode.CodeOk;
@@ -69,8 +66,8 @@ namespace MafiaTelegramBot.Controllers
                 await OpenedGames[roomKey].Leave(player);
                 if (!OpenedGames[roomKey].IsRunning &&
                     OpenedGames[roomKey].Players.Count <= Constants.PLAYER_DISABLE_TIMER)
-                    await OpenedGames[roomKey].StartTimer();
-                await UserDao.GetPlayerById(player.Id).Result.StartTimer();
+                    OpenedGames[roomKey].StartTimer();
+                player.StartTimer();
                 if (OpenedGames[roomKey].Players.Count >= 0) return ResultCode.CodeOk;
                 RoomEncrypter.RemoveCode(roomName);
                 OpenedGames.Remove(roomKey);

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

@@ -447,6 +447,7 @@ namespace MafiaTelegramBot.Game.GameRooms
                     await Bot.SendWithMarkdown2(Owner.ChatId, strings.thanks_for_game, Keyboard.OwnerGameMenu);
                     await PlayersCh.SendExcept(Owner.Id, strings.thanks_for_game, Keyboard.PlayerGameMenu);
                 }
+                if (Players.Count <= Constants.PLAYER_DISABLE_TIMER) StartTimer();
             });
         }
     }

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

@@ -23,6 +23,7 @@ namespace MafiaTelegramBot.Game.GameRooms
             if (resultCode != ResultCode.CodeOk) return resultCode;
             resultCode = await ReadSettings();
             if (resultCode != ResultCode.CodeOk) return resultCode;
+            StopTimer();
             foreach (var (_, player) in Players) player.IsSpeaker = false;
             await GenerateTurnOrder();
             await AssignRoles();

+ 12 - 15
MafiaTelegramBot/Game/GameRooms/GameRoom.Timer.cs

@@ -8,26 +8,23 @@ namespace MafiaTelegramBot.Game.GameRooms
 {
     public abstract partial class GameRoom
     {
-        private int minutes;
-        public async Task SetTimer()
+        private int _minutes;
+        public void SetTimer()
         {
-            minutes = 0;
+            _minutes = 0;
             WaitingPlayers = new System.Timers.Timer(60000);
-            WaitingPlayers.Elapsed += async (x , y) =>
-            {
-                await Remove();
-            };
+            WaitingPlayers.Elapsed += async (_ , _) => { await Remove(); };
             WaitingPlayers.Enabled = true;
         }
         
-        public async Task StopTimer()
+        public void StopTimer()
         {
             WaitingPlayers.Stop();
         }
 
-        public async Task StartTimer()
+        public void StartTimer()
         {
-            minutes = 0;
+            _minutes = 0;
             WaitingPlayers.Start();
         }
         
@@ -35,18 +32,18 @@ namespace MafiaTelegramBot.Game.GameRooms
         {
             try
             {
-                switch (minutes)
+                switch (_minutes)
                 {
                     case Constants.MINUTES_UNTIL_DISSOLVE - 2:
-                        Bot.SendHyperLink(Owner.ChatId, strings.dissolve_warning);
-                        minutes++;
+                        await Bot.SendWithMarkdown2(Owner.ChatId, strings.dissolve_warning);
+                        _minutes++;
                         break;
                     case Constants.MINUTES_UNTIL_DISSOLVE:
-                        RoomController.DissolveRoom(RoomEncrypter.GetCode(RoomName));
+                        await RoomController.DissolveRoom(RoomEncrypter.GetCode(RoomName));
                         //GC.Collect();
                         break;
                     default:
-                        minutes++;
+                        _minutes++;
                         break;
                 }
             }

+ 4 - 4
MafiaTelegramBot/Game/Player.cs

@@ -41,7 +41,7 @@ namespace MafiaTelegramBot.Game
             return true;
         }
 
-        public async Task SetTimer()
+        public void SetTimer()
         {
             _activeTime = new System.Timers.Timer(3600000);
             _activeTime.Elapsed += async (x , y) =>
@@ -51,19 +51,19 @@ namespace MafiaTelegramBot.Game
             _activeTime.Enabled = true;
         }
 
-        public async Task Restart()
+        public void Restart()
         {
             if (_activeTime.Enabled)
                 _activeTime.Stop();
             _activeTime.Start();
         }
 
-        public async Task StopTimer()
+        public void StopTimer()
         {
             _activeTime.Stop();
         }
 
-        public async Task StartTimer()
+        public void StartTimer()
         {
             _activeTime.Start();
         }

+ 1 - 1
MafiaTelegramBot/Models/Commands/Command.cs

@@ -37,7 +37,7 @@ namespace MafiaTelegramBot.Models.Commands
             
             var user = await UserDao.GetPlayerById(userId);
             
-            await UserDao.GetPlayerById(userId).Result.Restart();
+            UserDao.GetPlayerById(userId).Result.Restart();
             
             if (user.IsPlaying)
             {

+ 2 - 2
MafiaTelegramBot/Resources/strings.resx

@@ -301,7 +301,7 @@
         <value>все игроки остались в живых!</value>
     </data>
     <data name="you_have_ten_seconds" xml:space="preserve">
-        <value>У вас есть десять секунд, чтобы выставить игрока на голосование</value>
+        <value>У вас есть 20 секунд, чтобы выставить игрока на голосование</value>
     </data>
     <data name="choose_player_to_kill" xml:space="preserve">
         <value>Выберите свою жертву</value>
@@ -421,7 +421,7 @@
         <value>Вы будете казнены, у вас есть минута на прощание.</value>
     </data>
     <data name="you_have_ten_seconds_to_vote" xml:space="preserve">
-        <value>У вас есть 10 секунд, чтобы проголосовать за игрока</value>
+        <value>У вас есть 20 секунд, чтобы проголосовать за игрока</value>
     </data>
     <data name="automatically_choosed_target" xml:space="preserve">
         <value>Автоматически была выбрана цель:</value>