using System; using LibAC.NBT.API; namespace LibAC.NBT { public class FloatTag : Tag { public float value { get; private set; } = 0.0f; public FloatTag() { } private FloatTag(float value) { this.value = value; } public static FloatTag ValueOf(float value) { return new FloatTag(value); } public override void ReadValue(ByteLayer data) { value = data.ReadFloat(); } public override void WriteValue(ByteLayer data) { data.WriteFloat(value); } public override TagType GetTagType() { return TagType.Float; } public override object GetValue() { return value; } public override void SetValue(object val) { if (val is float) { value = (float)val; } } public override void PrettyPrint(int indent, bool recurse) { Console.WriteLine($"{new string('\t', indent)}{Tag.GetCanonicalName(GetTagType())}: {value}"); } public override void WriteStringifiedValue(StringBuilder builder, int indent, bool isList) { builder.Append($"{(isList ? new string('\t', indent) : "")}{value}f"); } public override void ReadStringifiedValue(StringReader reader) { value = float.Parse(reader.ReadNumber()); reader.Expect('f'); } } }