Jelajahi Sumber

Add message about subtract points when player leaving

Tigran 4 tahun lalu
induk
melakukan
adfbe95b37

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

@@ -547,14 +547,12 @@ namespace MafiaTelegramBot.Game.GameRooms
                             if (player.CurrentRole.IsWon().Result != "")
                             {
                                 player.HookerRoleAchievementEvent();
-                                if (IsRanking) player.AddRankPoints();
                                 UpdateWins(player);
                             }
-                            else if (IsRanking) player.SubtractRankPoints();
                             player.ResetParasiteProgress();
                         }
 
-                        if (IsRanking) SumRankingPoints(player, aliveMafia != 0);
+                        if (IsRanking) await SumRankingPoints(player, aliveMafia != 0);
                         
                         if (player.CurrentRole.RoleKey == Roles.Cop)
                         {

+ 21 - 16
MafiaTelegramBot/Game/GameRooms/GameRoom.Structure.cs

@@ -3,7 +3,9 @@ using System.Linq;
 using System.Threading.Tasks;
 using System.Timers;
 using MafiaTelegramBot.Game.GameRoles;
+using MafiaTelegramBot.Models;
 using MafiaTelegramBot.Resources;
+using Telegram.Bot.Types;
 
 namespace MafiaTelegramBot.Game.GameRooms
 {
@@ -88,7 +90,7 @@ namespace MafiaTelegramBot.Game.GameRooms
                     await PlayersRole[Roles.Parasite][0].CurrentRole.Kill();
                 if (player.CurrentRole.RoleKey==Roles.Werewolf) player.WerewolfRoleAchievementEvent(0,true);
             }
-            if (IsRanking) player.SubtractRankPoints();
+            if (IsRanking) await Bot.SendWithMarkdown2(player.ChatId, $"{strings.you_lost} {player.SubtractRankPoints()} {strings.points}");
             player.ResetState();
         }
 
@@ -107,23 +109,26 @@ namespace MafiaTelegramBot.Game.GameRooms
             return await Task.FromResult(Owner.GetRank());
         }
 
-        private void SumRankingPoints(Player player, bool mafiaWins)
+        private static Task<Message> SumRankingPoints(Player player, bool mafiaWins)
         {
-            if (player.CurrentRole.ColorRole == 3)
+            return player.CurrentRole.ColorRole switch
             {
-                if (player.CurrentRole.IsWon().Result != "") player.AddRankPoints();
-                else player.SubtractRankPoints();
-            }
-            else if (player.CurrentRole.ColorRole == 1 && player.GetRole() != Roles.Lawyer)
-            {
-                if (!mafiaWins) player.AddRankPoints();
-                else player.SubtractRankPoints();
-            }
-            else if (player.CurrentRole.ColorRole == 2 || player.CurrentRole.RoleKey == Roles.Lawyer)
-            {
-                if (mafiaWins) player.AddRankPoints();
-                else player.SubtractRankPoints();
-            }
+                3 when player.CurrentRole.IsWon().Result != "" => Bot.SendWithMarkdown2(player.ChatId,
+                    $"{strings.you_got} {player.AddRankPoints()} {strings.points}"),
+                3 => Bot.SendWithMarkdown2(player.ChatId,
+                    $"{strings.you_lost} {player.SubtractRankPoints()} {strings.points}"),
+                1 when player.GetRole() != Roles.Lawyer && mafiaWins => Bot.SendWithMarkdown2(player.ChatId,
+                    $"{strings.you_lost} {player.SubtractRankPoints()} {strings.points}"),
+                1 when player.GetRole() == Roles.Lawyer && mafiaWins => Bot.SendWithMarkdown2(player.ChatId,
+                    $"{strings.you_got} {player.AddRankPoints()} {strings.points}"),
+                1 => Bot.SendWithMarkdown2(player.ChatId,
+                    $"{strings.you_got} {player.AddRankPoints()} {strings.points}"),
+                2 when mafiaWins => Bot.SendWithMarkdown2(player.ChatId,
+                    $"{strings.you_got} {player.AddRankPoints()} {strings.points}"),
+                2 => Bot.SendWithMarkdown2(player.ChatId,
+                    $"{strings.you_lost} {player.SubtractRankPoints()} {strings.points}"),
+                _ => Task.FromResult(new Message())
+            };
         }
     }
 }

+ 11 - 13
MafiaTelegramBot/Game/Player.cs

@@ -352,56 +352,54 @@ namespace MafiaTelegramBot.Game
             };
         }
 
