Example #1
0
        /// <summary>
        ///     使用字符串构造一个Sprite对象
        /// </summary>
        /// <param name="dataline"></param>
        public void Parse(string dataline)
        {
            if (!dataline.StartsWith("Sprite,") && !dataline.StartsWith("4,"))
            {
                throw new FailToParseException("该行的数据不适用。");
            }

            var data   = dataline.Split(',');
            var sprite = data[0];
            var suc    = int.TryParse(data[1], out var layer);

            if (!suc)
            {
                Layer = StoryBoardTools.GetLayerByString(data[1]);
            }
            else
            {
                Layer = (StoryBoardLayer)layer;
            }

            suc = int.TryParse(data[2], out var origin);
            if (!suc)
            {
                Origin = StoryBoardTools.GetOriginByString(data[2]);
            }
            else
            {
                Origin = (StoryBoardOrigin)origin;
            }
            Path     = data[3].Trim('\"');
            Position = new OsuPixel(double.Parse(data[4]), double.Parse(data[5]));
        }
Example #2
0
        /// <summary>
        ///     将字符串解析成Fade
        /// </summary>
        /// <param name="data"></param>
        public void Parse(string data)
        {
            while (data.StartsWith(" "))
            {
                data = data.Remove(0, 1);
            }
            var parts = data.Split(',');

            if (parts[0] != "F")
            {
                throw new ArgumentException("该行的数据不适用。");
            }
            var ed = parts[3];

            if (string.IsNullOrEmpty(ed))
            {
                parts[3] = parts[2];
            }
            var suc = int.TryParse(parts[1], out var eas);

            if (suc)
            {
                Easing = (StoryBoardEasing)eas;
            }
            else
            {
                Easing = StoryBoardTools.GetStoryBoardEasingByString(parts[1]);
            }
            StartTime = int.Parse(parts[2]);
            EndTime   = int.Parse(parts[3]);
            var i = 4;
            var j = 1;

            if (i + 1 == parts.Length)
            {
                Translations.Add(
                    new FadeTranslation(double.Parse(parts[4]), double.Parse(parts[4]), StartTime, EndTime));
            }
            while (true)
            {
                var stindex = i;
                var st      = double.Parse(parts[i++]);
                var end     = double.Parse(parts[i]); /*(parts[i + 1 < parts.Length ? i++ : i + 1 == parts.Length ? i : stindex])*/;
                var dur     = EndTime - StartTime;
                Translations.Add(new FadeTranslation(st, end, StartTime + dur * j, EndTime + dur * j));
                if (i + 1 < parts.Length)
                {
                    i--;
                }
                j++;
                if (i + 1 >= parts.Length)
                {
                    break;
                }
            }
        }
Example #3
0
        /// <summary>
        ///     将字符串解析成Fade
        /// </summary>
        /// <param name="data"></param>
        public void Parse(string data)
        {
            var parts = data.Split(',');
            var suc   = int.TryParse(parts[1], out var eas);

            if (suc)
            {
                Easing = (StoryBoardEasing)eas;
            }
            else
            {
                Easing = StoryBoardTools.GetStoryBoardEasingByString(parts[1]);
            }
            StartTime = int.Parse(parts[2]);
            var ed = parts[3];

            if (string.IsNullOrEmpty(ed))
            {
                parts[3] = parts[2];
            }
            EndTime = int.Parse(parts[3]);
            var i = 4;
            var j = 1;

            if (i + 3 == parts.Length)
            {
                Translations.Add(new ColorTranslation(
                                     new RgbColor(int.Parse(parts[4]), int.Parse(parts[5]), int.Parse(parts[6])),
                                     new RgbColor(int.Parse(parts[4]), int.Parse(parts[5]), int.Parse(parts[6])), StartTime, EndTime));
            }
            while (i + 3 < parts.Length)
            {
                var r   = int.Parse(parts[i + 1 < parts.Length ? i++ : i]);
                var g   = int.Parse(parts[i + 1 < parts.Length ? i++ : i]);
                var b   = int.Parse(parts[i + 1 < parts.Length ? i++ : i]);
                var er  = int.Parse(parts[i + 1 < parts.Length ? i++ : i == parts.Length ? r : i]);
                var eg  = int.Parse(parts[i + 1 < parts.Length ? i++ : i == parts.Length ? r : i]);
                var eb  = int.Parse(parts[i + 1 < parts.Length ? i++ : i == parts.Length ? r : i]);
                var dur = EndTime - StartTime;
                Translations.Add(new ColorTranslation(new RgbColor(r, b, g), new RgbColor(er, eb, eg),
                                                      StartTime + j * dur, EndTime + j * dur));
                j++;
                if (i + 1 < parts.Length)
                {
                    i -= 3;
                }
            }
        }
