diff --git a/src/Application/Maps/Rotation/MapRotationService.cs b/src/Application/Maps/Rotation/MapRotationService.cs index 5b17ec6c..0f254bbe 100644 --- a/src/Application/Maps/Rotation/MapRotationService.cs +++ b/src/Application/Maps/Rotation/MapRotationService.cs @@ -63,8 +63,6 @@ private void OnLoadingMap() { _isMapLoading = true; LoadingMapEvent?.Invoke(); - var matchResult = MatchResult.Create(Team.Alpha, Team.Beta); - worldService.SendClientMessage(Color.Yellow, matchResult.Announcement); mapObjects.Unload(); IEnumerable players = MatchPlayers.GetAll(); diff --git a/src/Application/Teams/Matches/MatchResult.cs b/src/Application/Teams/Matches/MatchResult.cs index a1ef2e2a..51f869b7 100644 --- a/src/Application/Teams/Matches/MatchResult.cs +++ b/src/Application/Teams/Matches/MatchResult.cs @@ -3,29 +3,19 @@ public class MatchResult { public Team Winner { get; } - public string Announcement { get; } public bool IsTie => Winner == Team.None; - private MatchResult(Team winner, string announcement) - { - Winner = winner; - Announcement = announcement; - } + private MatchResult(Team winner) + => Winner = winner; public static MatchResult Create(Team firstTeam, Team secondTeam) { if (firstTeam.IsWinner()) - return new MatchResult( - firstTeam, - Smart.Format(Messages.TeamIsWinner, new { firstTeam.Name }) - ); + return new MatchResult(firstTeam); if (secondTeam.IsWinner()) - return new MatchResult( - secondTeam, - Smart.Format(Messages.TeamIsWinner, new { secondTeam.Name }) - ); + return new MatchResult(secondTeam); - return new MatchResult(Team.None, Messages.TiedTeams); + return new MatchResult(Team.None); } } diff --git a/src/Application/Teams/Matches/MatchResultAnnouncer.cs b/src/Application/Teams/Matches/MatchResultAnnouncer.cs new file mode 100644 index 00000000..09b23a89 --- /dev/null +++ b/src/Application/Teams/Matches/MatchResultAnnouncer.cs @@ -0,0 +1,17 @@ +namespace CTF.Application.Teams.Matches; + +public class MatchResultAnnouncer(IWorldService worldService) +{ + public void Announce() + { + MatchResult result = MatchResult.Create(Team.Alpha, Team.Beta); + + string resultMessage = result.IsTie ? + Messages.TiedTeams : + Smart.Format( + Messages.TeamIsWinner, + new { result.Winner.Name }); + + worldService.SendClientMessage(Color.Yellow, resultMessage); + } +} diff --git a/src/Application/Teams/ServiceCollectionExtensions.cs b/src/Application/Teams/ServiceCollectionExtensions.cs index acd61709..a2bfcb58 100644 --- a/src/Application/Teams/ServiceCollectionExtensions.cs +++ b/src/Application/Teams/ServiceCollectionExtensions.cs @@ -9,6 +9,7 @@ public static IServiceCollection AddTeamServices(this IServiceCollection service .AddSingleton() .AddSingleton() .AddSingleton() + .AddSingleton() .AddSingleton() .AddFlagServices(); diff --git a/src/Host/Extensions/HostEcsBuilderExtensions.cs b/src/Host/Extensions/HostEcsBuilderExtensions.cs index 4f2c1b72..10919035 100644 --- a/src/Host/Extensions/HostEcsBuilderExtensions.cs +++ b/src/Host/Extensions/HostEcsBuilderExtensions.cs @@ -15,8 +15,10 @@ public static IEcsBuilder RegisterMapEventHandlers(this IEcsBuilder builder) var mapRotationService = builder.Services.GetRequiredService(); var rocketLauncherSystem = builder.Services.GetRequiredService(); var gunGameSystem = builder.Services.GetRequiredService(); + var matchResultAnnouncer = builder.Services.GetRequiredService(); mapRotationService.LoadingMapEvent += rocketLauncherSystem.OnLoadingMap; mapRotationService.LoadingMapEvent += gunGameSystem.OnLoadingMap; + mapRotationService.LoadingMapEvent += matchResultAnnouncer.Announce; return builder; } diff --git a/src/Host/Usings.cs b/src/Host/Usings.cs index 9523a2a0..3497984b 100644 --- a/src/Host/Usings.cs +++ b/src/Host/Usings.cs @@ -26,6 +26,7 @@ global using CTF.Application.Teams.Flags; global using CTF.Application.Teams.Flags.Carriers; global using CTF.Application.Teams.Flags.AutoReturn; +global using CTF.Application.Teams.Matches; global using CTF.Application.Maps; global using CTF.Application.Maps.Rotation; global using CTF.Application.GunGames; diff --git a/tests/Application.Tests/Teams/MatchResultTests.cs b/tests/Application.Tests/Teams/MatchResultTests.cs index 7ca78380..e820e1dd 100644 --- a/tests/Application.Tests/Teams/MatchResultTests.cs +++ b/tests/Application.Tests/Teams/MatchResultTests.cs @@ -21,7 +21,6 @@ public void Create_WhenAlphaTeamWins_ShouldReturnAlphaAsWinner() // Assert result.Winner.Should().Be(Team.Alpha); result.IsTie.Should().BeFalse(); - result.Announcement.Should().Be(Messages.AlphaIsWinner); } [Test] @@ -36,7 +35,6 @@ public void Create_WhenBetaTeamWins_ShouldReturnBetaAsWinner() // Assert result.Winner.Should().Be(Team.Beta); result.IsTie.Should().BeFalse(); - result.Announcement.Should().Be(Messages.BetaIsWinner); } [Test] @@ -52,6 +50,5 @@ public void Create_WhenNoTeamWins_ShouldReturnTieResult() // Assert result.Winner.Should().Be(Team.None); result.IsTie.Should().BeTrue(); - result.Announcement.Should().Be(Messages.TiedTeams); } }