-        public void AddRankPoints()
+        public int AddRankPoints()
         {
             switch (GetRank())
             {
                 case 'a':
                 {
                     RankNumber += CurrentRole.RankingCost;
-                    break;
+                    return CurrentRole.RankingCost;
                 }
                 case 'b':
                 {
                     RankNumber += CurrentRole.RankingCost;
-                    break;
+                    return CurrentRole.RankingCost;
                 }
                 case 'c':
                 {
                     RankNumber += (int)(CurrentRole.RankingCost * Statistics[Roles.All].GetWinrate());
-                    break;
+                    return (int)(CurrentRole.RankingCost * Statistics[Roles.All].GetWinrate());
                 }
                 case 'd':
                 {
                     RankNumber += (int)(CurrentRole.RankingCost * Statistics[Roles.All].GetWinrate());
-                    break;
+                    return (int)(CurrentRole.RankingCost * Statistics[Roles.All].GetWinrate());
                 }
+                default: return 0;
             }
         }
 
-        public void SubtractRankPoints()
+        public int SubtractRankPoints()
         {
             switch (GetRank())
             {
-                case 'a':
-                {
-                    break;
-                }
                 case 'b':
                 {
                     RankNumber -= CurrentRole.RankingCost;
-                    break;
+                    return CurrentRole.RankingCost;
                 }
                 case 'c':
                 {
                     RankNumber -= (int)(CurrentRole.RankingCost * Statistics[Roles.All].GetWinrate());
-                    break;
+                    return (int)(CurrentRole.RankingCost * Statistics[Roles.All].GetWinrate());
                 }
                 case 'd':
                 {
                     RankNumber -= CurrentRole.RankingCost;
-                    break;
+                    return CurrentRole.RankingCost;
                 }
+                default: return 0;
             }
         }
     }

+ 6 - 6
MafiaTelegramBot/Resources/Constants.cs

@@ -6,7 +6,7 @@ namespace MafiaTelegramBot.Resources
 {
     public static class Constants
     {
-        public const int PLAYER_LIMITS_MIN = 1; //6;
+        public const int PLAYER_LIMITS_MIN = 6;
         public const int MEMORY_CLEANER_INTERVAL = 60 * 60 * 1000;
         // ReSharper disable once InconsistentNaming
         public static readonly TimeSpan PLAYER_INACTIVE_INTERVAL = new(0, 40, 0);
@@ -21,15 +21,15 @@ namespace MafiaTelegramBot.Resources
             new LabeledPrice {Label = "100 рублей", Amount = 10000}
         };
 
-        public const bool ENABLE_AUTO_VOTING = false;
+        public const bool ENABLE_AUTO_VOTING = true;
 
-        public const int FIRST_NIGHT_INTERVAL = 10 * 100;
+        public const int FIRST_NIGHT_INTERVAL = 10 * 1000;
         public const int PUT_UP_VOTE_INTERVAL = 20 * 1000;
         public const int VOTE_KILL_INTERVAL = 20 * 1000;
         public const int NIGHT_ACTION_INTERVAL = 60 * 1000;
-        public const int DEFENCE_INTERVAL = 90 * 100;
-        public const int SPEAK_INTERVAL = 60 * 100;
-        public const int DISCUSSION_INTERVAL = 60 * 100;
+        public const int DEFENCE_INTERVAL = 90 * 1000;
+        public const int SPEAK_INTERVAL = 60 * 1000;
+        public const int DISCUSSION_INTERVAL = 60 * 1000;
 
         public const int ROOM_CODE_LENGTH = 6;
         

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

@@ -1358,5 +1358,23 @@ namespace MafiaTelegramBot {
                 return ResourceManager.GetString("rate", resourceCulture);
             }
         }
+        
+        internal static string you_got {
+            get {
+                return ResourceManager.GetString("you_got", resourceCulture);
+            }
+        }
+        
+        internal static string you_lost {
+            get {
+                return ResourceManager.GetString("you_lost", resourceCulture);
+            }
+        }
+        
+        internal static string points {
+            get {
+                return ResourceManager.GetString("points", resourceCulture);
+            }
+        }
     }
 }

+ 9 - 0
MafiaTelegramBot/Resources/strings.resx

@@ -675,4 +675,13 @@
     <data name="rate" xml:space="preserve">
         <value>Ваш рейтинг:</value>
     </data>
+    <data name="you_got" xml:space="preserve">
+        <value>Вы получили</value>
+    </data>
+    <data name="you_lost" xml:space="preserve">
+        <value>Вы потеряли</value>
+    </data>
+    <data name="points" xml:space="preserve">
+        <value>очков</value>
+    </data>
 </root>