Example #4
0
        /// <summary>
        ///     使用字符串构建一个Move对象
        /// </summary>
        /// <param name="data"></param>
        public void Parse(string data)
        {
            var datas = data.Split(',');

            if (int.TryParse(datas[1], out var eas))
            {
                Easing = (StoryBoardEasing)eas;
            }
            else
            {
                Easing = StoryBoardTools.GetStoryBoardEasingByString(datas[1]);
            }
            StartTime = int.Parse(datas[2]);
            var ed = datas[3];

            if (string.IsNullOrEmpty(ed))
            {
                datas[3] = datas[2];
            }
            EndTime = int.Parse(datas[3]);
            int i = 4, j = 0;

            if (i + 2 == datas.Length)
            {
                Translations.Add(new MoveTranslation(
                                     new StoryBoardPoint(double.Parse(datas[4]), double.Parse(datas[5])),
                                     new StoryBoardPoint(double.Parse(datas[4]), double.Parse(datas[5])),
                                     StartTime, EndTime));
            }
            while (i + 2 < datas.Length)
            {
                var stindex = i;
                var stx     = double.Parse(datas[i++]);
                var sty     = double.Parse(datas[i++]);
                var edx     = double.Parse(datas[i + 1 < datas.Length ? i++ : i + 1 == datas.Length ? i : stindex]);
                var edy     = double.Parse(datas[i + 1 < datas.Length ? i++ : i + 1 == datas.Length ? i : stindex + 1]);
                var dur     = EndTime - StartTime;
                Translations.Add(new MoveTranslation(new StoryBoardPoint(stx, sty),
                                                     new StoryBoardPoint(edx, edy),
                                                     StartTime + j * dur, EndTime + j * dur));
                j++;
                if (i + 1 < datas.Length)
                {
                    i -= 2;
                }
            }
        }
Example #5
0
        /// <inheritdoc />

        public void Parse(string line)
        {
            var datas = line.Split(',');

            if (int.TryParse(datas[1], out var eas))
            {
                Easing = (StoryBoardEasing)eas;
            }
            else
            {
                Easing = StoryBoardTools.GetStoryBoardEasingByString(datas[1]);
            }
            if (string.IsNullOrEmpty(datas[3]))
            {
                datas[3] = datas[2];
            }
            StartTime = int.Parse(datas[2]);
            EndTime   = int.Parse(datas[3]);
            int i = 4, j = 0;

            if (i + 2 == datas.Length)
            {
                Translations.Add(new VectorScaleTranslation(
                                     new VectorScaleMultiplier(double.Parse(datas[4]), double.Parse(datas[5])),
                                     new VectorScaleMultiplier(double.Parse(datas[4]), double.Parse(datas[5])),
                                     StartTime, EndTime));
            }
            while (i + 2 < datas.Length)
            {
                var stindex   = i;
                var initindex = i;
                var xst       = double.Parse(datas[i++]);
                var xed       = double.Parse(datas[i + 1 < datas.Length ? i++ : i + 1 == datas.Length ? i : stindex]);
                var yst       = double.Parse(datas[i + 1 < datas.Length ? i++ : i + 1 == datas.Length ? i : initindex]);
                var yed       = double.Parse(datas[i + 1 < datas.Length ? i++ : i + 1 == datas.Length ? i : initindex]);
                var dur       = EndTime - StartTime;
                Translations.Add(new VectorScaleTranslation(new VectorScaleMultiplier(xst, xed),
                                                            new VectorScaleMultiplier(yst, yed), StartTime + j * dur, EndTime + j * dur));
                j++;
                if (i + 1 < datas.Length)
                {
                    i -= 2;
                }
            }
        }
