]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Fix arcade goodbye message implementation (#26514)
authorTayrtahn <tayrtahn@gmail.com>
Thu, 28 Mar 2024 16:56:49 +0000 (12:56 -0400)
committerGitHub <noreply@github.com>
Thu, 28 Mar 2024 16:56:49 +0000 (12:56 -0400)
Content.Server/Arcade/BlockGame/BlockGameArcadeComponent.cs
Content.Server/Arcade/BlockGame/BlockGameArcadeSystem.cs
Content.Server/Arcade/SpaceVillainGame/SpaceVillainArcadeComponent.cs
Content.Server/Arcade/SpaceVillainGame/SpaceVillainArcadeSystem.cs
Resources/Prototypes/Catalog/Arcade/Advertisements/blockgame.yml
Resources/Prototypes/Catalog/Arcade/Advertisements/spacevillain.yml
Resources/Prototypes/Catalog/Arcade/Goodbyes/blockgame.yml [new file with mode: 0644]
Resources/Prototypes/Catalog/Arcade/Goodbyes/spacevillain.yml [new file with mode: 0644]
Resources/Prototypes/Entities/Structures/Machines/Computers/arcades.yml

index e2acec52a3a337b6a940ae3dd6c9cc25b5e1baa1..5613d9154441a5908b61317176be1f8aba3e6e2b 100644 (file)
@@ -19,9 +19,4 @@ public sealed partial class BlockGameArcadeComponent : Component
     /// The players currently viewing (but not playing) the active session of NT-BG.
     /// </summary>
     public readonly List<ICommonSession> Spectators = new();
-
-    /// <summary>
-    /// Whether the game machine should thank (or otherwise talk to) the player when they leave
-    /// </summary>
-    public bool ShouldSayThankYou;
 }
index 96001a484bc6e05b674bb54eba6a80ca144165f3..ad65c5cca6ba11375447f9859878a332f8adff53 100644 (file)
@@ -2,7 +2,6 @@ using Content.Server.Power.Components;
 using Content.Shared.UserInterface;
 using Content.Server.Advertise;
 using Content.Server.Advertise.Components;
-using Content.Server.Advertise.EntitySystems;
 using Content.Shared.Arcade;
 using Robust.Server.GameObjects;
 using Robust.Shared.Player;
@@ -12,7 +11,7 @@ namespace Content.Server.Arcade.BlockGame;
 public sealed class BlockGameArcadeSystem : EntitySystem
 {
     [Dependency] private readonly UserInterfaceSystem _uiSystem = default!;
-    [Dependency] private readonly AdvertiseSystem _advertise = default!;
+    [Dependency] private readonly SpeakOnUIClosedSystem _speakOnUIClosed = default!;
 
     public override void Initialize()
     {
@@ -92,16 +91,6 @@ public sealed class BlockGameArcadeSystem : EntitySystem
             component.Spectators.Remove(component.Player);
             UpdatePlayerStatus(uid, component.Player, blockGame: component);
         }
-        else
-        {
-            // Everybody's gone
-            component.Player = null;
-            if (component.ShouldSayThankYou && TryComp<AdvertiseComponent>(uid, out var advertise))
-            {
-                _advertise.SayAdvertisement(uid, advertise);
-                component.ShouldSayThankYou = false;
-            }
-        }
 
         UpdatePlayerStatus(uid, temp, blockGame: component);
     }
@@ -115,7 +104,6 @@ public sealed class BlockGameArcadeSystem : EntitySystem
             _uiSystem.CloseAll(bui);
         component.Player = null;
         component.Spectators.Clear();
-        component.ShouldSayThankYou = false;
     }
 
     private void OnPlayerAction(EntityUid uid, BlockGameArcadeComponent component, BlockGameMessages.BlockGamePlayerActionMessage msg)
@@ -135,7 +123,8 @@ public sealed class BlockGameArcadeSystem : EntitySystem
             return;
         }
 
