Metabolism fixes (#20402)

* In-progress commit for fixing metabolism system

* Commit with all debugging in there

In case I have to revert or something

* Cleanup debug commands
This commit is contained in:
Waylon Cude
2023-09-22 13:01:42 -07:00
committed by GitHub
parent f16ff3a2d9
commit 9cbcf67b1a
5 changed files with 38 additions and 24 deletions

View File

@@ -14,6 +14,7 @@ public sealed class DrunkOverlay : Overlay
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
[Dependency] private readonly IPlayerManager _playerManager = default!;
[Dependency] private readonly IEntitySystemManager _sysMan = default!;
[Dependency] private readonly IGameTiming _timing = default!;
public override OverlaySpace Space => OverlaySpace.WorldSpace;
public override bool RequestScreenTexture => true;
@@ -34,6 +35,7 @@ public sealed class DrunkOverlay : Overlay
protected override void FrameUpdate(FrameEventArgs args)
{
var playerEntity = _playerManager.LocalPlayer?.ControlledEntity;
if (playerEntity == null)
@@ -47,8 +49,11 @@ public sealed class DrunkOverlay : Overlay
if (!statusSys.TryGetTime(playerEntity.Value, SharedDrunkSystem.DrunkKey, out var time, status))
return;
var timeLeft = (float) (time.Value.Item2 - time.Value.Item1).TotalSeconds;
CurrentBoozePower += (timeLeft - CurrentBoozePower) * args.DeltaSeconds / 16f;
var curTime = _timing.CurTime;
var timeLeft = (float) (time.Value.Item2 - curTime).TotalSeconds;
CurrentBoozePower += 8f * (0.5f*timeLeft - CurrentBoozePower) * args.DeltaSeconds / (timeLeft+1);
}
protected override bool BeforeDraw(in OverlayDrawArgs args)
@@ -83,6 +88,14 @@ public sealed class DrunkOverlay : Overlay
/// <param name="boozePower"></param>
private float BoozePowerToVisual(float boozePower)
{
return Math.Clamp((boozePower - VisualThreshold) / PowerDivisor, 0.0f, 1.0f);
// Clamp booze power when it's low, to prevent really jittery effects
if (boozePower < 50f)
{
return 0;
}
else
{
return Math.Clamp((boozePower - VisualThreshold) / PowerDivisor, 0.0f, 1.0f);
}
}
}