Files
tbd-station-14/Content.Shared/Friction/TileFrictionModifier.cs
metalgearsloth b87806f7ed Fix some build warnings (#6832)
Co-authored-by: metalgearsloth <metalgearsloth@gmail.com>
2022-02-21 14:41:50 +11:00

56 lines
1.6 KiB
C#

using System;
using Robust.Shared.GameObjects;
using Robust.Shared.Maths;
using Robust.Shared.Players;
using Robust.Shared.Serialization;
using Robust.Shared.Serialization.Manager.Attributes;
using Robust.Shared.ViewVariables;
namespace Content.Shared.Friction
{
[RegisterComponent]
public sealed class TileFrictionModifierComponent : Component
{
/// <summary>
/// Multiply the tilefriction cvar by this to get the body's actual tilefriction.
/// </summary>
[ViewVariables(VVAccess.ReadWrite)]
public float Modifier
{
get => _modifier;
set
{
if (MathHelper.CloseToPercent(_modifier, value)) return;
_modifier = value;
}
}
[DataField("modifier")]
private float _modifier = 1.0f;
public override ComponentState GetComponentState()
{
return new TileFrictionComponentState(_modifier);
}
public override void HandleComponentState(ComponentState? curState, ComponentState? nextState)
{
base.HandleComponentState(curState, nextState);
if (curState is not TileFrictionComponentState tileState) return;
_modifier = tileState.Modifier;
}
[NetSerializable, Serializable]
private sealed class TileFrictionComponentState : ComponentState
{
public float Modifier;
public TileFrictionComponentState(float modifier)
{
Modifier = modifier;
}
}
}
}