-        component.ShouldSayThankYou = true;
+        if (TryComp<SpeakOnUIClosedComponent>(uid, out var speakComponent))
+            _speakOnUIClosed.TrySetFlag((uid, speakComponent));
 
         component.Game.ProcessInput(msg.PlayerAction);
     }
index c3a8877393e44cbdc5415b2055d10812e6c2430b..e93fcc6e8f1957efdd8430391530646938720487 100644 (file)
@@ -110,9 +110,4 @@ public sealed partial class SpaceVillainArcadeComponent : SharedSpaceVillainArca
     /// </summary>
     [ViewVariables(VVAccess.ReadWrite)]
     public int RewardAmount = 0;
-
-    /// <summary>
-    /// Whether the game machine should thank (or otherwise talk to) the player when they leave
-    /// </summary>
-    public bool ShouldSayThankYou;
 }
index 4d704b8a81179e6dc0ff70e71c9c34febb7d0ff3..f60d88ebf78bba237a83aa06bf3b2f2329d908e8 100644 (file)
@@ -2,7 +2,6 @@ using Content.Server.Power.Components;
 using Content.Shared.UserInterface;
 using Content.Server.Advertise;
 using Content.Server.Advertise.Components;
-using Content.Server.Advertise.EntitySystems;
 using static Content.Shared.Arcade.SharedSpaceVillainArcadeComponent;
 using Robust.Server.GameObjects;
 using Robust.Shared.Audio;
@@ -16,7 +15,7 @@ public sealed partial class SpaceVillainArcadeSystem : EntitySystem
     [Dependency] private readonly IRobustRandom _random = default!;
     [Dependency] private readonly SharedAudioSystem _audioSystem = default!;
     [Dependency] private readonly UserInterfaceSystem _uiSystem = default!;
-    [Dependency] private readonly AdvertiseSystem _advertise = default!;
+    [Dependency] private readonly SpeakOnUIClosedSystem _speakOnUIClosed = default!;
 
     public override void Initialize()
     {
@@ -26,7 +25,6 @@ public sealed partial class SpaceVillainArcadeSystem : EntitySystem
         SubscribeLocalEvent<SpaceVillainArcadeComponent, AfterActivatableUIOpenEvent>(OnAfterUIOpenSV);
         SubscribeLocalEvent<SpaceVillainArcadeComponent, SpaceVillainArcadePlayerActionMessage>(OnSVPlayerAction);
         SubscribeLocalEvent<SpaceVillainArcadeComponent, PowerChangedEvent>(OnSVillainPower);
-        SubscribeLocalEvent<SpaceVillainArcadeComponent, BoundUIClosedEvent>(OnBoundUIClosed);
     }
 
     /// <summary>
@@ -84,7 +82,9 @@ public sealed partial class SpaceVillainArcadeSystem : EntitySystem
             case PlayerAction.Heal:
             case PlayerAction.Recharge:
                 component.Game.ExecutePlayerAction(uid, msg.PlayerAction, component);
-                component.ShouldSayThankYou = true; // Any sort of gameplay action counts
+                // Any sort of gameplay action counts
+                if (TryComp<SpeakOnUIClosedComponent>(uid, out var speakComponent))
+                    _speakOnUIClosed.TrySetFlag((uid, speakComponent));
                 break;
             case PlayerAction.NewGame:
                 _audioSystem.PlayPvs(component.NewGameSound, uid, AudioParams.Default.WithVolume(-4f));
@@ -112,19 +112,5 @@ public sealed partial class SpaceVillainArcadeSystem : EntitySystem
 
         if (_uiSystem.TryGetUi(uid, SpaceVillainArcadeUiKey.Key, out var bui))
             _uiSystem.CloseAll(bui);
-
-        component.ShouldSayThankYou = false;
-    }
-
-    private void OnBoundUIClosed(Entity<SpaceVillainArcadeComponent> ent, ref BoundUIClosedEvent args)
-    {
-        if (args.UiKey is not SpaceVillainArcadeUiKey || (SpaceVillainArcadeUiKey) args.UiKey != SpaceVillainArcadeUiKey.Key)
-            return;
-
-        if (ent.Comp.ShouldSayThankYou && TryComp<AdvertiseComponent>(ent.Owner, out var advertise))
-        {
-            _advertise.SayAdvertisement(ent.Owner, advertise);
-            ent.Comp.ShouldSayThankYou = false;
-        }
     }
 }
