From d38042a0c07dc61504a3585db03ca53a71f0022e Mon Sep 17 00:00:00 2001 From: Fildrance Date: Tue, 15 Apr 2025 03:34:53 +0300 Subject: [PATCH] 3mo xeno archeology (first phase) (#33370) * DAG Adjacency Matrix & Tests * Fix sandbox type errors * First pass on procgen * Procgen adjustments * Networking * Cruft and god and beauty and analysis console * convert to data types that dont make me want to kill myself * starting work on console UI * drawing nodes n shit * damn that ui FUCKS * XAT * Add a bunch of basic triggers * Fix trigger gen * Add node info into the analysis console UI * Add node unlocking * more trigger cuz thats pretty cool * final triggers + incorporate gnostic faith * some ui changes, mostly * Fix orphaned procgen segments * its not random dipshit * yeah... this one will make pjb happy.... * we call it a day for the UI * imagine... shared power code... * extraction WIP but we gotta sidequest momentarily * oh hey would you look at that its the actual functionality * distrotrased * Small departure for randomness. * ok yep yep indeed that is an effect very cool. * thanos snap oldcode * fuck it we ball * feat: node scanner now displays triggered nodes. Removed unused old artifact systems and related code (most of it). xml-doc and minor fixups. * refactor: most of preparations, cleanup and groundwork. also segment-related tests * feature: all basic effects returning * feat: finished effects lits, created weight lists for struct and handheld artifacts, fixed throw trigger and music ApplyComponent artifact effects not working * feat: prevent non-first-time-predicted calls in shared artifact effect systems * fix: remove gun effect from artifact effects - as it interferes with 'activate artefact' action * fix: foam reagent selection, neat ApplyComponents art effect scenarios, handheld art is RadiationReceiver again * fix: moved spawn/ pry&throw effect systems back to server part of code - entity duplication bugs were not quite fun * refactor: fix protos * refactor: fix linter * fix: fix old artifact component names in yml * fix: no more throwing error on artifact spawn with empty XAEFoamComponent.Reagents * fix: removed old component usage in maps * fix: remove more deleted components from map * fix: ContainerContainer is now part of initial artifact entity, it won't be affecting UninitializedSaveTest * refactor: fix tests, add loc description to toolshed commands * Changed node scanner to tell the whole story about current artifact state * refactor: remove excessive get of EntityCoordinates in XAE systems, removed Value access in NodeScannerDisplay * fix: turned off TriggerInteraction, removed XAESpawn usage and system, EmpSystem now can use EntityCoordinates, * fix: moved SharedXenoArtifactSystem.CancelUnlockingOnGraphStructureChange into RebuildXenoArtifactMetaData to lessen code coupling * fix: XenoArtifactEffectJunkSpawn moved invalid rolls declaration * refactor: set default value for XenoArtifactComponent.EffectsTable for tests * fix: now explosions XAE can be activated for effect * refactor: added some usedelay so artifactuse would'nt be spammed * refactor: artifact-related hints improvements * fix: artifact no longer spawns fauna into itself * refactor: xml-doc and minor refactoring * refactor: xml-doc for Xeno Artifact systems, renaming of questionable XAT systems * map for playtest, TODO REVERT THIS * fix: magboots trigger art from a mile * refactor: bind artifact animation to unlocking state * feat: radiation dmg now have reference to source (and artifacts won't irradiate themselves) * fix: random artifact node durability now is rolled for max and not current value * refactor: gas effects are more rare, hand-held artifact effects are filtered properly now, rad dmg trigger now requires only 20 dmg for activation * feat: animations and sound effects for artifact force-use and failed finish of unlocking phase * use only 1 file with art use animation * refactor: minor artifact dmg triggers tuning * feat: now nodes that CAN be unlocked are displayed with specific color in console. * feat: now unlocking stage time is dynamic and it depends on amount of triggers player activated correctly. Failed one stops incrementing * feat: now non-active unlocked nodes return more points if durability was not wasted * feat: now puddle/foam effects change description of node * fix: fix test failure * refactor: renamed phasing effect, fixed failing test for elkridge * minor balance changes * refactor: split rare materials into separate effects * feat: unlocked nodes without successor wont listen to unlocks, node unlock is not activating node * fix: removed OnIrradiatedEvent duplicate c-tor * revert changes of reach for playtest * revert last row empty line removal on reach.yml * fix: fix PVS bug, born from attempt to relay event to art nodes that were not synced yet to the client * fix: fix elkridge for tests (again) * refactor: xml-doc, more stuff predicted, allocation optimization in XAE/XAT systems * refactor: naming * refactor: extract variable refactor for XAEApplyComponentsSystem.OnActivated insides * fix: duplicate xeno artifact unlocking sound fixed * feat: CreatePuddle xeno artifact effect now can have min and max borders for chamicals to be drafted, minor XAECreatePuddleSystem refactor * feat: networking for shared XAE components + xml-doc leftovers * refactor: more xml-doc, fix XAEApplyComponentsComponent.Components not being serializable but trying to be * refactor: xml-docs and XAEThrowThingsAroundSystem now uses circle and not box for prying tiles * refactor: xml-docs, minor refactors * revert XenoArtifactCommand.ArtifactPrototype being PrototId * refactor: simplify the way ExtractionResearchLabel works --------- Co-authored-by: EmoGarbage404 Co-authored-by: pa.pecherskij --- .../Artifact/XenoArtifactSystem.cs | 6 + .../Equipment/ArtifactAnalyzerSystem.cs | 40 + .../Equipment/ArtifactCrusherSystem.cs | 2 +- .../Equipment/NodeScannerSystem.cs | 31 + .../Ui/AnalysisConsoleBoundUserInterface.cs | 56 +- .../Ui/AnalysisConsoleMenu.xaml | 145 +- .../Ui/AnalysisConsoleMenu.xaml.cs | 298 ++-- .../Ui/NodeScannerBoundUserInterface.cs | 42 + .../Ui/NodeScannerDisplay.xaml | 20 + .../Ui/NodeScannerDisplay.xaml.cs | 86 ++ .../Ui/XenoArtifactGraphControl.xaml | 6 + .../Ui/XenoArtifactGraphControl.xaml.cs | 208 +++ .../RandomArtifactSpriteSystem.cs | 21 +- .../Tests/XenoArtifactTest.cs | 419 +++++ .../Administration/Systems/AdminVerbSystem.cs | 26 - Content.Server/Emp/EmpSystem.cs | 16 + .../EntityEffects/Effects/ActivateArtifact.cs | 18 - .../Instruments/InstrumentComponent.cs | 6 - Content.Server/PAI/PAISystem.cs | 1 + .../Radiation/Systems/RadiationSystem.cs | 4 +- .../StationEvents/Events/VentClogRule.cs | 3 +- .../RandomArtifactSpriteSystem.cs | 25 +- .../Components/XAEChargeBatteryComponent.cs | 14 + .../XAE/Components/XAECreateGasComponent.cs | 16 + .../Components/XAECreatePuddleComponent.cs | 46 + .../XAE/Components/XAEEmpInAreaComponent.cs | 26 + .../XAE/Components/XAEFoamComponent.cs | 56 + .../XAE/Components/XAEIgniteComponent.cs | 22 + .../Components/XAELightFlickerComponent.cs} | 14 +- .../XAE/Components/XAEPolymorphComponent.cs} | 14 +- .../XAE/Components/XAETelepathicComponent.cs} | 6 +- .../Components/XAETemperatureComponent.cs} | 6 +- .../XAEThrowThingsAroundComponent.cs} | 6 +- .../XAETriggerExplosivesComponent.cs | 9 + .../Artifact/XAE/XAEChargeBatterySystem.cs | 31 + .../Artifact/XAE/XAECreateGasSystem.cs | 52 + .../Artifact/XAE/XAECreatePuddleSystem.cs | 77 + .../Artifact/XAE/XAEEmpInAreaSystem.cs | 20 + .../Artifact/XAE/XAEFoamSystem.cs | 63 + .../Artifact/XAE/XAEIgniteSystem.cs | 47 + .../Artifact/XAE/XAELightFlickerSystem.cs | 49 + .../Artifact/XAE/XAEPolymorphSystem.cs | 39 + .../XAE/XAETelepathicSystem.cs} | 31 +- .../Artifact/XAE/XAETemperatureSystem.cs | 49 + .../XAE/XAEThrowThingsAroundSystem.cs | 72 + .../XAE/XAETriggerExplosivesSystem.cs | 24 + .../XAT/Components/XATGasComponent.cs | 28 + .../XAT/Components/XATMagnetComponent.cs | 21 + .../XAT/Components/XATPressureComponent.cs | 20 + .../XAT/Components/XATTemperatureComponent.cs | 20 + .../Artifact/XAT/XATGasSystem.cs | 36 + .../Artifact/XAT/XATMagnetSystem.cs | 67 + .../Artifact/XAT/XATPressureSystem.cs | 29 + .../Artifact/XAT/XATTemperatureSystem.cs | 37 + .../Artifact/XenoArtifactCommands.cs | 125 ++ .../Artifact/XenoArtifactSystem.ProcGen.cs | 219 +++ .../Artifact/XenoArtifactSystem.cs | 35 + .../Artifact/XenoArtifactUnlockNodeCommand.cs | 84 + .../Equipment/ArtifactAnalyzerSystem.cs | 50 + .../ActiveArtifactAnalyzerComponent.cs | 36 - .../ActiveScannedArtifactComponent.cs | 22 - .../Components/AnalysisConsoleComponent.cs | 38 - .../Components/ArtifactAnalyzerComponent.cs | 45 - .../Components/BiasedArtifactComponent.cs | 12 - .../Components/NodeScannerComponent.cs | 7 - .../SuppressArtifactContainerComponent.cs | 10 - .../Components/TraversalDistorterComponent.cs | 21 - .../Systems/ArtifactAnalyzerSystem.cs | 519 ------- .../Systems/ArtifactCrusherSystem.cs | 5 +- .../Equipment/Systems/NodeScannerSystem.cs | 62 +- .../Systems/TraversalDistorterSystem.cs | 79 - .../XenoArtifacts/ArtifactComponent.cs | 166 -- .../XenoArtifacts/ArtifactSystem.Actions.cs | 49 - .../XenoArtifacts/ArtifactSystem.Commands.cs | 71 - .../XenoArtifacts/ArtifactSystem.Nodes.cs | 244 --- .../XenoArtifacts/ArtifactSystem.cs | 299 ---- .../ChargeBatteryArtifactComponent.cs | 14 - .../ChemicalPuddleArtifactComponent.cs | 32 - .../Components/EmpArtifactComponent.cs | 20 - .../Components/FoamArtifactComponent.cs | 49 - .../Components/GasArtifactComponent.cs | 63 - .../Components/IgniteArtifactComponent.cs | 17 - .../Components/KnockArtifactComponent.cs | 14 - .../Components/PhasingArtifactComponent.cs | 10 - .../Components/PortalArtifactComponent.cs | 14 - .../RandomInstrumentArtifactComponent.cs | 7 - .../Components/ShuffleArtifactComponent.cs | 12 - .../Components/SpawnArtifactComponent.cs | 26 - .../Components/TriggerArtifactComponent.cs | 10 - .../Systems/ChargeBatteryArtifactSystem.cs | 31 - .../Systems/ChemicalPuddleArtifactSystem.cs | 54 - .../Systems/DamageNearbyArtifactSystem.cs | 38 - .../Effects/Systems/EmpArtifactSystem.cs | 23 - .../Effects/Systems/FoamArtifactSystem.cs | 43 - .../Effects/Systems/GasArtifactSystem.cs | 53 - .../Effects/Systems/IgniteArtifactSystem.cs | 33 - .../Effects/Systems/KnockArtifactSystem.cs | 24 - .../Systems/LightFlickerArtifactSystem.cs | 38 - .../Effects/Systems/PhasingArtifactSystem.cs | 36 - .../Systems/PolyOthersArtifactSystem.cs | 44 - .../Systems/RandomInstrumentArtifactSystem.cs | 23 - .../Systems/RandomTeleportArtifactSystem.cs | 28 - .../Effects/Systems/ShuffleArtifactSystem.cs | 46 - .../Effects/Systems/SpawnArtifactSystem.cs | 46 - .../Systems/TemperatureArtifactSystem.cs | 49 - .../Effects/Systems/ThrowArtifactSystem.cs | 61 - .../Effects/Systems/TriggerArtifactSystem.cs | 24 - .../XenoArtifacts/Events/ArtifactEvents.cs | 31 - .../ArtifactAnchorTriggerComponent.cs | 13 - .../ArtifactDamageTriggerComponent.cs | 29 - .../ArtifactDeathTriggerComponent.cs | 14 - .../ArtifactElectricityTriggerComponent.cs | 15 - .../ArtifactExamineTriggerComponent.cs | 10 - .../Components/ArtifactGasTriggerComponent.cs | 38 - .../ArtifactHeatTriggerComponent.cs | 28 - .../ArtifactInteractionTriggerComponent.cs | 29 - .../ArtifactLandTriggerComponent.cs | 9 - .../ArtifactMagnetTriggerComponent.cs | 21 - .../ArtifactMicrowaveTriggerComponent.cs | 9 - .../ArtifactMusicTriggerComponent.cs | 14 - .../ArtifactPressureTriggerComponent.cs | 20 - .../ArtifactTimerTriggerComponent.cs | 21 - .../Systems/ArtifactAnchorTriggerSystem.cs | 22 - .../Systems/ArtifactDamageTriggerSystem.cs | 35 - .../Systems/ArtifactDeathTriggerSystem.cs | 41 - .../ArtifactElectricityTriggerSystem.cs | 57 - .../Systems/ArtifactExamineTriggerSystem.cs | 25 - .../Systems/ArtifactGasTriggerSystem.cs | 55 - .../Systems/ArtifactHeatTriggerSystem.cs | 68 - .../ArtifactInteractionTriggerSystem.cs | 46 - .../Triggers/Systems/ArtifactLandSystem.cs | 21 - .../Systems/ArtifactMagnetTriggerSystem.cs | 80 - .../Systems/ArtifactMicrowaveTriggerSystem.cs | 20 - .../Systems/ArtifactMusicTriggerSystem.cs | 53 - .../Systems/ArtifactPressureTriggerSystem.cs | 36 - .../Systems/ArtifactTimerTriggerSystem.cs | 44 - Content.Shared.Database/LogType.cs | 4 + .../Reaction/ChemicalReactionSystem.cs | 5 + Content.Shared/Chemistry/ReactiveSystem.cs | 12 + .../Damage/Systems/DamageableSystem.cs | 2 +- .../Instruments/SharedInstrumentComponent.cs | 6 + .../Radiation/Events/OnIrradiatedEvent.cs | 6 +- .../Components/XenoArtifactComponent.cs | 161 ++ .../Components/XenoArtifactNodeComponent.cs | 81 + .../XenoArtifactUnlockingComponent.cs | 48 + .../Prototypes/XenoArchTriggerPrototype.cs | 46 + .../SharedXenoArtifactSystem.Graph.cs | 615 ++++++++ .../Artifact/SharedXenoArtifactSystem.Node.cs | 399 +++++ .../SharedXenoArtifactSystem.Unlock.cs | 167 ++ .../Artifact/SharedXenoArtifactSystem.XAE.cs | 160 ++ .../Artifact/SharedXenoArtifactSystem.XAT.cs | 112 ++ .../Artifact/SharedXenoArtifactSystem.cs | 56 + .../Artifact/XAE/BaseXAESystem.cs | 21 + .../Components/XAEApplyComponentsComponent.cs | 29 + .../Components/XAEDamageInAreaComponent.cs | 22 +- .../XAE/Components/XAEKnockComponent.cs | 16 + .../XAE/Components/XAEPortalComponent.cs | 17 + .../XAERandomTeleportInvokerComponent.cs | 12 +- .../Components/XAERemoveCollisionComponent.cs | 10 + .../XAE/Components/XAEShuffleComponent.cs | 17 + .../Artifact/XAE/XAEApplyComponentsSystem.cs | 38 + .../Artifact/XAE/XAEDamageInAreaSystem.cs | 43 + .../Artifact/XAE/XAEKnockSystem.cs | 27 + .../Artifact/XAE/XAEPortalSystem.cs | 36 +- .../XAE/XAERandomTeleportInvokerSystem.cs | 29 + .../Artifact/XAE/XAERemoveCollisionSystem.cs | 25 + .../Artifact/XAE/XAEShuffleSystem.cs | 59 + .../Artifact/XAT/BaseQueryUpdateXATSystem.cs | 51 + .../Artifact/XAT/BaseXATSystem.cs | 88 ++ .../XAT/Components/XATCompNearbyComponent.cs | 30 + .../XATDamageThresholdReachedComponent.cs | 38 + .../XAT/Components/XATDeathComponent.cs | 16 + .../Components/XATExaminableTextComponent.cs | 14 + .../XAT/Components/XATExamineComponent.cs | 9 + .../XAT/Components/XATInteractionComponent.cs | 9 + .../XAT/Components/XATItemLandComponent.cs | 9 + .../XAT/Components/XATReactiveComponent.cs | 38 + .../XAT/Components/XATTimerComponent.cs | 23 + .../XAT/Components/XATToolUseComponent.cs | 49 + .../Artifact/XAT/XATCompNearbySystem.cs | 34 + .../XAT/XATDamageThresholdReachedSystem.cs | 65 + .../Artifact/XAT/XATDeathSystem.cs | 49 + .../Artifact/XAT/XATExaminableTextSystem.cs | 28 + .../Artifact/XAT/XATExamineSystem.cs | 32 + .../Artifact/XAT/XATInteractionSystem.cs | 42 + .../Artifact/XAT/XATItemLandSystem.cs | 24 + .../Artifact/XAT/XATReactiveSystem.cs | 58 + .../Artifact/XAT/XATTimerSystem.cs | 68 + .../Artifact/XAT/XATToolUseSystem.cs | 52 + .../Components/AnalysisConsoleComponent.cs | 52 + .../Components/ArtifactAnalyzerComponent.cs | 38 + .../ArtifactCrusherComponent.cs | 2 +- .../Components/NodeScannerComponent.cs | 58 + .../SuppressArtifactContainerComponent.cs | 9 + .../Equipment/SharedArtifactAnalyzer.cs | 69 - .../Equipment/SharedArtifactAnalyzerSystem.cs | 136 ++ .../Equipment/SharedArtifactCrusherSystem.cs | 1 + .../Equipment/SharedNodeScannerSystem.cs | 120 ++ .../SuppressArtifactContainerSystem.cs | 17 +- .../XenoArtifacts/ArtifactEffectPrototype.cs | 44 - .../XenoArtifacts/ArtifactTriggerPrototype.cs | 33 - .../RandomArtifactSpriteComponent.cs | 4 +- .../XenoArtifacts/SharedArtifact.cs | 11 +- .../Artifact/artifact-activation-fail1.ogg | Bin 0 -> 16443 bytes .../Artifact/artifact-force-activated1.ogg | Bin 0 -> 9845 bytes .../Audio/Items/Artifact/attributions.yml | 8 + .../en-US/commands/toolshed-commands.ftl | 10 + .../en-US/guidebook/chemistry/effects.ftl | 6 - .../xenoarchaeology/artifact-analyzer.ftl | 56 +- .../xenoarchaeology/artifact-component.ftl | 25 +- .../en-US/xenoarchaeology/artifact-hints.ftl | 37 + .../en-US/xenoarchaeology/node-scanner.ftl | 11 +- .../Shuttles/ShuttleEvent/incorporation.yml | 8 +- Resources/Prototypes/Actions/types.yml | 12 - .../Prototypes/Catalog/Bounties/bounties.yml | 2 +- .../Xenoarchaeology/artifact_equipment.yml | 2 +- ...m_artifacts.yml => item_xenoartifacts.yml} | 82 +- .../Specific/Xenoarchaeology/node_scanner.yml | 9 +- .../Xenoarchaeology/structure_artifacts.yml | 94 -- .../structure_xenoartifacts.yml | 71 + .../Xenoarchaeology/xenoartifacts.yml | 43 + .../Machines/Computers/computers.yml | 5 +- .../Structures/Machines/artifact_analyzer.yml | 7 +- Resources/Prototypes/Reagents/chemicals.yml | 8 - .../Prototypes/SoundCollections/artifact.yml | 12 +- .../XenoArch/Effects/normal_effects.yml | 679 -------- .../XenoArch/Effects/utility_effects.yml | 251 --- .../Prototypes/XenoArch/artifact_triggers.yml | 205 --- Resources/Prototypes/XenoArch/effects.yml | 1359 +++++++++++++++++ Resources/Prototypes/XenoArch/triggers.yml | 265 ++++ .../Prototypes/name_identifier_groups.yml | 5 + .../artifact-activation.png | Bin 0 -> 5993 bytes .../xeno_artifacts.rsi/meta.json | 15 + 233 files changed, 8156 insertions(+), 5442 deletions(-) create mode 100644 Content.Client/Xenoarchaeology/Artifact/XenoArtifactSystem.cs create mode 100644 Content.Client/Xenoarchaeology/Equipment/ArtifactAnalyzerSystem.cs create mode 100644 Content.Client/Xenoarchaeology/Equipment/NodeScannerSystem.cs create mode 100644 Content.Client/Xenoarchaeology/Ui/NodeScannerBoundUserInterface.cs create mode 100644 Content.Client/Xenoarchaeology/Ui/NodeScannerDisplay.xaml create mode 100644 Content.Client/Xenoarchaeology/Ui/NodeScannerDisplay.xaml.cs create mode 100644 Content.Client/Xenoarchaeology/Ui/XenoArtifactGraphControl.xaml create mode 100644 Content.Client/Xenoarchaeology/Ui/XenoArtifactGraphControl.xaml.cs create mode 100644 Content.IntegrationTests/Tests/XenoArtifactTest.cs delete mode 100644 Content.Server/EntityEffects/Effects/ActivateArtifact.cs rename Content.Server/Xenoarchaeology/{XenoArtifacts => Artifact}/RandomArtifactSpriteSystem.cs (64%) create mode 100644 Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAEChargeBatteryComponent.cs create mode 100644 Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAECreateGasComponent.cs create mode 100644 Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAECreatePuddleComponent.cs create mode 100644 Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAEEmpInAreaComponent.cs create mode 100644 Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAEFoamComponent.cs create mode 100644 Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAEIgniteComponent.cs rename Content.Server/Xenoarchaeology/{XenoArtifacts/Effects/Components/LightFlickerArtifactComponent.cs => Artifact/XAE/Components/XAELightFlickerComponent.cs} (51%) rename Content.Server/Xenoarchaeology/{XenoArtifacts/Effects/Components/PolyOthersArtifactComponent.cs => Artifact/XAE/Components/XAEPolymorphComponent.cs} (62%) rename Content.Server/Xenoarchaeology/{XenoArtifacts/Effects/Components/TelepathicArtifactComponent.cs => Artifact/XAE/Components/XAETelepathicComponent.cs} (85%) rename Content.Server/Xenoarchaeology/{XenoArtifacts/Effects/Components/TemperatureArtifactComponent.cs => Artifact/XAE/Components/XAETemperatureComponent.cs} (75%) rename Content.Server/Xenoarchaeology/{XenoArtifacts/Effects/Components/ThrowArtifactComponent.cs => Artifact/XAE/Components/XAEThrowThingsAroundComponent.cs} (75%) create mode 100644 Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAETriggerExplosivesComponent.cs create mode 100644 Content.Server/Xenoarchaeology/Artifact/XAE/XAEChargeBatterySystem.cs create mode 100644 Content.Server/Xenoarchaeology/Artifact/XAE/XAECreateGasSystem.cs create mode 100644 Content.Server/Xenoarchaeology/Artifact/XAE/XAECreatePuddleSystem.cs create mode 100644 Content.Server/Xenoarchaeology/Artifact/XAE/XAEEmpInAreaSystem.cs create mode 100644 Content.Server/Xenoarchaeology/Artifact/XAE/XAEFoamSystem.cs create mode 100644 Content.Server/Xenoarchaeology/Artifact/XAE/XAEIgniteSystem.cs create mode 100644 Content.Server/Xenoarchaeology/Artifact/XAE/XAELightFlickerSystem.cs create mode 100644 Content.Server/Xenoarchaeology/Artifact/XAE/XAEPolymorphSystem.cs rename Content.Server/Xenoarchaeology/{XenoArtifacts/Effects/Systems/TelepathicArtifactSystem.cs => Artifact/XAE/XAETelepathicSystem.cs} (53%) create mode 100644 Content.Server/Xenoarchaeology/Artifact/XAE/XAETemperatureSystem.cs create mode 100644 Content.Server/Xenoarchaeology/Artifact/XAE/XAEThrowThingsAroundSystem.cs create mode 100644 Content.Server/Xenoarchaeology/Artifact/XAE/XAETriggerExplosivesSystem.cs create mode 100644 Content.Server/Xenoarchaeology/Artifact/XAT/Components/XATGasComponent.cs create mode 100644 Content.Server/Xenoarchaeology/Artifact/XAT/Components/XATMagnetComponent.cs create mode 100644 Content.Server/Xenoarchaeology/Artifact/XAT/Components/XATPressureComponent.cs create mode 100644 Content.Server/Xenoarchaeology/Artifact/XAT/Components/XATTemperatureComponent.cs create mode 100644 Content.Server/Xenoarchaeology/Artifact/XAT/XATGasSystem.cs create mode 100644 Content.Server/Xenoarchaeology/Artifact/XAT/XATMagnetSystem.cs create mode 100644 Content.Server/Xenoarchaeology/Artifact/XAT/XATPressureSystem.cs create mode 100644 Content.Server/Xenoarchaeology/Artifact/XAT/XATTemperatureSystem.cs create mode 100644 Content.Server/Xenoarchaeology/Artifact/XenoArtifactCommands.cs create mode 100644 Content.Server/Xenoarchaeology/Artifact/XenoArtifactSystem.ProcGen.cs create mode 100644 Content.Server/Xenoarchaeology/Artifact/XenoArtifactSystem.cs create mode 100644 Content.Server/Xenoarchaeology/Artifact/XenoArtifactUnlockNodeCommand.cs create mode 100644 Content.Server/Xenoarchaeology/Equipment/ArtifactAnalyzerSystem.cs delete mode 100644 Content.Server/Xenoarchaeology/Equipment/Components/ActiveArtifactAnalyzerComponent.cs delete mode 100644 Content.Server/Xenoarchaeology/Equipment/Components/ActiveScannedArtifactComponent.cs delete mode 100644 Content.Server/Xenoarchaeology/Equipment/Components/AnalysisConsoleComponent.cs delete mode 100644 Content.Server/Xenoarchaeology/Equipment/Components/ArtifactAnalyzerComponent.cs delete mode 100644 Content.Server/Xenoarchaeology/Equipment/Components/BiasedArtifactComponent.cs delete mode 100644 Content.Server/Xenoarchaeology/Equipment/Components/NodeScannerComponent.cs delete mode 100644 Content.Server/Xenoarchaeology/Equipment/Components/SuppressArtifactContainerComponent.cs delete mode 100644 Content.Server/Xenoarchaeology/Equipment/Components/TraversalDistorterComponent.cs delete mode 100644 Content.Server/Xenoarchaeology/Equipment/Systems/ArtifactAnalyzerSystem.cs delete mode 100644 Content.Server/Xenoarchaeology/Equipment/Systems/TraversalDistorterSystem.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/ArtifactComponent.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/ArtifactSystem.Actions.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/ArtifactSystem.Commands.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/ArtifactSystem.Nodes.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/ArtifactSystem.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/ChargeBatteryArtifactComponent.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/ChemicalPuddleArtifactComponent.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/EmpArtifactComponent.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/FoamArtifactComponent.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/GasArtifactComponent.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/IgniteArtifactComponent.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/KnockArtifactComponent.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/PhasingArtifactComponent.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/PortalArtifactComponent.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/RandomInstrumentArtifactComponent.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/ShuffleArtifactComponent.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/SpawnArtifactComponent.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/TriggerArtifactComponent.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/ChargeBatteryArtifactSystem.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/ChemicalPuddleArtifactSystem.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/DamageNearbyArtifactSystem.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/EmpArtifactSystem.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/FoamArtifactSystem.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/GasArtifactSystem.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/IgniteArtifactSystem.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/KnockArtifactSystem.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/LightFlickerArtifactSystem.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/PhasingArtifactSystem.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/PolyOthersArtifactSystem.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/RandomInstrumentArtifactSystem.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/RandomTeleportArtifactSystem.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/ShuffleArtifactSystem.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/SpawnArtifactSystem.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/TemperatureArtifactSystem.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/ThrowArtifactSystem.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/TriggerArtifactSystem.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Events/ArtifactEvents.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactAnchorTriggerComponent.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactDamageTriggerComponent.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactDeathTriggerComponent.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactElectricityTriggerComponent.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactExamineTriggerComponent.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactGasTriggerComponent.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactHeatTriggerComponent.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactInteractionTriggerComponent.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactLandTriggerComponent.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactMagnetTriggerComponent.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactMicrowaveTriggerComponent.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactMusicTriggerComponent.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactPressureTriggerComponent.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactTimerTriggerComponent.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactAnchorTriggerSystem.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactDamageTriggerSystem.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactDeathTriggerSystem.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactElectricityTriggerSystem.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactExamineTriggerSystem.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactGasTriggerSystem.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactHeatTriggerSystem.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactInteractionTriggerSystem.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactLandSystem.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactMagnetTriggerSystem.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactMicrowaveTriggerSystem.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactMusicTriggerSystem.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactPressureTriggerSystem.cs delete mode 100644 Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactTimerTriggerSystem.cs create mode 100644 Content.Shared/Xenoarchaeology/Artifact/Components/XenoArtifactComponent.cs create mode 100644 Content.Shared/Xenoarchaeology/Artifact/Components/XenoArtifactNodeComponent.cs create mode 100644 Content.Shared/Xenoarchaeology/Artifact/Components/XenoArtifactUnlockingComponent.cs create mode 100644 Content.Shared/Xenoarchaeology/Artifact/Prototypes/XenoArchTriggerPrototype.cs create mode 100644 Content.Shared/Xenoarchaeology/Artifact/SharedXenoArtifactSystem.Graph.cs create mode 100644 Content.Shared/Xenoarchaeology/Artifact/SharedXenoArtifactSystem.Node.cs create mode 100644 Content.Shared/Xenoarchaeology/Artifact/SharedXenoArtifactSystem.Unlock.cs create mode 100644 Content.Shared/Xenoarchaeology/Artifact/SharedXenoArtifactSystem.XAE.cs create mode 100644 Content.Shared/Xenoarchaeology/Artifact/SharedXenoArtifactSystem.XAT.cs create mode 100644 Content.Shared/Xenoarchaeology/Artifact/SharedXenoArtifactSystem.cs create mode 100644 Content.Shared/Xenoarchaeology/Artifact/XAE/BaseXAESystem.cs create mode 100644 Content.Shared/Xenoarchaeology/Artifact/XAE/Components/XAEApplyComponentsComponent.cs rename Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/DamageNearbyArtifactComponent.cs => Content.Shared/Xenoarchaeology/Artifact/XAE/Components/XAEDamageInAreaComponent.cs (60%) create mode 100644 Content.Shared/Xenoarchaeology/Artifact/XAE/Components/XAEKnockComponent.cs create mode 100644 Content.Shared/Xenoarchaeology/Artifact/XAE/Components/XAEPortalComponent.cs rename Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/RandomTeleportArtifactComponent.cs => Content.Shared/Xenoarchaeology/Artifact/XAE/Components/XAERandomTeleportInvokerComponent.cs (51%) create mode 100644 Content.Shared/Xenoarchaeology/Artifact/XAE/Components/XAERemoveCollisionComponent.cs create mode 100644 Content.Shared/Xenoarchaeology/Artifact/XAE/Components/XAEShuffleComponent.cs create mode 100644 Content.Shared/Xenoarchaeology/Artifact/XAE/XAEApplyComponentsSystem.cs create mode 100644 Content.Shared/Xenoarchaeology/Artifact/XAE/XAEDamageInAreaSystem.cs create mode 100644 Content.Shared/Xenoarchaeology/Artifact/XAE/XAEKnockSystem.cs rename Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/PortalArtifactSystem.cs => Content.Shared/Xenoarchaeology/Artifact/XAE/XAEPortalSystem.cs (51%) create mode 100644 Content.Shared/Xenoarchaeology/Artifact/XAE/XAERandomTeleportInvokerSystem.cs create mode 100644 Content.Shared/Xenoarchaeology/Artifact/XAE/XAERemoveCollisionSystem.cs create mode 100644 Content.Shared/Xenoarchaeology/Artifact/XAE/XAEShuffleSystem.cs create mode 100644 Content.Shared/Xenoarchaeology/Artifact/XAT/BaseQueryUpdateXATSystem.cs create mode 100644 Content.Shared/Xenoarchaeology/Artifact/XAT/BaseXATSystem.cs create mode 100644 Content.Shared/Xenoarchaeology/Artifact/XAT/Components/XATCompNearbyComponent.cs create mode 100644 Content.Shared/Xenoarchaeology/Artifact/XAT/Components/XATDamageThresholdReachedComponent.cs create mode 100644 Content.Shared/Xenoarchaeology/Artifact/XAT/Components/XATDeathComponent.cs create mode 100644 Content.Shared/Xenoarchaeology/Artifact/XAT/Components/XATExaminableTextComponent.cs create mode 100644 Content.Shared/Xenoarchaeology/Artifact/XAT/Components/XATExamineComponent.cs create mode 100644 Content.Shared/Xenoarchaeology/Artifact/XAT/Components/XATInteractionComponent.cs create mode 100644 Content.Shared/Xenoarchaeology/Artifact/XAT/Components/XATItemLandComponent.cs create mode 100644 Content.Shared/Xenoarchaeology/Artifact/XAT/Components/XATReactiveComponent.cs create mode 100644 Content.Shared/Xenoarchaeology/Artifact/XAT/Components/XATTimerComponent.cs create mode 100644 Content.Shared/Xenoarchaeology/Artifact/XAT/Components/XATToolUseComponent.cs create mode 100644 Content.Shared/Xenoarchaeology/Artifact/XAT/XATCompNearbySystem.cs create mode 100644 Content.Shared/Xenoarchaeology/Artifact/XAT/XATDamageThresholdReachedSystem.cs create mode 100644 Content.Shared/Xenoarchaeology/Artifact/XAT/XATDeathSystem.cs create mode 100644 Content.Shared/Xenoarchaeology/Artifact/XAT/XATExaminableTextSystem.cs create mode 100644 Content.Shared/Xenoarchaeology/Artifact/XAT/XATExamineSystem.cs create mode 100644 Content.Shared/Xenoarchaeology/Artifact/XAT/XATInteractionSystem.cs create mode 100644 Content.Shared/Xenoarchaeology/Artifact/XAT/XATItemLandSystem.cs create mode 100644 Content.Shared/Xenoarchaeology/Artifact/XAT/XATReactiveSystem.cs create mode 100644 Content.Shared/Xenoarchaeology/Artifact/XAT/XATTimerSystem.cs create mode 100644 Content.Shared/Xenoarchaeology/Artifact/XAT/XATToolUseSystem.cs create mode 100644 Content.Shared/Xenoarchaeology/Equipment/Components/AnalysisConsoleComponent.cs create mode 100644 Content.Shared/Xenoarchaeology/Equipment/Components/ArtifactAnalyzerComponent.cs rename Content.Shared/Xenoarchaeology/Equipment/{ => Components}/ArtifactCrusherComponent.cs (98%) create mode 100644 Content.Shared/Xenoarchaeology/Equipment/Components/NodeScannerComponent.cs create mode 100644 Content.Shared/Xenoarchaeology/Equipment/Components/SuppressArtifactContainerComponent.cs delete mode 100644 Content.Shared/Xenoarchaeology/Equipment/SharedArtifactAnalyzer.cs create mode 100644 Content.Shared/Xenoarchaeology/Equipment/SharedArtifactAnalyzerSystem.cs create mode 100644 Content.Shared/Xenoarchaeology/Equipment/SharedNodeScannerSystem.cs rename {Content.Server/Xenoarchaeology/Equipment/Systems => Content.Shared/Xenoarchaeology/Equipment}/SuppressArtifactContainerSystem.cs (54%) delete mode 100644 Content.Shared/Xenoarchaeology/XenoArtifacts/ArtifactEffectPrototype.cs delete mode 100644 Content.Shared/Xenoarchaeology/XenoArtifacts/ArtifactTriggerPrototype.cs create mode 100644 Resources/Audio/Items/Artifact/artifact-activation-fail1.ogg create mode 100644 Resources/Audio/Items/Artifact/artifact-force-activated1.ogg rename Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/{item_artifacts.yml => item_xenoartifacts.yml} (73%) delete mode 100644 Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/structure_artifacts.yml create mode 100644 Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/structure_xenoartifacts.yml create mode 100644 Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/xenoartifacts.yml delete mode 100644 Resources/Prototypes/XenoArch/Effects/normal_effects.yml delete mode 100644 Resources/Prototypes/XenoArch/Effects/utility_effects.yml delete mode 100644 Resources/Prototypes/XenoArch/artifact_triggers.yml create mode 100644 Resources/Prototypes/XenoArch/effects.yml create mode 100644 Resources/Prototypes/XenoArch/triggers.yml create mode 100644 Resources/Textures/Objects/Specific/Xenoarchaeology/xeno_artifacts.rsi/artifact-activation.png diff --git a/Content.Client/Xenoarchaeology/Artifact/XenoArtifactSystem.cs b/Content.Client/Xenoarchaeology/Artifact/XenoArtifactSystem.cs new file mode 100644 index 0000000000..0e8680e22a --- /dev/null +++ b/Content.Client/Xenoarchaeology/Artifact/XenoArtifactSystem.cs @@ -0,0 +1,6 @@ +using Content.Shared.Xenoarchaeology.Artifact; + +namespace Content.Client.Xenoarchaeology.Artifact; + +/// +public sealed class XenoArtifactSystem : SharedXenoArtifactSystem; diff --git a/Content.Client/Xenoarchaeology/Equipment/ArtifactAnalyzerSystem.cs b/Content.Client/Xenoarchaeology/Equipment/ArtifactAnalyzerSystem.cs new file mode 100644 index 0000000000..557d46f46b --- /dev/null +++ b/Content.Client/Xenoarchaeology/Equipment/ArtifactAnalyzerSystem.cs @@ -0,0 +1,40 @@ +using Content.Client.Xenoarchaeology.Ui; +using Content.Shared.Xenoarchaeology.Equipment; +using Content.Shared.Xenoarchaeology.Equipment.Components; +using Robust.Client.GameObjects; + +namespace Content.Client.Xenoarchaeology.Equipment; + +/// +public sealed class ArtifactAnalyzerSystem : SharedArtifactAnalyzerSystem +{ + [Dependency] private readonly UserInterfaceSystem _ui = default!; + + /// + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnAnalysisConsoleAfterAutoHandleState); + SubscribeLocalEvent(OnAnalyzerAfterAutoHandleState); + } + + private void OnAnalysisConsoleAfterAutoHandleState(Entity ent, ref AfterAutoHandleStateEvent args) + { + UpdateBuiIfCanGetAnalysisConsoleUi(ent); + } + + private void OnAnalyzerAfterAutoHandleState(Entity ent, ref AfterAutoHandleStateEvent args) + { + if (!TryGetAnalysisConsole(ent, out var analysisConsole)) + return; + + UpdateBuiIfCanGetAnalysisConsoleUi(analysisConsole.Value); + } + + private void UpdateBuiIfCanGetAnalysisConsoleUi(Entity analysisConsole) + { + if (_ui.TryGetOpenUi(analysisConsole.Owner, ArtifactAnalyzerUiKey.Key, out var bui)) + bui.Update(analysisConsole); + } +} diff --git a/Content.Client/Xenoarchaeology/Equipment/ArtifactCrusherSystem.cs b/Content.Client/Xenoarchaeology/Equipment/ArtifactCrusherSystem.cs index a57ef55574..d4a88cdd03 100644 --- a/Content.Client/Xenoarchaeology/Equipment/ArtifactCrusherSystem.cs +++ b/Content.Client/Xenoarchaeology/Equipment/ArtifactCrusherSystem.cs @@ -6,4 +6,4 @@ namespace Content.Client.Xenoarchaeology.Equipment; public sealed class ArtifactCrusherSystem : SharedArtifactCrusherSystem { -} +} \ No newline at end of file diff --git a/Content.Client/Xenoarchaeology/Equipment/NodeScannerSystem.cs b/Content.Client/Xenoarchaeology/Equipment/NodeScannerSystem.cs new file mode 100644 index 0000000000..9b517c06a1 --- /dev/null +++ b/Content.Client/Xenoarchaeology/Equipment/NodeScannerSystem.cs @@ -0,0 +1,31 @@ +using Content.Client.Xenoarchaeology.Ui; +using Content.Shared.Xenoarchaeology.Equipment; +using Content.Shared.Xenoarchaeology.Equipment.Components; +using Robust.Client.GameObjects; + +namespace Content.Client.Xenoarchaeology.Equipment; + +/// +public sealed class NodeScannerSystem : SharedNodeScannerSystem +{ + [Dependency] private readonly UserInterfaceSystem _ui = default!; + + /// + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnAnalysisConsoleAfterAutoHandleState); + } + + protected override void TryOpenUi(Entity device, EntityUid actor) + { + _ui.TryOpenUi(device.Owner, NodeScannerUiKey.Key, actor, true); + } + + private void OnAnalysisConsoleAfterAutoHandleState(Entity ent, ref AfterAutoHandleStateEvent args) + { + if (_ui.TryGetOpenUi(ent.Owner, NodeScannerUiKey.Key, out var bui)) + bui.Update(ent); + } +} diff --git a/Content.Client/Xenoarchaeology/Ui/AnalysisConsoleBoundUserInterface.cs b/Content.Client/Xenoarchaeology/Ui/AnalysisConsoleBoundUserInterface.cs index c7a74815b6..a4ecff7530 100644 --- a/Content.Client/Xenoarchaeology/Ui/AnalysisConsoleBoundUserInterface.cs +++ b/Content.Client/Xenoarchaeology/Ui/AnalysisConsoleBoundUserInterface.cs @@ -1,66 +1,50 @@ -using Content.Shared.Xenoarchaeology.Equipment; -using JetBrains.Annotations; -using Robust.Client.GameObjects; +using Content.Shared.Research.Components; +using Content.Shared.Xenoarchaeology.Equipment.Components; using Robust.Client.UserInterface; +using JetBrains.Annotations; namespace Content.Client.Xenoarchaeology.Ui; +/// +/// BUI for artifact analysis console, proxies server-provided UI updates +/// (related to device, connected artifact analyzer, and artifact lying on it). +/// [UsedImplicitly] -public sealed class AnalysisConsoleBoundUserInterface : BoundUserInterface +public sealed class AnalysisConsoleBoundUserInterface(EntityUid owner, Enum uiKey) : BoundUserInterface(owner, uiKey) { [ViewVariables] private AnalysisConsoleMenu? _consoleMenu; - public AnalysisConsoleBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey) - { - } - + /// protected override void Open() { base.Open(); _consoleMenu = this.CreateWindow(); + _consoleMenu.SetOwner(owner); + + _consoleMenu.OnClose += Close; + _consoleMenu.OpenCentered(); _consoleMenu.OnServerSelectionButtonPressed += () => { - SendMessage(new AnalysisConsoleServerSelectionMessage()); - }; - _consoleMenu.OnScanButtonPressed += () => - { - SendMessage(new AnalysisConsoleScanButtonPressedMessage()); - }; - _consoleMenu.OnPrintButtonPressed += () => - { - SendMessage(new AnalysisConsolePrintButtonPressedMessage()); + SendMessage(new ConsoleServerSelectionMessage()); }; _consoleMenu.OnExtractButtonPressed += () => { SendMessage(new AnalysisConsoleExtractButtonPressedMessage()); }; - _consoleMenu.OnUpBiasButtonPressed += () => - { - SendMessage(new AnalysisConsoleBiasButtonPressedMessage(false)); - }; - _consoleMenu.OnDownBiasButtonPressed += () => - { - SendMessage(new AnalysisConsoleBiasButtonPressedMessage(true)); - }; } - protected override void UpdateState(BoundUserInterfaceState state) + /// + /// Update UI state based on corresponding component. + /// + public void Update(Entity ent) { - base.UpdateState(state); - - switch (state) - { - case AnalysisConsoleUpdateState msg: - _consoleMenu?.SetButtonsDisabled(msg); - _consoleMenu?.UpdateInformationDisplay(msg); - _consoleMenu?.UpdateProgressBar(msg); - break; - } + _consoleMenu?.Update(ent); } + /// protected override void Dispose(bool disposing) { base.Dispose(disposing); diff --git a/Content.Client/Xenoarchaeology/Ui/AnalysisConsoleMenu.xaml b/Content.Client/Xenoarchaeology/Ui/AnalysisConsoleMenu.xaml index 29f4a54847..14db2bdf60 100644 --- a/Content.Client/Xenoarchaeology/Ui/AnalysisConsoleMenu.xaml +++ b/Content.Client/Xenoarchaeology/Ui/AnalysisConsoleMenu.xaml @@ -1,80 +1,91 @@ - + MinSize="700 350" + SetSize="980 550"> - - - - - - - - - - - + + + + + + + - - + + + + + + + + + + + + + + + + + - - - - + + + + + + + +