* Draft PR, do not merge
* Lathe now uses animations. Timing is still wrong, code is very wet, repetitions and unused layers are there.
* Removed (unneeded?) PowerDeviceVisualizer from the lathe
Refactored & Renamed code and variables
Renamed animation names
* WIP protolathe animation
* Working protolathe animation.
I still don't like the solution though.
* Add BloodstreamComponent and BloodstreamSystem
New component for metabolizing reagents that other organs like the stomach pass their input reagents to.
* Change StomachComponent to put ingested reagents in bloodstream after delay
Now StomachComponent does not metabolize any reagents. Instead, it tracks how long each reagent has been inside it, and once they pass "digestionDelay" they'll be put inside the bloodstream, where the bloodstream will handle metabolism of the reagent.
* Add reagent injectors
Injects reagents straight into the bloodstream when used on mobs with bloodstreams. Also allows draw/inject from beakers. Does not support drawing blood/reagents from the bloodstream yet.
* Address code review
Make use of `Loc` static class instead of using `ILocalizationManager`. Localize InjectorToggleMode enum properly.
* Fix crash in CameraRecoilComponent from NaN values
Doesn't proceed with camera shake if either component of recoil is NaN.
* Log NaN recoil value in CameraRecoilComponent
* Fix ExplosionHelper passing NaN recoil values when exploding from hand
With other commits CameraRecoilComponent now won't crash from NaN recoil values. Still want to fix this so explosions shake the camera. Just sets a value slightly greater than 0.0 for distance if it is (0.0, 0.0)
* Update & improve tutorial window
- Fix scroll bar not showing up till window is resized/scrolled.
- Update keybinds and information.
- Add "quick controls" before detailed explanation for quick reference.
- Add section headers with larger font.
* Add more keybinds
Adds more keybinds from keybinds.yml
* Address code review
- Remove paragraph explaining controls in favor of quick list.
- Remove use of ForceRunLayoutUpdate(). Need to find bug causing scroll bar to not show up until resize. Can do in separate PR.
* Add gameplay section
Adds gameplay section with some important notes on respawning and combat node.
* Fix typo
"it's keybind" -> "its keybind"
* Several sandbox manager improvements
- Bound sandbox manager to B key as it lists on the UI
- Bound entity spawner to F5
- Bound tile spawner to F6
- Made entity spawner and tile spawner toggle instead of repeated spawning new windows from the sandbox panel
* Move relevant keyfunctions from engine to content
Turns out it was unnecessary to have the key functions in the engine as all code using the ones added here are in content.
* Add click-based solution transfer
For example, clicking on a beaker with a soda can to transfer the soda to the beaker. Works on plain solution containers like beakers and also on open drink containers like soda cans as long as they have the `PourIn` and `PourOut` solution capabilities. If no `SolutionComponent` is added to a drink entity, the `DrinkComponent` will give the entity one. This PR extends that behavior slightly by also giving these default `SolutionComponent`'s the proper capabilities for pouring in/out.
* Improve fix for poured drinks not immediately disappearing
Instead of making `DrinkComponent.Use` public this
splits out the code important to both users and made that function public, leaving `Use` private.
* Shorten solution transfer popup
* Make code review changes
- Move pouring code from SolutionComponent to new PourableComponent. Added PourableComponent to client ignore list and added to existing container prototypes.
- Added EmptyVolume property to shared SolutionComponent for convenience.
- Removed DrinkComponent fix from pouring AttackBy code. Instead DrinkComponent subscribes to the SolutionChanged action and updates its self when necessary.
- Fixed pouring being able to add more than a containers max volume and sometimes deleting reagents.
- Added message for when a container is full.
* More code review changes
- Remove IAttackBy ComponentReference attribute in PourableComponent
- Remove _transferAmount from shared SolutionComponent. Left over var from previous commit not being used anymore.