index 226f0cb72b6532d5a03a5f060f306fa0c48e2d43..7fb03672951700d6360126afcc4afbdc91ab792c 100644 (file)
     - advertisement-block-game-11
     - advertisement-block-game-12
     - advertisement-block-game-13
-#  thankyous:
-#    - thankyou-block-game-1
-#    - thankyou-block-game-2
-#    - thankyou-block-game-3
-#    - thankyou-block-game-4
-#    - thankyou-block-game-5
-#    - thankyou-block-game-6
-#    - thankyou-block-game-7
-#    - thankyou-block-game-8
-#    - thankyou-block-game-9
-#    - thankyou-block-game-10
-#    - thankyou-block-game-11
-#    - thankyou-block-game-12
index bee4ca2baecc42273f84a0055107b92db7e2765c..7c94ab94f6bf3cb4a10d6c35876a6a512efa08b4 100644 (file)
     - advertisement-space-villain-13
     - advertisement-space-villain-14
     - advertisement-space-villain-15
-#  thankyous:
-#    - thankyou-space-villain-1
-#    - thankyou-space-villain-2
-#    - thankyou-space-villain-3
-#    - thankyou-space-villain-4
-#    - thankyou-space-villain-5
-#    - thankyou-space-villain-6
-#    - thankyou-space-villain-7
-#    - thankyou-space-villain-8
-#    - thankyou-space-villain-9
-#    - thankyou-space-villain-10
-#    - thankyou-space-villain-11
-#    - thankyou-space-villain-12
diff --git a/Resources/Prototypes/Catalog/Arcade/Goodbyes/blockgame.yml b/Resources/Prototypes/Catalog/Arcade/Goodbyes/blockgame.yml
new file mode 100644 (file)
index 0000000..460e8d1
--- /dev/null
@@ -0,0 +1,15 @@
+- type: messagePack
+  id: BlockGameGoodbyes
+  messages:
+  - thankyou-block-game-1
+  - thankyou-block-game-2
+  - thankyou-block-game-3
+  - thankyou-block-game-4
+  - thankyou-block-game-5
+  - thankyou-block-game-6
+  - thankyou-block-game-7
+  - thankyou-block-game-8
+  - thankyou-block-game-9
+  - thankyou-block-game-10
+  - thankyou-block-game-11
+  - thankyou-block-game-12
diff --git a/Resources/Prototypes/Catalog/Arcade/Goodbyes/spacevillain.yml b/Resources/Prototypes/Catalog/Arcade/Goodbyes/spacevillain.yml
new file mode 100644 (file)
index 0000000..09016af
--- /dev/null
@@ -0,0 +1,15 @@
+- type: messagePack
+  id: SpaceVillainGoodbyes
+  messages:
+  - thankyou-space-villain-1
+  - thankyou-space-villain-2
+  - thankyou-space-villain-3
+  - thankyou-space-villain-4
+  - thankyou-space-villain-5
+  - thankyou-space-villain-6
+  - thankyou-space-villain-7
+  - thankyou-space-villain-8
+  - thankyou-space-villain-9
+  - thankyou-space-villain-10
+  - thankyou-space-villain-11
+  - thankyou-space-villain-12
index 2970e9f854d7b726fe9641a411c93fe1c1d89c75..49f33d1cff4db59929a989118a54dacc867734ae 100644 (file)
     pack: SpaceVillainAds
     minWait: 60 # Arcades are noisy
     maxWait: 240
+  - type: SpeakOnUIClosed
+    pack: SpaceVillainGoodbyes
 
 - type: entity
   id: SpaceVillainArcadeFilled
     pack: BlockGameAds
     minWait: 60 # Arcades are noisy
     maxWait: 240
+  - type: SpeakOnUIClosed
+    pack: BlockGameGoodbyes