using System; using Sirenix.OdinInspector; using VOID.Generic.Dict; namespace VOID.Generic.Objects.Unit.Data { [Serializable] public record UnitResources { [MinValue(0f)] public float actionPoints = 2f; [MinValue(0f)] public float movePoints = 0f; public float Get(UnitResourceType type) { return type switch { UnitResourceType.ActionPoints => actionPoints, UnitResourceType.MovePoints => movePoints, _ => throw new ArgumentOutOfRangeException(nameof(type), type, null) }; } public void Set(UnitResourceType type, float value) { switch(type) { case UnitResourceType.ActionPoints: actionPoints = value; return; case UnitResourceType.MovePoints: movePoints = value; return; default: throw new ArgumentOutOfRangeException(nameof(type), type, null); }; } } }