* 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>
Refactor AirtightSystem to skip rotation checks for omnidirectional blocks on init
Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com>
* initial shitcode commit
* command boilerplate
* command flushed out and docs fixes
* missed one important thing in method extraction
* do loc properly
* rest later
* address review
* this worked on my laptop but not on my desktop but okay
* review comments
* address review
* Update DamageableSystem to modern standards
* DamageContainerId -> DamageContainerID with lint flag
* Replace strings with protoids
* Make CVar subscription declarations all consistently whitespaced
* ChangeDamage -> TryChangeDamage, cope with C# jank
* Revert event signature changes
* Restore a comment
* Re-add two queries
* Init the queries
* Use appearanceQuery in DamageChanged
* Use damageableQuery in TryChangeDamage
* Use damageableQuery in SetDamageModifierSetId
* Final cleanup, fix sandboxing
* Rectify ExplosionSystem:::ProcessEntity's call to TryChangeDamage
* Re-organize DamageableSystem
* first big fuck you breaking change.
* THATS A LOT OF DAMAGE!!!
* Fix test fails
* test fixes 2
* push it
---------
Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
* predicted examine
* atrociously satanic
* do it right this time
* deltafields aren't necessary
* Update Content.Server/Atmos/EntitySystems/AtmosphereSystem.DeltaPressure.cs
---------
Co-authored-by: slarticodefast <161409025+slarticodefast@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>
* Initial edits of files
Untested yet. I would like to make sure all is accounted for before moving the files.
* trying my best
* Revert "trying my best"
This reverts commit 9aeece466df0169adec97e3947b061b54fd9b388.
* Revert "Initial edits of files"
This reverts commit 45c6e2343844b5fcafadbf2e5115fb2f241086a1.
* an actual meal
* Added networking to LungComponent.cs
* removed duplicate using
* moving GasRagents to SharedAtmosphereSystem.cs
* Clean up some parts of ExplosionSystem
* Update Content.Shared/Damage/DamageSpecifier.cs
Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
* Review
---------
Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
* Make yaml gas serialization cleaner
* fix exception
* fix validation code
* rudimentary test & permissive loading
* change it a bit
* Test fixes and adjustments
This PR adds delta-pressure damage. In short, airtight structures can now take damage proportional to the difference in pressures between the sides of the structure.
* initial system (this math is probably WRONG)
* General code cleanup and OnExamined support
(holy moly this code sucks)
* UICode and related events foundation
TODO:
- Actually write the XAML UI and the underlying system
- Un-shitcode the entire thing
- Actually test everything...
* Working UI code
TODO: Make predicted, as this certainly isn't predicted. Even though I said it was. It isn't.
* Remove one TODO for unshitcoding the examine code
* Add reminder
yea
* Make predicted (defenitely isn't)
(also defenitely isn't a copypaste from pressure pump code)
* It's predicted!
TODO:
- Give it snazzy predicted visuals!
- Have a different field for pressure entry, lest it gets bulldozed every UI update.
* Improve gas pressure relief valve UI
TODO: Reminder to reduce amount of dirties using deltafields
* Implement DirtyField prediction
* Entity<T> cleanup
A lot of Entity<T> conversions and lukewarm cleanup.
Also got caught copy pasting code in 4K UHD but it's not like you couldn't tell.
* More cleanup and comments
* Remove TODO comment on bulldozing window title
* """refactoring"""
- Move appearance out of shared and finally fix it. Pointless to predict appearance in this instance.
- More Entity<T> conversions because I like them.
- Move UI creation handling over entirely to the ActivatableUI system.
- Fix a hardcoded locale string (why????).
* Add visuals
* Revert debugging variable replacememt
yea
* Revert skissue
* Remove unused using directives and remove TODO
* Localize, cleanup, document
* Fix adminlogging discrepancy
* Add ability to construct, add guidebook entry
* Clear up comment
* Add guidebook tooltip to valve
* Convert GasPressureReliefValveBoundUserInterface declaration into primary constructor
* Adds more input handling and adds autofill on open
* Un-deepfry input validator shitcode
Genuinely what was I smoking
* improve visuals logic
* Refactor again
- Update math to the correct implementation
- Moved code that could be re-used in the future into a helper method under AtmosphereSystem.Gases.cs
* I'm sorry but I hate warnings
* Remove unused using directive in AtmosphereSystem.Gases.cs
* Review and cleanup
* Lukewarm UI glossup
* Maintainer for the upstream project btw
* Remove redundant state sets and messy logic
* Unduplicate valve updater code
* Redo UI (im sorry Slarti)
* run tests
* Test refactored UI messaging
* Second round of UI improvements
- God please find a way to improve this system. Feels bad.
* Update loop implementation
* Further predict UI
* Clear up SetToCurrentThreshold
* cleanup
* Update to master + pipe layers and bug fixes
want to run tests
* fixes
* Deploy rename pipebomb
* Documentation and requested changes
* Rename the method that wiggled away
* Undo rounding changes
* Fix comment
* Rename and cleanup
* Apply suggestions from code review
---------
Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
* fix: only show pipe layer popups to the user changing them
* fix: don't show pipe layer subfloor popup when not using a screwdriver
* fix: properly pass down user and used for serverside pipe layer changes
Technically this doesn't matter as the Shared codepath for this method
doesn't actually use these on the server: only the user is used for a
clientside popup. Still, will be good to have these for future changes
that might need them.
* - Combine enum keys `ToggleableLightVisuals` and `ToggleVisuals` into `ToggleableVisuals`
- Rename `ToggleableLightVisualsComponent` to `ToggleableVisualsComponent` and `ToggleableLightVisualsSystem` to `ToggleableVisualsSystem`
- (The `SpriteLayer` field on the component is now required because the old default of `light` doesn't make sense anymore)
- Make it so that `ToggleableVisualsComponent` works even when there's not a light attached to the entity
- (Amazingly this seems to have only applied to Headphones, but I can only imagine there are many other things people would like to do with simple toggleable visuals)
- Explicitly make `ItemTogglePointLightComponent`'s purpose to make `ToggleVisualsComponent` apply to `PointLightComponent`s on the same entity.
- Add field `ToggleableVisualsColorModulatesLights`, which makes the `Color` appearance value of `ToggleableVisuals` modulate the color of lights on the same entity
- Lots of prototype updates to uptake the above
* fix bad merge
* unbork robust
* blindly letting rider reformat stuff
* I guess I never cleaned up these imports at all
* Make PryTile use Entity<T>
Converts the old parameters into an obsolete overload
* Make HandleDecompressionFloorRip use Entity<T>
Converts the old parameters into an obsolete overload
* Convert the one use to use Entity<T>
* Delete obsolete private methods
* Predicted gas pumps
I wanted to try out atmos and first thing I found.
* a
* Atmos device prediction
- Canisters
- Tanks
- Internals
AirMixes aren't predicted so nothing on that front but all the UIs should be a lot closer.
* Remove details range
* Gas tank prediction
* Even more sweeping changes
* Alerts
* rehg
* Popup fix
* Fix merge conflicts
* Fix
* Review
* Fire extinguishers now put out candles
This did not actually require any changes to flammable or extinguishers directly, the only necessary changes were to make the collision actually work.
Vapor entities (also used for fire extinguishers) now have a collision layer, so they can hit items.
Added a new FlammableSetCollisionWake component to actually enable collision on candles while they are lit, because otherwise CollisionWake on entities gets in the way too.
* Extinguishing items is now relayed to held/worn items
This means held candles get extinguished too.
Involved moving the core logic of ExtinguishReaction into an event so that it can be relayed via the existing hand/inventory relay logic.
* Add helper functions for subscribing to relayed events.
Use these in FlammableSystem
* Make extinguishers work on cigarettes too
A bunch of renaming to make the rest of my code work with SmokableComponent
---------
Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>