From f84969630d949de284f4af90ebb807fad430b7c6 Mon Sep 17 00:00:00 2001 From: Vigers Ray <60344369+VigersRay@users.noreply.github.com> Date: Wed, 1 Jan 2025 07:53:31 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=B8=D0=B2=D0=B5=D1=80=D1=81=D0=B8?= =?UTF-8?q?=D0=BE=D0=BD=D0=BD=D1=8B=D0=B9=20=D0=BE=D1=82=D1=80=D1=8F=D0=B4?= =?UTF-8?q?=20(#985)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Диверсионный отряд * фиксы * фиксы линтера * Спрайт терминала икаруса * фикс пинпоинтера * Доработки ДО * Фиксы удалённого управления шаттлом * Не запускать ДО если на может быть меньше 3 глав --- .../AssaultOps/AssaultOps/AssaultOpsSystem.cs | 23 + .../IcarusTerminalBoundUserInterface.cs | 55 + .../Icarus/IcarusTerminalWindow.xaml | 21 + .../Icarus/IcarusTerminalWindow.xaml.cs | 36 + .../Interrogator/InterrogatorSystem.cs | 54 + .../Systems/AdminVerbSystem.Antags.cs | 15 + .../Components/NukeOpsShuttleComponent.cs | 11 - .../GameTicking/Rules/GameRuleSystem.cs | 57 + .../Implants/SubdermalImplantSystem.cs | 34 + Content.Server/Mindshield/MindShieldSystem.cs | 11 + Content.Server/Pinpointer/PinpointerSystem.cs | 59 +- .../Components/ShuttleConsoleComponent.cs | 6 + .../Shuttles/DroneConsoleComponent.cs | 6 + .../Systems/ShuttleConsoleSystem.Drone.cs | 6 +- .../Systems/ShuttleConsoleSystem.FTL.cs | 7 + .../Shuttles/Systems/ShuttleConsoleSystem.cs | 9 +- .../AssaultOperativeSpawnerComponent.cs | 14 + .../AssaultOps/AssaultOpsRoleComponent.cs | 8 + .../AssaultOps/AssaultOpsRuleComponent.cs | 86 + .../AssaultOps/AssaultOpsRuleSystem.cs | 349 + .../Icarus/Commands/SpawnIcarusCommand.cs | 51 + .../AssaultOps/Icarus/IcarusBeamComponent.cs | 31 + .../AssaultOps/Icarus/IcarusBeamSystem.cs | 143 + .../AssaultOps/Icarus/IcarusTerminalSystem.cs | 267 + .../Interrogator/InterrogatorSystem.cs | 201 + Content.Shared/CCVar/CCVars.Shuttle.cs | 2 +- .../Components/GameRuleComponent.cs | 3 + .../Implants/Components/ImplanterComponent.cs | 2 +- .../Components/SubdermalImplantComponent.cs | 10 + .../Implants/SharedImplanterSystem.cs | 12 + .../Implants/SharedSubdermalImplantSystem.cs | 35 + Content.Shared/PDA/PdaComponent.cs | 3 + Content.Shared/PDA/SharedPdaSystem.cs | 2 + .../AssaultOps/AssaultOperativeComponent.cs | 13 + .../AssaultOps/AssaultOpsShuttleComponent.cs | 10 + .../AssaultOps/Icarus/IcarusKeyComponent.cs | 7 + .../Icarus/IcarusTerminalComponent.cs | 68 + .../AssaultOps/Icarus/SharedIcarus.cs | 37 + .../ActiveInterrogatorComponent.cs | 6 + .../Interrogator/InterrogatorComponent.cs | 38 + .../Interrogator/SharedInterrogatorSystem.cs | 169 + .../Shuttles/NukeOpsShuttleComponent.cs | 10 + .../assault_operatives_greet.ogg | Bin 0 -> 3954923 bytes .../AssaultOperatives/golden_eye_alarm.ogg | Bin 0 -> 291280 bytes .../AssaultOperatives/icarus_alarm.ogg | Bin 0 -> 278808 bytes .../AssaultOperatives/sunbeam_fire.ogg | Bin 0 -> 38359 bytes .../AssaultOperatives/sunbeam_loop.ogg | Bin 0 -> 94847 bytes .../Audio/_Sunrise/Interrogator/ding.ogg | Bin 0 -> 23264 bytes .../structures/interrogator/interrogator.ftl | 2 + .../objects/weapons/melee/biocode.ftl | 3 + .../entities/objects/devices/pda.ftl | 3 + .../_sunrise/assault-ops/admin-verb.ftl | 2 + .../_strings/_sunrise/assault-ops/antags.ftl | 5 + .../assault-ops/icarus-terminal-component.ftl | 20 + .../_strings/_sunrise/assault-ops/paper.ftl | 15 + .../assault-ops/preset-assaultops.ftl | 25 + .../interrogator/interrogator-component.ftl | 2 + .../_strings/game-ticking/game-ticker.ftl | 1 + .../ru-RU/_strings/pinpointer/pinpointer.ftl | 3 + .../Maps/_Sunrise/Shuttles/assaultops.yml | 8091 +++++++++++++++++ .../Prototypes/Catalog/uplink_catalog.yml | 8 + .../Entities/Objects/Misc/implanters.yml | 6 +- .../Objects/Misc/subdermal_implants.yml | 61 +- Resources/Prototypes/Roles/Antags/nukeops.yml | 1 + .../Prototypes/_Sunrise/AssaultOps/antag.yml | 25 + .../Prototypes/_Sunrise/AssaultOps/beam.yml | 53 + .../_Sunrise/AssaultOps/computer.yml | 0 .../_Sunrise/AssaultOps/duffelbag.yml | 12 + .../_Sunrise/AssaultOps/game_presets.yml | 15 + .../_Sunrise/AssaultOps/ghost_roles.yml | 35 + .../Prototypes/_Sunrise/AssaultOps/human.yml | 9 + .../_Sunrise/AssaultOps/humanoid.yml | 1 + .../_Sunrise/AssaultOps/implanters.yml | 7 + .../_Sunrise/AssaultOps/jumpsuits.yml | 10 + .../Prototypes/_Sunrise/AssaultOps/key.yml | 20 + .../Prototypes/_Sunrise/AssaultOps/masks.yml | 13 + .../_Sunrise/AssaultOps/mind_roles.yml | 17 + .../Prototypes/_Sunrise/AssaultOps/paper.yml | 11 + .../Prototypes/_Sunrise/AssaultOps/pda.yml | 10 + .../_Sunrise/AssaultOps/pinpointer.yml | 16 + .../_Sunrise/AssaultOps/roundstart.yml | 65 + .../_Sunrise/AssaultOps/spawners.yml | 11 + .../_Sunrise/AssaultOps/startinggear.yml | 41 + .../AssaultOps/subdermal_implants.yml | 0 .../Prototypes/_Sunrise/AssaultOps/tags.yml | 2 + .../_Sunrise/AssaultOps/terminal.yml | 70 + .../Prototypes/_Sunrise/AssaultOps/uplink.yml | 24 + .../Objects/Devices/remote_controller.yml | 87 + .../Structures/Doors/Airlocks/access.yml | 8 + .../_Sunrise/Loadouts/role_loadouts.yml | 7 + .../_Sunrise/Structures/interrogator.yml | 77 + .../Structures/thruster_syndicate.yml | 33 + Resources/Prototypes/_Sunrise/tags.yml | 3 - .../gaiter.rsi/equipped-MASK.png | Bin 0 -> 405 bytes .../AssaultOperatives/gaiter.rsi/icon.png | Bin 0 -> 332 bytes .../gaiter.rsi/inhand-left.png | Bin 0 -> 348 bytes .../gaiter.rsi/inhand-right.png | Bin 0 -> 353 bytes .../AssaultOperatives/gaiter.rsi/meta.json | 30 + .../gaiter.rsi/up-equipped-MASK.png | Bin 0 -> 395 bytes .../goldeneye_key.rsi/key.png | Bin 0 -> 795 bytes .../goldeneye_key.rsi/meta.json | 14 + .../goldeneye_terminal.rsi/meta.json | 14 + .../goldeneye_terminal.rsi/terminal.png | Bin 0 -> 705 bytes .../interrogator.rsi/base.png | Bin 0 -> 3267 bytes .../interrogator.rsi/extraction-off.png | Bin 0 -> 2799 bytes .../interrogator.rsi/extraction-on.png | Bin 0 -> 8066 bytes .../interrogator.rsi/meta.json | 66 + .../interrogator.rsi/open.png | Bin 0 -> 1278 bytes .../pinpointer.rsi/meta.json | 142 + .../pinpointer.rsi/pinonalert.png | Bin 0 -> 577 bytes .../pinpointer.rsi/pinonalertdirect.png | Bin 0 -> 196 bytes .../pinpointer.rsi/pinonalertnull.png | Bin 0 -> 212 bytes .../pinpointer.rsi/pinonclose.png | Bin 0 -> 4979 bytes .../pinpointer.rsi/pinondirect.png | Bin 0 -> 166 bytes .../pinpointer.rsi/pinondirectlarge.png | Bin 0 -> 173 bytes .../pinpointer.rsi/pinondirectsmall.png | Bin 0 -> 152 bytes .../pinpointer.rsi/pinondirectxtrlarge.png | Bin 0 -> 159 bytes .../pinpointer.rsi/pinonfar.png | Bin 0 -> 230 bytes .../pinpointer.rsi/pinonmedium.png | Bin 0 -> 4978 bytes .../pinpointer.rsi/pinonnull.png | Bin 0 -> 182 bytes .../pinpointer.rsi/pinpointer_icarus.png | Bin 0 -> 336 bytes .../AssaultOperatives/sunray.rsi/meta.json | 41 + .../AssaultOperatives/sunray.rsi/sunray.png | Bin 0 -> 1668 bytes .../sunray.rsi/sunray_muzzle.png | Bin 0 -> 1495 bytes .../sunray.rsi/sunray_splash.png | Bin 0 -> 1390 bytes .../equipped-INNERCLOTHING.png | Bin 0 -> 1056 bytes .../tactical_suit.rsi/icon.png | Bin 0 -> 412 bytes .../tactical_suit.rsi/inhand-left.png | Bin 0 -> 392 bytes .../tactical_suit.rsi/inhand-right.png | Bin 0 -> 391 bytes .../tactical_suit.rsi/meta.json | 26 + .../Devices/remote_controller.rsi/meta.json | 49 + .../remote_controller.rsi/nanotrasen.png | Bin 0 -> 1198 bytes .../remote_controller.rsi/syndicate.png | Bin 0 -> 1177 bytes .../Objects/Implants/implants.rsi/meta.json | 14 + .../Implants/implants.rsi/reviver_implant.png | Bin 0 -> 703 bytes .../base.png | Bin .../meta.json | 60 +- .../syndicate_thruster.rsi/red_thrust.png | Bin 0 -> 1481 bytes .../red_thrust_burn_unshaded.png | Bin .../thruster.rsi/thrust_burn_unshaded.png | Bin 4298 -> 0 bytes 140 files changed, 11290 insertions(+), 83 deletions(-) create mode 100644 Content.Client/_Sunrise/AssaultOps/AssaultOps/AssaultOpsSystem.cs create mode 100644 Content.Client/_Sunrise/AssaultOps/Icarus/IcarusTerminalBoundUserInterface.cs create mode 100644 Content.Client/_Sunrise/AssaultOps/Icarus/IcarusTerminalWindow.xaml create mode 100644 Content.Client/_Sunrise/AssaultOps/Icarus/IcarusTerminalWindow.xaml.cs create mode 100644 Content.Client/_Sunrise/Interrogator/InterrogatorSystem.cs delete mode 100644 Content.Server/GameTicking/Rules/Components/NukeOpsShuttleComponent.cs create mode 100644 Content.Server/_Sunrise/AssaultOps/AssaultOperativeSpawnerComponent.cs create mode 100644 Content.Server/_Sunrise/AssaultOps/AssaultOpsRoleComponent.cs create mode 100644 Content.Server/_Sunrise/AssaultOps/AssaultOpsRuleComponent.cs create mode 100644 Content.Server/_Sunrise/AssaultOps/AssaultOpsRuleSystem.cs create mode 100644 Content.Server/_Sunrise/AssaultOps/Icarus/Commands/SpawnIcarusCommand.cs create mode 100644 Content.Server/_Sunrise/AssaultOps/Icarus/IcarusBeamComponent.cs create mode 100644 Content.Server/_Sunrise/AssaultOps/Icarus/IcarusBeamSystem.cs create mode 100644 Content.Server/_Sunrise/AssaultOps/Icarus/IcarusTerminalSystem.cs create mode 100644 Content.Server/_Sunrise/Interrogator/InterrogatorSystem.cs create mode 100644 Content.Shared/_Sunrise/AssaultOps/AssaultOperativeComponent.cs create mode 100644 Content.Shared/_Sunrise/AssaultOps/AssaultOpsShuttleComponent.cs create mode 100644 Content.Shared/_Sunrise/AssaultOps/Icarus/IcarusKeyComponent.cs create mode 100644 Content.Shared/_Sunrise/AssaultOps/Icarus/IcarusTerminalComponent.cs create mode 100644 Content.Shared/_Sunrise/AssaultOps/Icarus/SharedIcarus.cs create mode 100644 Content.Shared/_Sunrise/Interrogator/ActiveInterrogatorComponent.cs create mode 100644 Content.Shared/_Sunrise/Interrogator/InterrogatorComponent.cs create mode 100644 Content.Shared/_Sunrise/Interrogator/SharedInterrogatorSystem.cs create mode 100644 Content.Shared/_Sunrise/Shuttles/NukeOpsShuttleComponent.cs create mode 100644 Resources/Audio/_Sunrise/AssaultOperatives/assault_operatives_greet.ogg create mode 100644 Resources/Audio/_Sunrise/AssaultOperatives/golden_eye_alarm.ogg create mode 100644 Resources/Audio/_Sunrise/AssaultOperatives/icarus_alarm.ogg create mode 100644 Resources/Audio/_Sunrise/AssaultOperatives/sunbeam_fire.ogg create mode 100644 Resources/Audio/_Sunrise/AssaultOperatives/sunbeam_loop.ogg create mode 100644 Resources/Audio/_Sunrise/Interrogator/ding.ogg create mode 100644 Resources/Locale/en-US/_prototypes/_sunrise/entities/structures/interrogator/interrogator.ftl create mode 100644 Resources/Locale/ru-RU/_strings/_sunrise/assault-ops/admin-verb.ftl create mode 100644 Resources/Locale/ru-RU/_strings/_sunrise/assault-ops/antags.ftl create mode 100644 Resources/Locale/ru-RU/_strings/_sunrise/assault-ops/icarus-terminal-component.ftl create mode 100644 Resources/Locale/ru-RU/_strings/_sunrise/assault-ops/paper.ftl create mode 100644 Resources/Locale/ru-RU/_strings/_sunrise/assault-ops/preset-assaultops.ftl create mode 100644 Resources/Locale/ru-RU/_strings/_sunrise/interrogator/interrogator-component.ftl create mode 100644 Resources/Maps/_Sunrise/Shuttles/assaultops.yml create mode 100644 Resources/Prototypes/_Sunrise/AssaultOps/antag.yml create mode 100644 Resources/Prototypes/_Sunrise/AssaultOps/beam.yml create mode 100644 Resources/Prototypes/_Sunrise/AssaultOps/computer.yml create mode 100644 Resources/Prototypes/_Sunrise/AssaultOps/duffelbag.yml create mode 100644 Resources/Prototypes/_Sunrise/AssaultOps/game_presets.yml create mode 100644 Resources/Prototypes/_Sunrise/AssaultOps/ghost_roles.yml create mode 100644 Resources/Prototypes/_Sunrise/AssaultOps/human.yml create mode 100644 Resources/Prototypes/_Sunrise/AssaultOps/humanoid.yml create mode 100644 Resources/Prototypes/_Sunrise/AssaultOps/implanters.yml create mode 100644 Resources/Prototypes/_Sunrise/AssaultOps/jumpsuits.yml create mode 100644 Resources/Prototypes/_Sunrise/AssaultOps/key.yml create mode 100644 Resources/Prototypes/_Sunrise/AssaultOps/masks.yml create mode 100644 Resources/Prototypes/_Sunrise/AssaultOps/mind_roles.yml create mode 100644 Resources/Prototypes/_Sunrise/AssaultOps/paper.yml create mode 100644 Resources/Prototypes/_Sunrise/AssaultOps/pda.yml create mode 100644 Resources/Prototypes/_Sunrise/AssaultOps/pinpointer.yml create mode 100644 Resources/Prototypes/_Sunrise/AssaultOps/roundstart.yml create mode 100644 Resources/Prototypes/_Sunrise/AssaultOps/spawners.yml create mode 100644 Resources/Prototypes/_Sunrise/AssaultOps/startinggear.yml create mode 100644 Resources/Prototypes/_Sunrise/AssaultOps/subdermal_implants.yml create mode 100644 Resources/Prototypes/_Sunrise/AssaultOps/tags.yml create mode 100644 Resources/Prototypes/_Sunrise/AssaultOps/terminal.yml create mode 100644 Resources/Prototypes/_Sunrise/AssaultOps/uplink.yml create mode 100644 Resources/Prototypes/_Sunrise/Entities/Objects/Devices/remote_controller.yml create mode 100644 Resources/Prototypes/_Sunrise/Structures/interrogator.yml create mode 100644 Resources/Prototypes/_Sunrise/Structures/thruster_syndicate.yml create mode 100644 Resources/Textures/_Sunrise/AssaultOperatives/gaiter.rsi/equipped-MASK.png create mode 100644 Resources/Textures/_Sunrise/AssaultOperatives/gaiter.rsi/icon.png create mode 100644 Resources/Textures/_Sunrise/AssaultOperatives/gaiter.rsi/inhand-left.png create mode 100644 Resources/Textures/_Sunrise/AssaultOperatives/gaiter.rsi/inhand-right.png create mode 100644 Resources/Textures/_Sunrise/AssaultOperatives/gaiter.rsi/meta.json create mode 100644 Resources/Textures/_Sunrise/AssaultOperatives/gaiter.rsi/up-equipped-MASK.png create mode 100644 Resources/Textures/_Sunrise/AssaultOperatives/goldeneye_key.rsi/key.png create mode 100644 Resources/Textures/_Sunrise/AssaultOperatives/goldeneye_key.rsi/meta.json create mode 100644 Resources/Textures/_Sunrise/AssaultOperatives/goldeneye_terminal.rsi/meta.json create mode 100644 Resources/Textures/_Sunrise/AssaultOperatives/goldeneye_terminal.rsi/terminal.png create mode 100644 Resources/Textures/_Sunrise/AssaultOperatives/interrogator.rsi/base.png create mode 100644 Resources/Textures/_Sunrise/AssaultOperatives/interrogator.rsi/extraction-off.png create mode 100644 Resources/Textures/_Sunrise/AssaultOperatives/interrogator.rsi/extraction-on.png create mode 100644 Resources/Textures/_Sunrise/AssaultOperatives/interrogator.rsi/meta.json create mode 100644 Resources/Textures/_Sunrise/AssaultOperatives/interrogator.rsi/open.png create mode 100644 Resources/Textures/_Sunrise/AssaultOperatives/pinpointer.rsi/meta.json create mode 100644 Resources/Textures/_Sunrise/AssaultOperatives/pinpointer.rsi/pinonalert.png create mode 100644 Resources/Textures/_Sunrise/AssaultOperatives/pinpointer.rsi/pinonalertdirect.png create mode 100644 Resources/Textures/_Sunrise/AssaultOperatives/pinpointer.rsi/pinonalertnull.png create mode 100644 Resources/Textures/_Sunrise/AssaultOperatives/pinpointer.rsi/pinonclose.png create mode 100644 Resources/Textures/_Sunrise/AssaultOperatives/pinpointer.rsi/pinondirect.png create mode 100644 Resources/Textures/_Sunrise/AssaultOperatives/pinpointer.rsi/pinondirectlarge.png create mode 100644 Resources/Textures/_Sunrise/AssaultOperatives/pinpointer.rsi/pinondirectsmall.png create mode 100644 Resources/Textures/_Sunrise/AssaultOperatives/pinpointer.rsi/pinondirectxtrlarge.png create mode 100644 Resources/Textures/_Sunrise/AssaultOperatives/pinpointer.rsi/pinonfar.png create mode 100644 Resources/Textures/_Sunrise/AssaultOperatives/pinpointer.rsi/pinonmedium.png create mode 100644 Resources/Textures/_Sunrise/AssaultOperatives/pinpointer.rsi/pinonnull.png create mode 100644 Resources/Textures/_Sunrise/AssaultOperatives/pinpointer.rsi/pinpointer_icarus.png create mode 100644 Resources/Textures/_Sunrise/AssaultOperatives/sunray.rsi/meta.json create mode 100644 Resources/Textures/_Sunrise/AssaultOperatives/sunray.rsi/sunray.png create mode 100644 Resources/Textures/_Sunrise/AssaultOperatives/sunray.rsi/sunray_muzzle.png create mode 100644 Resources/Textures/_Sunrise/AssaultOperatives/sunray.rsi/sunray_splash.png create mode 100644 Resources/Textures/_Sunrise/AssaultOperatives/tactical_suit.rsi/equipped-INNERCLOTHING.png create mode 100644 Resources/Textures/_Sunrise/AssaultOperatives/tactical_suit.rsi/icon.png create mode 100644 Resources/Textures/_Sunrise/AssaultOperatives/tactical_suit.rsi/inhand-left.png create mode 100644 Resources/Textures/_Sunrise/AssaultOperatives/tactical_suit.rsi/inhand-right.png create mode 100644 Resources/Textures/_Sunrise/AssaultOperatives/tactical_suit.rsi/meta.json create mode 100644 Resources/Textures/_Sunrise/Entities/Objects/Devices/remote_controller.rsi/meta.json create mode 100644 Resources/Textures/_Sunrise/Entities/Objects/Devices/remote_controller.rsi/nanotrasen.png create mode 100644 Resources/Textures/_Sunrise/Entities/Objects/Devices/remote_controller.rsi/syndicate.png create mode 100644 Resources/Textures/_Sunrise/Entities/Objects/Implants/implants.rsi/meta.json create mode 100644 Resources/Textures/_Sunrise/Entities/Objects/Implants/implants.rsi/reviver_implant.png rename Resources/Textures/_Sunrise/Structures/Shuttles/{thruster.rsi => syndicate_thruster.rsi}/base.png (100%) rename Resources/Textures/_Sunrise/Structures/Shuttles/{thruster.rsi => syndicate_thruster.rsi}/meta.json (58%) create mode 100644 Resources/Textures/_Sunrise/Structures/Shuttles/syndicate_thruster.rsi/red_thrust.png rename Resources/Textures/_Sunrise/Structures/Shuttles/{thruster.rsi => syndicate_thruster.rsi}/red_thrust_burn_unshaded.png (100%) delete mode 100644 Resources/Textures/_Sunrise/Structures/Shuttles/thruster.rsi/thrust_burn_unshaded.png diff --git a/Content.Client/_Sunrise/AssaultOps/AssaultOps/AssaultOpsSystem.cs b/Content.Client/_Sunrise/AssaultOps/AssaultOps/AssaultOpsSystem.cs new file mode 100644 index 0000000000..500bf2b1f8 --- /dev/null +++ b/Content.Client/_Sunrise/AssaultOps/AssaultOps/AssaultOpsSystem.cs @@ -0,0 +1,23 @@ +using Content.Shared._Sunrise.AssaultOps; +using Content.Shared.StatusIcon.Components; +using Robust.Shared.Prototypes; + +namespace Content.Client._Sunrise.AssaultOps.AssaultOps; + +public sealed class AssaultOpsSystem : EntitySystem +{ + [Dependency] private readonly IPrototypeManager _prototype = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(GetVampireIcon); + } + + private void GetVampireIcon(EntityUid uid, AssaultOperativeComponent component, ref GetStatusIconsEvent args) + { + var iconPrototype = _prototype.Index(component.StatusIcon); + args.StatusIcons.Add(iconPrototype); + } +} diff --git a/Content.Client/_Sunrise/AssaultOps/Icarus/IcarusTerminalBoundUserInterface.cs b/Content.Client/_Sunrise/AssaultOps/Icarus/IcarusTerminalBoundUserInterface.cs new file mode 100644 index 0000000000..2b6595be75 --- /dev/null +++ b/Content.Client/_Sunrise/AssaultOps/Icarus/IcarusTerminalBoundUserInterface.cs @@ -0,0 +1,55 @@ +using Content.Shared._Sunrise.AssaultOps.Icarus; + +namespace Content.Client._Sunrise.AssaultOps.Icarus; + +public sealed class IcarusTerminalBoundUserInterface : BoundUserInterface +{ + private IcarusTerminalWindow? _window; + + public IcarusTerminalBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey) + { + } + + protected override void Open() + { + base.Open(); + _window = new IcarusTerminalWindow(); + _window.OnClose += Close; + _window.OpenCentered(); + + _window.FireButtonPressed += OnFireButtonPressed; + } + + private void OnFireButtonPressed() + { + if (_window == null) + return; + + SendMessage(new IcarusTerminalFireMessage()); + } + + protected override void UpdateState(BoundUserInterfaceState state) + { + base.UpdateState(state); + + if (_window == null) + return; + + if (state is not IcarusTerminalUiState cast) + return; + + _window.UpdateState(cast); + } + + protected override void Dispose(bool disposing) + { + base.Dispose(disposing); + if (!disposing) + return; + + if (_window != null) + _window.OnClose -= Close; + + _window?.Dispose(); + } +} diff --git a/Content.Client/_Sunrise/AssaultOps/Icarus/IcarusTerminalWindow.xaml b/Content.Client/_Sunrise/AssaultOps/Icarus/IcarusTerminalWindow.xaml new file mode 100644 index 0000000000..b33c072eaa --- /dev/null +++ b/Content.Client/_Sunrise/AssaultOps/Icarus/IcarusTerminalWindow.xaml @@ -0,0 +1,21 @@ + + +