diff --git a/Content.Server/GameObjects/Components/Nutrition/HungerComponent.cs b/Content.Server/GameObjects/Components/Nutrition/HungerComponent.cs index 8a434ca6f8..2c24a5dbb7 100644 --- a/Content.Server/GameObjects/Components/Nutrition/HungerComponent.cs +++ b/Content.Server/GameObjects/Components/Nutrition/HungerComponent.cs @@ -178,14 +178,7 @@ namespace Content.Server.GameObjects.Components.Nutrition public void OnUpdate(float frametime) { _currentHunger -= frametime * ActualDecayRate; - var calculatedHungerThreshold = GetHungerThreshold(_currentHunger); - // _trySound(calculatedThreshold); - if (calculatedHungerThreshold != _currentHungerThreshold) - { - _currentHungerThreshold = calculatedHungerThreshold; - HungerThresholdEffect(); - Dirty(); - } + UpdateCurrentThreshold(); if (_currentHungerThreshold != HungerThreshold.Dead) return; @@ -202,11 +195,22 @@ namespace Content.Server.GameObjects.Components.Nutrition } } + private void UpdateCurrentThreshold() + { + var calculatedHungerThreshold = GetHungerThreshold(_currentHunger); + // _trySound(calculatedThreshold); + if (calculatedHungerThreshold != _currentHungerThreshold) + { + _currentHungerThreshold = calculatedHungerThreshold; + HungerThresholdEffect(); + Dirty(); + } + } + public void ResetFood() { - _currentHungerThreshold = HungerThreshold.Okay; - _currentHunger = HungerThresholds[_currentHungerThreshold]; - HungerThresholdEffect(); + _currentHunger = HungerThresholds[HungerThreshold.Okay]; + UpdateCurrentThreshold(); } public override ComponentState GetComponentState() diff --git a/Content.Server/GameObjects/Components/Nutrition/ThirstComponent.cs b/Content.Server/GameObjects/Components/Nutrition/ThirstComponent.cs index b6a7b031ce..2c4fc1e90a 100644 --- a/Content.Server/GameObjects/Components/Nutrition/ThirstComponent.cs +++ b/Content.Server/GameObjects/Components/Nutrition/ThirstComponent.cs @@ -4,7 +4,6 @@ using Content.Server.GameObjects.Components.Mobs; using Content.Shared.Alert; using Content.Shared.Damage; using Content.Shared.GameObjects.Components.Damage; -using Content.Shared.GameObjects.Components.Mobs; using Content.Shared.GameObjects.Components.Mobs.State; using Content.Shared.GameObjects.Components.Movement; using Content.Shared.GameObjects.Components.Nutrition; @@ -175,14 +174,7 @@ namespace Content.Server.GameObjects.Components.Nutrition public void OnUpdate(float frametime) { _currentThirst -= frametime * ActualDecayRate; - var calculatedThirstThreshold = GetThirstThreshold(_currentThirst); - // _trySound(calculatedThreshold); - if (calculatedThirstThreshold != _currentThirstThreshold) - { - _currentThirstThreshold = calculatedThirstThreshold; - ThirstThresholdEffect(); - Dirty(); - } + UpdateCurrentThreshold(); if (_currentThirstThreshold != ThirstThreshold.Dead) return; @@ -199,11 +191,22 @@ namespace Content.Server.GameObjects.Components.Nutrition } } + private void UpdateCurrentThreshold() + { + var calculatedThirstThreshold = GetThirstThreshold(_currentThirst); + // _trySound(calculatedThreshold); + if (calculatedThirstThreshold != _currentThirstThreshold) + { + _currentThirstThreshold = calculatedThirstThreshold; + ThirstThresholdEffect(); + Dirty(); + } + } + public void ResetThirst() { - _currentThirstThreshold = ThirstThreshold.Okay; - _currentThirst = ThirstThresholds[_currentThirstThreshold]; - ThirstThresholdEffect(); + _currentThirst = ThirstThresholds[ThirstThreshold.Okay]; + UpdateCurrentThreshold(); } public override ComponentState GetComponentState() diff --git a/Content.Shared/GameObjects/Components/Nutrition/SharedHungerComponent.cs b/Content.Shared/GameObjects/Components/Nutrition/SharedHungerComponent.cs index c5e7dc21d5..451e49b2b5 100644 --- a/Content.Shared/GameObjects/Components/Nutrition/SharedHungerComponent.cs +++ b/Content.Shared/GameObjects/Components/Nutrition/SharedHungerComponent.cs @@ -2,6 +2,7 @@ using System; using Content.Shared.GameObjects.Components.Movement; using Robust.Shared.GameObjects; using Robust.Shared.Serialization; +using Robust.Shared.ViewVariables; namespace Content.Shared.GameObjects.Components.Nutrition { @@ -11,6 +12,7 @@ namespace Content.Shared.GameObjects.Components.Nutrition public sealed override uint? NetID => ContentNetIDs.HUNGER; + [ViewVariables] public abstract HungerThreshold CurrentHungerThreshold { get; } @@ -49,6 +51,7 @@ namespace Content.Shared.GameObjects.Components.Nutrition } } + [Serializable, NetSerializable] public enum HungerThreshold : byte { Overfed, diff --git a/Content.Shared/GameObjects/Components/Nutrition/SharedThirstComponent.cs b/Content.Shared/GameObjects/Components/Nutrition/SharedThirstComponent.cs index 3372566550..404586d76e 100644 --- a/Content.Shared/GameObjects/Components/Nutrition/SharedThirstComponent.cs +++ b/Content.Shared/GameObjects/Components/Nutrition/SharedThirstComponent.cs @@ -2,6 +2,7 @@ using System; using Content.Shared.GameObjects.Components.Movement; using Robust.Shared.GameObjects; using Robust.Shared.Serialization; +using Robust.Shared.ViewVariables; namespace Content.Shared.GameObjects.Components.Nutrition { @@ -11,6 +12,7 @@ namespace Content.Shared.GameObjects.Components.Nutrition public sealed override uint? NetID => ContentNetIDs.THIRST; + [ViewVariables] public abstract ThirstThreshold CurrentThirstThreshold { get; } float IMoveSpeedModifier.SprintSpeedModifier @@ -49,6 +51,7 @@ namespace Content.Shared.GameObjects.Components.Nutrition } + [NetSerializable, Serializable] public enum ThirstThreshold : byte { // Hydrohomies