Door Remote now shows Mode in UI (#26162)
* Prep for DoorRemote Status * Door Remote Mode Messages * plural opens and closes * never trust webedits --------- Co-authored-by: Plykiya <plykiya@protonmail.com>
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
using Content.Shared.Interaction;
|
||||
using Content.Shared.Popups;
|
||||
using Content.Shared.Interaction.Events;
|
||||
using Content.Shared.Remotes.Components;
|
||||
|
||||
namespace Content.Shared.Remotes.EntitySystems;
|
||||
|
||||
public abstract class SharedDoorRemoteSystem : EntitySystem
|
||||
{
|
||||
[Dependency] protected readonly SharedPopupSystem Popup = default!;
|
||||
[Dependency] private readonly SharedInteractionSystem _interactionSystem = default!;
|
||||
// I'm so sorry [Dependency] private readonly SharedAirlockSystem _sharedAirlockSystem = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
SubscribeLocalEvent<DoorRemoteComponent, UseInHandEvent>(OnInHandActivation);
|
||||
}
|
||||
|
||||
private void OnInHandActivation(Entity<DoorRemoteComponent> entity, ref UseInHandEvent args)
|
||||
{
|
||||
string switchMessageId;
|
||||
switch (entity.Comp.Mode)
|
||||
{
|
||||
case OperatingMode.OpenClose:
|
||||
entity.Comp.Mode = OperatingMode.ToggleBolts;
|
||||
switchMessageId = "door-remote-switch-state-toggle-bolts";
|
||||
break;
|
||||
|
||||
// Skip toggle bolts mode and move on from there (to emergency access)
|
||||
case OperatingMode.ToggleBolts:
|
||||
entity.Comp.Mode = OperatingMode.ToggleEmergencyAccess;
|
||||
switchMessageId = "door-remote-switch-state-toggle-emergency-access";
|
||||
break;
|
||||
|
||||
// Skip ToggleEmergencyAccess mode and move on from there (to door toggle)
|
||||
case OperatingMode.ToggleEmergencyAccess:
|
||||
entity.Comp.Mode = OperatingMode.OpenClose;
|
||||
switchMessageId = "door-remote-switch-state-open-close";
|
||||
break;
|
||||
default:
|
||||
throw new InvalidOperationException(
|
||||
$"{nameof(DoorRemoteComponent)} had invalid mode {entity.Comp.Mode}");
|
||||
}
|
||||
Dirty(entity);
|
||||
Popup.PopupClient(Loc.GetString(switchMessageId), entity, args.User);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user