From bb71d25045c0e928ef377ffcc367a4043d62f028 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A1rk=C3=B6zi=20Gergely=20J=C3=A1nos?= <cycss7@inf.elte.hu> Date: Mon, 2 May 2022 12:55:52 +0200 Subject: [PATCH] move economy actions from GameOverview to System --- Assets/Scripts/Logic/Data/GameOverview.cs | 12 +++------ .../Logic/System/StartNextRoundSystem.cs | 26 +++++++++++++++++++ .../Logic/System/StartNextRoundSystem.cs.meta | 3 +++ 3 files changed, 32 insertions(+), 9 deletions(-) create mode 100644 Assets/Scripts/Logic/System/StartNextRoundSystem.cs create mode 100644 Assets/Scripts/Logic/System/StartNextRoundSystem.cs.meta diff --git a/Assets/Scripts/Logic/Data/GameOverview.cs b/Assets/Scripts/Logic/Data/GameOverview.cs index 85aa3eb..4935513 100644 --- a/Assets/Scripts/Logic/Data/GameOverview.cs +++ b/Assets/Scripts/Logic/Data/GameOverview.cs @@ -4,7 +4,6 @@ using System.Linq; using Logic.Command; using Logic.Data.World; using Logic.Event; -using Logic.Event.Team; using Logic.Handler; using Logic.System; @@ -103,12 +102,6 @@ public class GameOverview : IGameOverview { } else { CurrentPhase = GamePhase.Prepare; TimeLeftFromPhase = float.PositiveInfinity; - foreach (GameTeam team in Teams) { - int oldMoney = team.Money; - team.GiveMoney(EconomyConfig.RoundBasePay - + team.PurchasedUnitCount * EconomyConfig.TotalUnitsPurchasedPay); - Events.Raise(new TeamMoneyUpdatedEvent(team, oldMoney)); - } } } else { throw new Exception($"Unexpected phase: {CurrentPhase}"); @@ -126,10 +119,11 @@ public class GameOverview : IGameOverview { private void RegisterSystems() { _systems.Add(new DestroyUnitSystem()); - _systems.Add(new TowerDamagesUnitSystem()); - _systems.Add(new UnitDamagesCastleSystem()); _systems.Add(new InvalidateCachesSystem()); + _systems.Add(new StartNextRoundSystem()); _systems.Add(new TeamStatisticsSystem()); + _systems.Add(new TowerDamagesUnitSystem()); + _systems.Add(new UnitDamagesCastleSystem()); foreach (BaseSystem system in _systems) system.RegisterListeners(Events); } diff --git a/Assets/Scripts/Logic/System/StartNextRoundSystem.cs b/Assets/Scripts/Logic/System/StartNextRoundSystem.cs new file mode 100644 index 0000000..73f0f68 --- /dev/null +++ b/Assets/Scripts/Logic/System/StartNextRoundSystem.cs @@ -0,0 +1,26 @@ +ďťżusing Logic.Data; +using Logic.Event; + +namespace Logic.System { + +/// <summary> +/// System responsible for initializing the next round +/// (e.g. giving money to teams) when it starts. +/// </summary> +internal class StartNextRoundSystem : BaseSystem { + public override void RegisterListeners(EventDispatcher dispatcher) { + dispatcher.AddListener<PhaseAdvancedEvent>(OnNextRound); + } + + private void OnNextRound(PhaseAdvancedEvent e) { + IGameOverview overview = e.Overview; + if (e.OldPhase != GamePhase.Fight || overview.CurrentPhase != GamePhase.Prepare) return; + + foreach (GameTeam team in overview.Teams) { + team.GiveMoney(overview.EconomyConfig.RoundBasePay + + team.PurchasedUnitCount * overview.EconomyConfig.TotalUnitsPurchasedPay); + } + } +} + +} diff --git a/Assets/Scripts/Logic/System/StartNextRoundSystem.cs.meta b/Assets/Scripts/Logic/System/StartNextRoundSystem.cs.meta new file mode 100644 index 0000000..5e061ca --- /dev/null +++ b/Assets/Scripts/Logic/System/StartNextRoundSystem.cs.meta @@ -0,0 +1,3 @@ +ďťżfileFormatVersion: 2 +guid: 7631717c1aec4f0f97ac2871aa320a4b +timeCreated: 1651487626 \ No newline at end of file -- GitLab