Add injectors + injected reagent metabolism via BloodstreamCompo… (#730)
* 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.
This commit is contained in:
@@ -1,10 +1,13 @@
|
||||
using Content.Server.GameObjects.Components.Nutrition;
|
||||
using Content.Server.GameObjects.Components.Nutrition;
|
||||
using JetBrains.Annotations;
|
||||
using Robust.Shared.GameObjects;
|
||||
using Robust.Shared.GameObjects.Systems;
|
||||
|
||||
namespace Content.Server.GameObjects.EntitySystems
|
||||
{
|
||||
/// <summary>
|
||||
/// Triggers digestion updates on <see cref="StomachComponent"/>
|
||||
/// </summary>
|
||||
[UsedImplicitly]
|
||||
public class StomachSystem : EntitySystem
|
||||
{
|
||||
@@ -16,8 +19,8 @@ namespace Content.Server.GameObjects.EntitySystems
|
||||
|
||||
public override void Update(float frameTime)
|
||||
{
|
||||
//Update at most once per second
|
||||
_accumulatedFrameTime += frameTime;
|
||||
// TODO: Potential performance improvement (e.g. going through say 1/5th the entities every tick)
|
||||
if (_accumulatedFrameTime > 1.0f)
|
||||
{
|
||||
foreach (var entity in RelevantEntities)
|
||||
|
||||
Reference in New Issue
Block a user