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;
 }
Example #2
0
        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);
            }
        }