public OsuHitObject(int X = 0, int Y = 0, int Time = 0, OsuHitObjectType Type = default, OsuHitSound HitSound = default, string[] ObjectParams = default, OsuHitSample HitSample = default) { this.X = X; this.Y = Y; this.Time = Time; this.Type = Type; this.HitSound = HitSound; this.ObjectParams = ObjectParams; this.HitSample = HitSample; }
public static OsuHitObject GetHitObject(string Value) { List <string> Values = Value.SeparateCommaList(StringSplitOptions.RemoveEmptyEntries).ToList(); int X = 0, Y = 0, Time = 0; OsuHitObjectType Type = default; OsuHitSound HitSound = default; OsuHitSample HitSample = default; List <string> ObjectParams = new List <string>(); int I = 0; int L = Values.Count; //Debug.WriteLine("\t\t\tIteration Prepared..."); foreach (string V in Values) { switch (I) { case 0: //X //Debug.WriteLine($"\t\t\t\tGot X: {X}"); X = V.ConvertToInt(0); break; case 1: //Y //Debug.WriteLine($"\t\t\t\tGot Y: {Y}"); Y = V.ConvertToInt(0); break; case 2: //Time //Debug.WriteLine($"\t\t\t\tGot Time: {Time}"); Time = V.ConvertToInt(0); break; case 3: //Type //Debug.WriteLine($"\t\t\t\tGot Type: {Type}"); Type = V.ConvertToEnum <OsuHitObjectType>(); break; case 4: //HitSound //Debug.WriteLine($"\t\t\t\tGot HitSound: {HitSound}"); HitSound = V.ConvertToEnum <OsuHitSound>(); break; default: //Debug.WriteLine($"\t\t\t\tGot Param: {V}"); if (I <= L - 1) //Last Value: HitSample //Debug.WriteLine("\t\t\t\t\t=>Actually a HitSample"); { HitSample = GetHitSample(V); } else //All values before last: ObjectParams { ObjectParams.Add(V); } break; } I++; } //Debug.WriteLine($"\t\t\tType: {Type}"); switch (Type) { case OsuHitObjectType.HitCircle: case OsuHitObjectType.NewCombo: case OsuHitObjectType.SkipOneCombo: case OsuHitObjectType.SkipTwoCombos: case OsuHitObjectType.SkipThreeCombos: //Debug.WriteLine("\t\t\t=>HitObject"); return(new OsuHitObject(X, Y, Time, Type, HitSound, ObjectParams.ToArray(), HitSample)); case OsuHitObjectType.Slider: //Debug.WriteLine("\t\t\t=>HitObjectSlider"); return(new OsuHitObjectSlider(X, Y, Time, Type, HitSound, ObjectParams.ToArray(), HitSample)); case OsuHitObjectType.Spinner: //Debug.WriteLine("\t\t\t=>HitObjectSpinner"); return(new OsuHitObjectSpinner(X, Y, Time, Type, HitSound, ObjectParams.ToArray(), HitSample)); case OsuHitObjectType.OsuManiaHold: //Debug.WriteLine("\t\t\t=>HitObjectManiaHold"); return(new OsuHitObjectManiaHold(X, Y, Time, Type, HitSound, ObjectParams.ToArray(), HitSample)); default: //throw new ArgumentOutOfRangeException(); return(null); } }