mirror of
https://github.com/WWhiteDreamProject/wwdpublic.git
synced 2026-04-17 21:48:58 +03:00
<!-- This is a semi-strict format, you can add/remove sections as needed but the order/format should be kept the same Remove these comments before submitting --> # Description <!-- Explain this PR in as much detail as applicable Some example prompts to consider: How might this affect the game? The codebase? What might be some alternatives to this? How/Who does this benefit/hurt [the game/codebase]? --> Check the changelog for the full list. --- # Changelog <!-- You can add an author after the `🆑` to change the name that appears in the changelog (ex: `🆑 Death`) Leaving it blank will default to your GitHub display name This includes all available types for the changelog --> 🆑 - add: Added Holopads (unmapped) - add: Intellicards are now useful for removing/adding a Station AI's brain. - add: Added the Communications Console to Station AI actions. - add: AI now has a warp point. - add: Added more things for the AI to press. - add: More AI laws have been added. - fix: Fixed the mail system - fix: Fixed AI actions - fix: Fixed invalid spawns for station AI breaking and ruining your ability to play it. - fix: The Station AI's name will now properly send in "arrived to the station" announcements. - fix: Changed the CPR sound to simply not loop until fixed. - fix: Fixed unlocalized messages being sent for the random sentience event. --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com> Co-authored-by: Zachary Higgs <compgeek223@gmail.com> Co-authored-by: MendaxxDev <153332064+MendaxxDev@users.noreply.github.com> Co-authored-by: chromiumboy <50505512+chromiumboy@users.noreply.github.com> Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> (cherry picked from commit 3e8a7d9b00e19e160321eb81d69a884189dfa4e6)
67 lines
2.1 KiB
C#
67 lines
2.1 KiB
C#
using Content.Shared.Actions;
|
|
|
|
namespace Content.Shared.UserInterface;
|
|
|
|
public sealed class IntrinsicUISystem : EntitySystem
|
|
{
|
|
[Dependency] private readonly SharedActionsSystem _actionsSystem = default!;
|
|
[Dependency] private readonly SharedUserInterfaceSystem _uiSystem = default!;
|
|
|
|
public override void Initialize()
|
|
{
|
|
SubscribeLocalEvent<IntrinsicUIComponent, MapInitEvent>(InitActions);
|
|
SubscribeLocalEvent<IntrinsicUIComponent, ComponentShutdown>(OnShutdown);
|
|
SubscribeLocalEvent<IntrinsicUIComponent, ToggleIntrinsicUIEvent>(OnActionToggle);
|
|
}
|
|
|
|
private void OnActionToggle(EntityUid uid, IntrinsicUIComponent component, ToggleIntrinsicUIEvent args)
|
|
{
|
|
if (args.Key == null)
|
|
return;
|
|
|
|
args.Handled = InteractUI(uid, args.Key, component);
|
|
}
|
|
|
|
private void OnShutdown(EntityUid uid, IntrinsicUIComponent component, ref ComponentShutdown args)
|
|
{
|
|
foreach (var actionEntry in component.UIs.Values)
|
|
{
|
|
var actionId = actionEntry.ToggleActionEntity;
|
|
_actionsSystem.RemoveAction(uid, actionId);
|
|
}
|
|
}
|
|
|
|
private void InitActions(EntityUid uid, IntrinsicUIComponent component, MapInitEvent args)
|
|
{
|
|
foreach (var entry in component.UIs.Values)
|
|
{
|
|
_actionsSystem.AddAction(uid, ref entry.ToggleActionEntity, entry.ToggleAction);
|
|
}
|
|
}
|
|
|
|
public bool InteractUI(EntityUid uid, Enum key, IntrinsicUIComponent? iui = null)
|
|
{
|
|
if (!Resolve(uid, ref iui))
|
|
return false;
|
|
|
|
var attempt = new IntrinsicUIOpenAttemptEvent(uid, key);
|
|
RaiseLocalEvent(uid, attempt);
|
|
if (attempt.Cancelled)
|
|
return false;
|
|
|
|
return _uiSystem.TryToggleUi(uid, key, uid);
|
|
}
|
|
}
|
|
|
|
// Competing with ActivatableUI for horrible event names.
|
|
public sealed class IntrinsicUIOpenAttemptEvent : CancellableEntityEventArgs
|
|
{
|
|
public EntityUid User { get; }
|
|
public Enum? Key { get; }
|
|
public IntrinsicUIOpenAttemptEvent(EntityUid who, Enum? key)
|
|
{
|
|
User = who;
|
|
Key = key;
|
|
}
|
|
}
|