Example #6
0
        ///<inheritdoc/>

        public void Parse(string line)
        {
            var parts = line.Split(',');

            if (int.TryParse(parts[1], out var eas))
            {
                Easing = (StoryBoardEasing)eas;
            }
            else
            {
                Easing = StoryBoardTools.GetStoryBoardEasingByString(parts[1]);
            }
            StartTime = int.Parse(parts[2]);
            if (string.IsNullOrEmpty(parts[3]))
            {
                parts[3] = parts[2];
            }
            EndTime = int.Parse(parts[3]);
            var i = 4;
            var j = 0;

            if (i + 1 == parts.Length)
            {
                Translations.Add(new RotateTranslation(new Degrees(double.Parse(parts[4]), false),
                                                       new Degrees(double.Parse(parts[4]), false), StartTime, EndTime));
            }
            while (i + 1 < parts.Length)
            {
                var stindex = i;
                var st      = double.Parse(parts[i++]);
                var ed      = double.Parse(parts[i + 1 < parts.Length ? i++ : i + 1 == parts.Length ? i : stindex]);
                var du      = EndTime - StartTime;
                Translations.Add(new RotateTranslation(new Degrees(st, false), new Degrees(ed, false),
                                                       StartTime + j * du,
                                                       EndTime + j * du));
                j++;
                if (i + 1 < parts.Length)
                {
                    i--;
                }
            }
        }
Example #7
0
        /// <inheritdoc />
        public void Parse(string dataline)
        {
            if (!dataline.StartsWith("Animation,") && !dataline.StartsWith("6,"))
            {
                throw new FailToParseException("该行的数据不适用。");
            }

            var data = dataline.Split(',');
            var suc  = int.TryParse(data[1], out var layer);

            if (!suc)
            {
                Layer = StoryBoardTools.GetLayerByString(data[1]);
            }
            else
            {
                Layer = (StoryBoardLayer)layer;
            }

            suc = int.TryParse(data[2], out var origin);
            if (!suc)
            {
                Origin = StoryBoardTools.GetOriginByString(data[2]);
            }
            else
            {
                Origin = (StoryBoardOrigin)origin;
            }
            Path       = data[3].Trim('\"');
            Position   = new OsuPixel(double.Parse(data[4]), double.Parse(data[5]));
            FrameCount = double.Parse(data[6]);
            FrameDelay = double.Parse(data[7]);
            suc        = int.TryParse(data[8], out var loopType);
            if (!suc)
            {
                LoopType = StoryBoardTools.GetLoopTypeByString(data[8]);
            }
            else
            {
                LoopType = (StoryBoardAnimationLoopType)loopType;
            }
        }
Example #8
0
        ///<inheritdoc/>
        public void Parse(string line)
        {
            var parts = line.Split(',');

            if (int.TryParse(parts[1], out var eas))
            {
                Easing = (StoryBoardEasing)eas;
            }
            else
            {
                Easing = StoryBoardTools.GetStoryBoardEasingByString(parts[1]);
            }
            var ed = parts[3];

            if (string.IsNullOrEmpty(ed))
            {
                parts[3] = parts[2];
            }
            StartTime = int.Parse(parts[2]);
            EndTime   = int.Parse(parts[3]);
            int i = 4, j = 0;

            if (i + 1 == parts.Length)
            {
                Translations.Add(new MoveYTranslation(double.Parse(parts[4]), double.Parse(parts[4]), StartTime,
                                                      EndTime));
            }
            while (i + 1 < parts.Length)
            {
                var stindex = i;
                var st      = double.Parse(parts[i++]);
                var end     = double.Parse(parts[i + 1 < parts.Length ? i++ : i + 1 == parts.Length ? i : stindex]);
                var dur     = EndTime - StartTime;
                Translations.Add(new MoveYTranslation(st, end, StartTime + j * dur, EndTime + j * dur));
                j++;
                if (i + 1 < parts.Length)
                {
                    i--;
                }
            }
        }
Example #9
0
        /// <inheritdoc />
        public void Parse(string line)
        {
            var parts = line.Split(',');

            if (int.TryParse(parts[1], out var eas))
            {
                Easing = (StoryBoardEasing)eas;
            }
            else
            {
                Easing = StoryBoardTools.GetStoryBoardEasingByString(parts[1]);
            }
            StartTime = int.Parse(parts[2]);
            if (string.IsNullOrEmpty(parts[3]))
            {
                parts[3] = parts[2];
            }
            EndTime = int.Parse(parts[3]);
            var op = parts[4];

            Operation = op == "A" ? ParameterOperation.AddictiveColorBlend :
                        op == "H" ? ParameterOperation.HorizentalFlip :
                        op == "V" ? ParameterOperation.VerticalFlip : ParameterOperation.None;
        }