/// 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;
}
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;
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()
{
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);
}
_uiSystem.CloseAll(bui);
component.Player = null;
component.Spectators.Clear();
- component.ShouldSayThankYou = false;
}
private void OnPlayerAction(EntityUid uid, BlockGameArcadeComponent component, BlockGameMessages.BlockGamePlayerActionMessage msg)
return;
}
- component.ShouldSayThankYou = true;
+ if (TryComp<SpeakOnUIClosedComponent>(uid, out var speakComponent))
+ _speakOnUIClosed.TrySetFlag((uid, speakComponent));
component.Game.ProcessInput(msg.PlayerAction);
}
/// </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;
}
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;
[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()
{
SubscribeLocalEvent<SpaceVillainArcadeComponent, AfterActivatableUIOpenEvent>(OnAfterUIOpenSV);
SubscribeLocalEvent<SpaceVillainArcadeComponent, SpaceVillainArcadePlayerActionMessage>(OnSVPlayerAction);
SubscribeLocalEvent<SpaceVillainArcadeComponent, PowerChangedEvent>(OnSVillainPower);
- SubscribeLocalEvent<SpaceVillainArcadeComponent, BoundUIClosedEvent>(OnBoundUIClosed);
}
/// <summary>
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));
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;
- }
}
}
- 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
- 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
--- /dev/null
+- 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
--- /dev/null
+- 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
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