From a9fc5130bb1e55f8d5c70ac2a4fbde54c01f8b2c Mon Sep 17 00:00:00 2001 From: PopSlime Date: Wed, 19 Apr 2023 15:33:17 +0800 Subject: [PATCH] Move `BeatTime` to separate file. --- Assets/Cryville/Crtr/BeatTime.cs | 79 +++++++++++++++++++++++++++ Assets/Cryville/Crtr/BeatTime.cs.meta | 11 ++++ Assets/Cryville/Crtr/Chart.cs | 77 -------------------------- 3 files changed, 90 insertions(+), 77 deletions(-) create mode 100644 Assets/Cryville/Crtr/BeatTime.cs create mode 100644 Assets/Cryville/Crtr/BeatTime.cs.meta diff --git a/Assets/Cryville/Crtr/BeatTime.cs b/Assets/Cryville/Crtr/BeatTime.cs new file mode 100644 index 0000000..fdee411 --- /dev/null +++ b/Assets/Cryville/Crtr/BeatTime.cs @@ -0,0 +1,79 @@ +using Newtonsoft.Json; +using System; + +namespace Cryville.Crtr { + [JsonConverter(typeof(BeatTimeConverter))] + public struct BeatTime : IComparable, IEquatable { + public BeatTime(int _b, int _n, int _d) { + b = _b; + n = _n; + d = _d; + } + public BeatTime(int _n, int _d) { + b = _n / _d; + n = _n % _d; + d = _d; + } + + [JsonIgnore] + public int b; + + [JsonIgnore] + public int n; + + [JsonIgnore] + public int d; + + [JsonIgnore] + public double Decimal { get { return b + (double)n / d; } } + + public int CompareTo(BeatTime other) { + var c = b.CompareTo(other.b); + if (c != 0) return c; + return ((double)n / d).CompareTo((double)other.n / other.d); + } + + public override bool Equals(object obj) { + if (!(obj is BeatTime)) return false; + return Equals((BeatTime)obj); + } + + public bool Equals(BeatTime other) { + return b.Equals(other.b) && ((double)n / d).Equals((double)other.n / other.d); + } + + public override int GetHashCode() { + return Decimal.GetHashCode(); + } + + public static bool operator ==(BeatTime left, BeatTime right) { + return left.Equals(right); + } + + public static bool operator !=(BeatTime left, BeatTime right) { + return !left.Equals(right); + } + } + public class BeatTimeConverter : JsonConverter { + public override bool CanConvert(Type objectType) { + return objectType == typeof(int[]); + } + + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { + int b = (int)reader.ReadAsInt32(); + int n = (int)reader.ReadAsInt32(); + int d = (int)reader.ReadAsInt32(); + reader.Read(); + return new BeatTime(b, n, d); + } + + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { + BeatTime obj = (BeatTime)value; + writer.WriteStartArray(); + writer.WriteValue(obj.b); + writer.WriteValue(obj.n); + writer.WriteValue(obj.d); + writer.WriteEndArray(); + } + } +} diff --git a/Assets/Cryville/Crtr/BeatTime.cs.meta b/Assets/Cryville/Crtr/BeatTime.cs.meta new file mode 100644 index 0000000..a24867a --- /dev/null +++ b/Assets/Cryville/Crtr/BeatTime.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f29ed034a9faa27409d153dbd9a46f95 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Cryville/Crtr/Chart.cs b/Assets/Cryville/Crtr/Chart.cs index 614752b..88ece50 100644 --- a/Assets/Cryville/Crtr/Chart.cs +++ b/Assets/Cryville/Crtr/Chart.cs @@ -10,83 +10,6 @@ using System.Text.RegularExpressions; using UnsafeIL; namespace Cryville.Crtr { - [JsonConverter(typeof(BeatTimeConverter))] - public struct BeatTime : IComparable, IEquatable { - [JsonConstructor()] - public BeatTime(int _b, int _n, int _d) { - b = _b; - n = _n; - d = _d; - } - public BeatTime(int _n, int _d) { - b = _n / _d; - n = _n % _d; - d = _d; - } - - [JsonIgnore] - public int b; - - [JsonIgnore] - public int n; - - [JsonIgnore] - public int d; - - [JsonIgnore] - public double Decimal { get { return b + (double)n / d; } } - - public int CompareTo(BeatTime other) { - var c = b.CompareTo(other.b); - if (c != 0) return c; - return ((double)n / d).CompareTo((double)other.n / other.d); - } - - public override bool Equals(object obj) { - if (!(obj is BeatTime)) return false; - return Equals((BeatTime)obj); - } - - public bool Equals(BeatTime other) { - return b.Equals(other.b) && ((double)n / d).Equals((double)other.n / other.d); - } - - public override int GetHashCode() { - return Decimal.GetHashCode(); - } - - public static bool operator ==(BeatTime left, BeatTime right) { - return left.Equals(right); - } - - public static bool operator !=(BeatTime left, BeatTime right) { - return !left.Equals(right); - } - } - - public class BeatTimeConverter : JsonConverter { - public override bool CanConvert(Type objectType) { - return objectType == typeof(int[]); - } - - public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { - int b = (int)reader.ReadAsInt32(); - int n = (int)reader.ReadAsInt32(); - int d = (int)reader.ReadAsInt32(); - reader.Read(); - return new BeatTime(b, n, d); - } - - public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - BeatTime obj = (BeatTime)value; - writer.WriteStartArray(); - writer.WriteValue(obj.b); - writer.WriteValue(obj.n); - writer.WriteValue(obj.d); - writer.WriteEndArray(); - } - } - public abstract class ChartEvent { public BeatTime? time;