* Add CryoPodWindow (placeholder)
* Change HealthAnalyzerWindow: split off reusable HealthAnalyzerControl for cryo pod UI
* Improve CryoPodWindow: add health analyzer
* Improve CryoPodWindow: add eject button
This wasn't requested in the issue but I implemented it as practice with the UI system.
* Rewrote GasAnalyzerWindow, split off reusable gas mix viewer for cryo pod
* Change GasAnalyzerWindow: change back to three columns
With two rows you get a layouting bug when there's a lot of different gases, which looks somewhat bad. I didn't feel like fixing the layouting bug (it's an engine issue) so we're going back to three columns. That way you don't ever get two rows in practice.
* Change GasAnalyzerWindow: simplify by disabling Resizable
I added a lot of complexity to make resizable work nicely with a derived max & min size, but it's not necessary.
* Change GasAnalyzerWindow: file-wide namespace
* Change GasAnalyzerSystem: add GenerateGasMixEntry
* Split HealthAnalyzerUiState from HealthAnalyzerScannedUserMessage
* Rewrote CryoPodWindow, add atmos info
* Improve CryoPodWindow: add loading placeholder
* Improve CryoPodWindow: add internationalization support
* Fix GasAnalyzerControl: add missing translation
* Improve CryoPodWindow: add beaker info, high temperature warning
* Improve CryoPodWindow/System: inject button in window + necessary system changes
* Fix CryoPodWindow: Entering cryopod now closes window
This way you can't heal yourself with a cryopod.
* Change CryoPodWindow: add & update comments
* Change HealthAnalyzerComponent: remove `uiKey` property (no longer necessary)
* Tiny fixes
* Improve CryoPodUiMessage: replace string with enum
* Change GasAnalyzerWindow: simplify Measure code
* Change CryoPodComponent: rename Injecting to InjectionBuffer
* Change CryoPodBUI: tiny code simplification
* Fix HealthAnalyzerComponent: Removed stray import
* Improve CryoPodWindow: Prettier, concise atmos
* Improve CryoPodWindow: Chemicals bar chart
* Improve CryoPodWindow: Add Ruler to reagents
* Change CryoPodWindow: More horizontal layout
* Improve CryoPodWindow: Reduce height jiggling
The health analyzer's height changes a lot, which can be annoying with the buttons (for example when the oxygen damage label is popping in and out)
* Improve CryoPodWindow: Add setup checklist
This is mostly here to fill vertical space in the new horizontal layout.
* Improve CryoPodWindow: Eject beaker button
* Improve CryoPodWindow: Localization
* Improve CryoPodWindow: Add BeakerBarChart
An animated version of the chemicals chart
* Fix CryoPodSystem: Ejecting beaker no longer clears injection buffer
* Improve BeakerBarChart: Not animated on first frame
* Fix CryoPodWindow: Fix broken translation
* Improve CryoPodWindow: Reorder sections
* Fix BeakerBarChart: Tooltips now show up
* Change BeakerBarChart: Reorder functions
* Change CryoPodWindow: Reorder sections, change margins
* Change CryoPodWindow: Edit flavor text
* Revert changes to GasAnalyzerWindow
Since GasAnalyzerControl is no longer used in CryoPodWindow, these changes are no longer relevant to this PR.
* Tidy CryoPodWindow: Remove old workarounds
These are old layouting bug workarounds from the older version of CryoPodWindow that had a ScrollContainer in it. They're no longer necessary. Less ScrollContainers less problems.
* Tidy up: Remove unused imports
* Remove LabelledSplitBar
It was replaced by BeakerBarChart, which is a lot fancier.
* Tidy up: Tiny code style fix
* Change CryoPodSystem: Move code from server to shared
This is still without adding UI prediction
* move a ton of stuff to shared.
* one last thing
* Improve BeakerBarChart: Keep visual entry width when swapping beakers
* Improve BeakerBarChart: Respect beaker order of reagents
* Improve CryoPodWindow: Ensure space for injection buffer
We need to keep space on the chart for the injection buffer after swapping to a full beaker.
* Improve CryoPodWindow: Prettier ejection error
* Improve CryoPodWindow: Add "Cooling patient" status
* BeakerBarChart: Fix UI scale bug
* BeakerBarChart: Fix bluespace beaker ugliness
* BeakerBarChart: Add more pod status strings
* HealthAnalyzerControl: Filewide namespace, sort imports
* Style fix: Replace `bool x = y` with `var x = y`
* CryoPodUiMessage: Split off separate class for inject
* SharedCryoPodSystem: Move message-related code into Subs.BuiEvents
---------
Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
* LOCKED THE FUCK IN
* Forgot this little fella
* Crying
* All entity effects ported, needs cleanup still
* Commit
* HEHEHEHAW
* Shelve for now
* fixe
* Big
* First big chunk of changes
* Big if true
* Commit
* IT BUILDS!!!
* Fix LINTER fails
* Cleanup
* Scale working, cut down on some evil code
* Delete old Entity Effects
* Accidentally breaking shit by fixing bugs
* Fix a bunch of effects not working
* Fix reagent thresholds
* Update damage
* Wait don't change the gas metabolisms A
* Cleanup
* more fixes
* Eh
* Misc fixes and jank
* Remove two things, add bullshit, change condition to inverted
* Remove unused "Shared" system structure
* Namespace fix
* merge conflicts/cleanup
* More fixes
* Guidebook text begins
* Shelve
* Push
* More shit to push
* Fix
* Fix merg conflicts
* BLOOD FOR THE BLOOD GOD!!!
* Mild cleanup and lists
* Fix localization and comments
* Shuffle localization around a bit.
* All done?
* Nearly everything
* Is this the end?
* Whoops forgot to remove that TODO
* Get rid of some warnings for good measure...
* It's done
* Should make those virtual in case we want to override them tbqh...
* Update Content.Shared/EntityEffects/Effects/Botany/PlantAttributes/PlantDestroySeeds.cs
Co-authored-by: Pok <113675512+Pok27@users.noreply.github.com>
* Fix test fails real
* Add to codeowners
* Documentation to everything
* Forgot to push whoops
* Standardize Condition names
* Fix up metabolism a little as a treat
* review
* add IsServer checks
---------
Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
Co-authored-by: Pok <113675512+Pok27@users.noreply.github.com>
* Replace instances of SolutionContainerSystem with SharedSolutionContainerSystem
* guap
* More fixes
* Wait you can do that?
---------
Co-authored-by: Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
* Power stuff
- Add shared IsPowered
- Add shared ResolveApc
- Move PowerChangedEvent to shared for now
- Add SlimPoweredLight that actually functions how you'd expect a PoweredLight to function it id didn't have a bunch of bloat on it.
* big update
* boing
* Moved GasMixture to shared
* Temp Fix for sandbox violation, idk why Array.Resize isn't working properly. It's already sandboxed.
* The most powerful webedit in history
The gas analyzer now shows the volume of pipes, tanks, canisters and the environment.
Adjust gas analyzers so that the volume and number of moles shown corresponds to only the scanned element, e.g. a canister or single pipe in a pipenet.
* Merge BreakOnWeightlessMove and BreakOnMove. Provide different theshold for weightless movement.
* Adjust WeightlessMovementThresholds. Put a thing I forgot to put in the doafterargs.
* Make DoAfterArgs only use OnMove to determine whether to check for
movement and MoveThreshold to determine the threshold regardless of
weightlessness. Gave DistanceThreshold a default value which will always
be checked now.
* Fix issue introduced by merge.
* Use interaction system for determining whether a distance is within range
* Fix incorrect doafter args introduced by previous merge.
Forgor to commit these.
* Exorcise ghost.
The execution system should have been deleted when I merged previously.
For a reason I cannot comprehend it came back, but only the execution
system.
* Exorcise ghost Pt. 2
* Allow for movement check to be overriden in zero g and adjust doafter args where needed.
You can now override checking for movement in zero g with the BreakOnWeightlessMove bool. By default it will check.
The following doafters were made to ignore the movement check in zero g:
- Healing yourself with healing items,
- Removing embedded projectiles,
- Using tools like welders and crowbars
* Adjust distance for cuffing/uncuffing to work. Make injections not break on weightless movement.
* Fix evil incorrect and uneeded comments
* Whisper bleed update v3
* missed a few
* Add bleeding message to health analyzer.
* Fix bleed notification not updating.
* Apparently this either doesnt exist
* fix: cryo pod now uses health-analyzer system to update body state in UI
* refactor: use EntityEventRefHandler instead ComponentEventRefHandler in CryoPodComponent subscribe on EntRemovedFromContainerMessage
---------
Co-authored-by: pa.pecherskij <pa.pecherskij@interfax.ru>
* Initial prediction
* new group handling
* groups for all examines that use multiple rn
* compile
* why was it doing this??
* handle newlines with sorting properly
* Creates Content.Shared.Chemistry.Solutions
Copies Solution class to new namespace
Obsoletes old Solution class
* Switches over to the Solutions.Solution Solution
* Creates Content.Shared.Chemistry.Containers
Copies relevant components/systems to the new namespace
Obsoletes old versions
* Switches over to the Containers.XYZ namespace
* Creates SolutionSystem and obsoletes old SolutionContainerSystem methods
* Start using SolutionSystem for Solution manipulation
* EnumerateSolutions
* Move TryGetMixableSolution
* Move EnsureSolution to Server
* Create Solution Entities
* Stop using obsolete solution system methods
* Fix prototype component tests
* Add using ..Audio.Systems; back
* Wrap solution container slots in ContainerSlots
* Actually add the slot to the solution container map
* Dirty SolutionContainerComponent when ensuring solutions
* Revert namespace changes
* Remerge SolutionSystem and SolutionContainerSystem
* SolutionContainerManagerComponent refactor
* Avoid wrapping necessary code in DebugTools.Assert as it is removed when compiling for release
* Readd examine reagent sorting
* Fix errors
* Poke tests
* Fix solution names not being applied
* Fix WoolyComponent including statement
* Fix merge skew
* Fix compile errors
* Make reactions use solntities
* Reindent solution class namespace
* Field attribute changes
* AutoGenerateComponentState for SolutionContainerComponent
* SolutionContainerComponent -> ContainedSolutionComponent
* ref ReactionAttemptEvent
* Denetwork preinit solutions
* Misc 1
* Nullable TryGetSolution out vars
* Cache associated solutions
* Fix merge skew
* Use explicit regions in SharedSolutionContainerSystem.Capabilities
* Add debug assert
* Use explicit regions in SharedSolutionContainerSystem.Relay + ref SolutionContainerChangedEvent
* ContainedSolutionComponent.Name -> ContainedSolutionComponent.ContainerName
* SolutionComponent doc comments
* Implicit DataField names and property purge
* ReagentEffect DataField names
* Local variables for readability
* Sort using statements + Entity<T> event handlers
* Fix compile erros
* Fix compile errors
---------
Co-authored-by: ElectroJr <leonsfriedrich@gmail.com>
* Ports temperature scanning from mining station 14
* Added blood level to analyzer
* adds body temp and blood level to health analyzers and cryo
* Blood and temperature will show N/A if not available