From b2e220a7386adbead4e2361f8da42b9b47f41cb5 Mon Sep 17 00:00:00 2001 From: ykundesu <4476tv@gmail.com> Date: Mon, 1 Apr 2024 17:33:38 +0900 Subject: [PATCH] fixed AprilFools2024 Deserialize error --- src/Impostor.Api/Innersloth/GameModes.cs | 2 ++ .../Innersloth/GameOptions/GameOptionsFactory.cs | 6 ++++-- src/Impostor.Server/Net/Inner/Objects/InnerMeetingHud.cs | 4 ++-- src/Impostor.Server/Net/Inner/Objects/InnerPlayerInfo.cs | 4 ++-- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/Impostor.Api/Innersloth/GameModes.cs b/src/Impostor.Api/Innersloth/GameModes.cs index 0c55518..e133e00 100644 --- a/src/Impostor.Api/Innersloth/GameModes.cs +++ b/src/Impostor.Api/Innersloth/GameModes.cs @@ -5,5 +5,7 @@ namespace Impostor.Api.Innersloth None, Normal, HideNSeek, + NormalFools, + SeekFools } } diff --git a/src/Impostor.Api/Innersloth/GameOptions/GameOptionsFactory.cs b/src/Impostor.Api/Innersloth/GameOptions/GameOptionsFactory.cs index a7625aa..be306ec 100644 --- a/src/Impostor.Api/Innersloth/GameOptions/GameOptionsFactory.cs +++ b/src/Impostor.Api/Innersloth/GameOptions/GameOptionsFactory.cs @@ -39,8 +39,8 @@ public static class GameOptionsFactory return gameMode switch { - GameModes.Normal => NormalGameOptions.Deserialize(optionsReader, version), - GameModes.HideNSeek => HideNSeekGameOptions.Deserialize(optionsReader, version), + GameModes.Normal or GameModes.NormalFools => NormalGameOptions.Deserialize(optionsReader, version), + GameModes.HideNSeek or GameModes.SeekFools => HideNSeekGameOptions.Deserialize(optionsReader, version), _ => throw new ArgumentOutOfRangeException(), }; } @@ -62,9 +62,11 @@ public static class GameOptionsFactory switch (gameMode) { case GameModes.Normal: + case GameModes.NormalFools: ((NormalGameOptions)gameOptions).Deserialize(optionsReader); break; case GameModes.HideNSeek: + case GameModes.SeekFools: ((HideNSeekGameOptions)gameOptions).Deserialize(optionsReader); break; default: diff --git a/src/Impostor.Server/Net/Inner/Objects/InnerMeetingHud.cs b/src/Impostor.Server/Net/Inner/Objects/InnerMeetingHud.cs index 207f131..4ca647a 100644 --- a/src/Impostor.Server/Net/Inner/Objects/InnerMeetingHud.cs +++ b/src/Impostor.Server/Net/Inner/Objects/InnerMeetingHud.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Linq; @@ -44,7 +44,7 @@ namespace Impostor.Server.Net.Inner.Objects try { const float AnimationTime = 0.25f + 0.5f + 0.4f + 3f + 0.75f + 5f; - if (Game.Options.GameMode == GameModes.Normal) + if (Game.Options.GameMode is GameModes.Normal or GameModes.NormalFools) { var options = (NormalGameOptions)Game.Options; await Task.Delay(TimeSpan.FromSeconds(AnimationTime + options.DiscussionTime + options.VotingTime), _timerToken.Token); diff --git a/src/Impostor.Server/Net/Inner/Objects/InnerPlayerInfo.cs b/src/Impostor.Server/Net/Inner/Objects/InnerPlayerInfo.cs index 8a484d8..320cb5b 100644 --- a/src/Impostor.Server/Net/Inner/Objects/InnerPlayerInfo.cs +++ b/src/Impostor.Server/Net/Inner/Objects/InnerPlayerInfo.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using Impostor.Api.Games; using Impostor.Api.Innersloth; @@ -60,7 +60,7 @@ namespace Impostor.Server.Net.Inner.Objects // the impostor has a cooldown of half the usual duration. As a workaround we always assume the kill was // prevented and the impostor only has half of its cooldown. // FIXME when the base game improved their implementation. - if (game.Options.GameMode == GameModes.Normal) + if (game.Options.GameMode is GameModes.Normal or GameModes.NormalFools) { var options = (NormalGameOptions)game.Options; return dateTimeProvider.UtcNow.Subtract(LastMurder).TotalSeconds >= options.KillCooldown / 2; -- 2.39.5