public override void Generate()
        {
            List <OsbSprite> LyricsSprites = new List <OsbSprite>();

            foreach (char c in LyricsContent)
            {
                string    char_path = System.IO.Path.Combine(CharPath, $"{(int)c}.png");
                OsbSprite sprite    = GetLayer("BeginningContentsEffects").CreateSprite(char_path, OsbOrigin.CentreLeft);
                LyricsSprites.Add(sprite);
            }

            float font_size_len = 128 * FontScale;

            //显示字幕
            for (int i = 0; i < LyricsSprites.Count; i++)
            {
                var sprite = LyricsSprites[i];
                sprite.Fade(OsbEasing.None, StartTime + i * FadeInTimeInv, StartTime + 500 + i * FadeInTimeInv, 0, 1);
                sprite.Fade(OsbEasing.None, EndTime - 500, EndTime, 1, 0);

                var postion = new CommandPosition(Position.X + (font_size_len + UnitOffset) * i, Position.Y);
                sprite.Move(StartTime, postion.X, postion.Y);
                sprite.Scale(StartTime, FontScale);
            }
        }
Esempio n. 2
0
        private void convertToCommands(OsbSprite sprite, double?startTime, double?endTime, double timeOffset, bool loopable)
        {
            var startStateTime = loopable ? (startTime ?? StartState.Time) + timeOffset : (double?)null;
            var endStateTime   = loopable ? (endTime ?? EndState.Time) + timeOffset : (double?)null;

            finalPositions.ForEachPair((start, end) => sprite.Move(start.Time, end.Time, start.Value, end.Value), new Vector2(320, 240),
                                       p => new Vector2((float)Math.Round(p.X, PositionDecimals), (float)Math.Round(p.Y, PositionDecimals)), startStateTime, loopable: loopable);
            var useVectorScaling = finalScales.Any(k => k.Value.X != k.Value.Y);

            finalScales.ForEachPair((start, end) =>
            {
                if (useVectorScaling)
                {
                    sprite.ScaleVec(start.Time, end.Time, start.Value, end.Value);
                }
                else
                {
                    sprite.Scale(start.Time, end.Time, start.Value.X, end.Value.X);
                }
            }, Vector2.One, s => new Vector2((float)Math.Round(s.X, ScaleDecimals), (float)Math.Round(s.Y, ScaleDecimals)), startStateTime, loopable: loopable);
            finalRotations.ForEachPair((start, end) => sprite.Rotate(start.Time, end.Time, start.Value, end.Value), 0,
                                       r => (float)Math.Round(r, RotationDecimals), startStateTime, loopable: loopable);
            finalColors.ForEachPair((start, end) => sprite.Color(start.Time, end.Time, start.Value, end.Value), CommandColor.White,
                                    c => CommandColor.FromRgb(c.R, c.G, c.B), startStateTime, loopable: loopable);
            finalOpacities.ForEachPair((start, end) => sprite.Fade(start.Time, end.Time, start.Value, end.Value), -1,
                                       o => (float)Math.Round(o, OpacityDecimals), startStateTime, endStateTime, loopable: loopable);

            flipH.ForEachFlag((fromTime, toTime) => sprite.FlipH(fromTime, toTime));
            flipV.ForEachFlag((fromTime, toTime) => sprite.FlipV(fromTime, toTime));
            additive.ForEachFlag((fromTime, toTime) => sprite.Additive(fromTime, toTime));
        }
Esempio n. 3
0
 public void ApplyTo(OsbSprite sprite)
 {
     foreach (var c in commands)
     {
         sprite.Move(c.Easing, c.StartTime, c.EndTime, c.StartValue, c.EndValue);
     }
 }
Esempio n. 4
0
        public override void Generate()
        {
            var layer = GetLayer("bg");
            var bg    = layer.CreateSprite("Yuuuuuuukina.jpg", OsbOrigin.Centre);

            bg.Fade(0, 0);
            var bottom = layer.CreateSprite("sb/blend.png", OsbOrigin.Centre);
            var top    = layer.CreateSprite("sb/blend.png", OsbOrigin.Centre);

            OsbSprite[] allParts = new OsbSprite[] { top, bottom };
            foreach (OsbSprite elem in allParts)
            {
                elem.ScaleVec(0, 3.0, 1.2);
                elem.Fade(OsbEasing.In, 5623, 5801, 0, 1);
                elem.Fade(OsbEasing.In, 100771, 100949, 1, 0);
            }

            // Bottom
            bottom.Rotate(0, Math.PI / 6);
            bottom.Move(0, 0, 240);
            bottom.ColorHsb(0, 9, 0.51, 0.15);

            // Top
            top.Rotate(0, Math.PI / 6 + Math.PI);
            top.Move(0, 330, 30);
            top.ColorHsb(0, 13, 0.74, 0.85);
        }
Esempio n. 5
0
 public static OsbSprite bounceEffect(double startTime, OsbSprite sprite)
 {
     sprite.Scale(OsbEasing.InCubic, startTime, startTime + Constants.beatLength / 4, Constants.screenScale, 0.69);
     startTime = startTime + Constants.beatLength / 4;
     sprite.Scale(OsbEasing.OutCubic, startTime, startTime + Constants.beatLength / 4, 0.69, Constants.screenScale);
     return(sprite);
 }
        public override void Generate()
        {
            var layer = GetLayer("Desk");

            var desk = layer.CreateSprite("sb/scenes/desk.jpg", OsbOrigin.Centre);

            desk.Fade(22169, 1);
            desk.Scale(OsbEasing.OutCirc, 22169, 22624, 1.65, Constants.screenScale);
            desk.Rotate(OsbEasing.OutCirc, 22169, 22624, Math.PI / 4, 0);
            desk.Fade(58078, 0);

            Helpers.bounceEffect(22624, desk);

            var deskR = layer.CreateSprite("sb/scenes/deskR.jpg", OsbOrigin.Centre);

            deskR.Fade(22169, 0.7);
            deskR.Fade(22169, 22624, desk.OpacityAt(22283), 0);
            deskR.Scale(OsbEasing.OutCirc, 22169, 22624, 1.65, Constants.screenScale);
            deskR.Rotate(OsbEasing.OutCirc, 22169, 22624, Math.PI / 4, 0);

            // Meguru Expressions
            Vector2 face = Helpers.locationHandler(601f, 452f);

            Helpers.moveScaleAndFade("sb/scenes/deskLayer1.jpg", 30124, 36487, face.X, face.Y, layer);
            Helpers.moveScaleAndFade("sb/scenes/deskLayer2.jpg", 36260, 40124, face.X, face.Y, layer);
            Helpers.moveScaleAndFade("sb/scenes/deskLayer3.jpg", 39896, 43533, face.X, face.Y, layer);
            Helpers.moveScaleAndFade("sb/scenes/deskLayer2.jpg", 43305, 47396, face.X, face.Y, layer);
            Helpers.moveScaleAndFade("sb/scenes/deskLayer4.jpg", 47169, 51033, face.X, face.Y, layer);
            OsbSprite deskFinal = Helpers.moveScaleAndFadeIn("sb/scenes/deskLayer5.jpg", 50805, 58533, face.X, face.Y, layer);

            deskFinal.Fade(58078, 0);
        }
Esempio n. 7
0
        public static OsbSprite moveScaleAndFade(string path, double startTime, double endTime, double x, double y, StoryboardLayer layer)
        {
            OsbSprite sprite = moveScaleAndFadeIn(path, startTime, endTime, x, y, layer);

            sprite.Fade(endTime, endTime + Constants.beatLength / 4, 1, 0);
            return(sprite);
        }
Esempio n. 8
0
        public override void Generate()
        {
            var       layer = GetLayer("gears");
            OsbSprite gear  = layer.CreateSprite("sb/gears/gear" + gearNumber + ".png", OsbOrigin.Centre);

            gear.Scale(0, scale);
            gear.Move(startTime - beatLength / 2, xPos, yPos);
            gear.Rotate(0, Math.PI * initialRotation);
            gear.Fade(OsbEasing.InExpo, startTime - beatLength / 2, startTime, 0, 1);
            gear.Rotate(startTime - beatLength / 2, endTime, initialRotation, initialRotation + Math.PI * rotationAmount * (clockwise ? -1 : 1));

            if (fall)
            {
                Random rnd  = new Random();
                double newX = xPos + (clockwise ? 1 : -1) * (rnd.Next(20));
                double newY = yPos + rnd.Next(30, 60);
                gear.Move(OsbEasing.OutCirc, fallTime, collapseTime, gear.PositionAt(fallTime), newX, newY);
                gear.Move(
                    OsbEasing.OutCirc,
                    collapseTime,
                    endTime,
                    gear.PositionAt(collapseTime),
                    newX + (clockwise ? 1 : -1) * (60 + rnd.Next(60)),
                    newY + 20 + rnd.Next(20)
                    );
            }

            gear.Fade(OsbEasing.OutExpo, endTime - beatLength / 2, endTime, 1, 0);
        }
Esempio n. 9
0
 public void UseRotationOf(OsbSprite other, int offset = 0, int count = -1)
 {
     for (int i = offset; i < (count < 0 ? Sprites.Count() : count + offset); i++)
     {
         sprites[i].UseRotationOf(other);
     }
 }
Esempio n. 10
0
 public void UseColorOf(OsbSprite other, double time, int offset = 0, int count = -1)
 {
     for (int i = offset; i < (count < 0 ? Sprites.Count() : count + offset); i++)
     {
         sprites[i].UseColorOf(other, time);
     }
 }
Esempio n. 11
0
 // Makes the letters appear one by one
 public void setupTitle(OsbSprite sprite, int time, Vector2 position)
 {
     sprite.Scale(13, 0.6);
     sprite.Fade(13, 1583 - 200, 1, 1);
     sprite.Fade(1583 - 200, 1583, 1, 0);
     sprite.Move(OsbEasing.OutCirc, time, time + 250, position, position + new Vector2(0, -50));
 }
Esempio n. 12
0
 public void UseScaleOf(OsbSprite other, double time, bool useYScale = false, int offset = 0, int count = -1)
 {
     for (int i = offset; i < (count < 0 ? Sprites.Count() : count + offset); i++)
     {
         sprites[i].UseScaleOf(other, time, useYScale);
     }
 }
        private void zoomFlipEffect(OsbSprite sprite, double startTime)
        {
            var endTime = startTime + Constants.beatLength * 1.5;

            sprite.Scale(startTime, endTime, sprite.ScaleAt(startTime).X, 1.6);
            sprite.Rotate(OsbEasing.InBack, startTime, endTime, 0, Math.PI);
        }
Esempio n. 14
0
 private void scaleAndRotate(OsbSprite sprite, double startTime, double endTime, int startAngle, int endAngle)
 {
     sprite.Fade(startTime, startTime + Constants.beatLength / 4, 0, 1);
     sprite.Fade(endTime, 0);
     sprite.Scale(startTime, endTime, logoScale, 1);
     sprite.Rotate(startTime, endTime, MathHelper.DegreesToRadians(startAngle), MathHelper.DegreesToRadians(endAngle));
 }
Esempio n. 15
0
        public override void Generate()
        {
            var layer    = GetLayer("clock");
            var clock    = layer.CreateSprite("sb/clock/clock.png", OsbOrigin.Centre);
            var minHand  = layer.CreateSprite("sb/clock/clockhand.png", OsbOrigin.BottomCentre);
            var hourHand = layer.CreateSprite("sb/clock/clockhand.png", OsbOrigin.BottomCentre);

            OsbSprite[] allParts = new OsbSprite[] { clock, minHand, hourHand };

            minHand.ScaleVec(0, 0.6, 1.1);
            hourHand.ScaleVec(0, 0.8, 0.7);

            foreach (OsbSprite elem in allParts)
            {
                elem.Fade(OsbEasing.InExpo, 0, 121, 0, 1);
                elem.Fade(OsbEasing.InExpo, 1008, 1186, 1, 0);
            }

            hourHand.Rotate(653, 831, 0, Math.PI / 6);

            foreach (OsbSprite elem in allParts)
            {
                elem.Fade(OsbEasing.InExpo, 2073, 2251, 0, 1);
                elem.Color(2072, 2073, elem.ColorAt(2072), 1, 0, 0); // TODO fix this hack
                elem.Fade(OsbEasing.InExpo, 2783, 2961, 1, 0);
            }

            minHand.Rotate(2073, 2961, 0, -Math.PI * 2 * 5);
            hourHand.Rotate(2073, 2961, Math.PI * 5 / 6, -Math.PI * 2 / 6);
        }
Esempio n. 16
0
        public override void Generate()
        {
            bool[] boolArr = new bool[8];
            for (int i = 0; i < boolArr.Length; i++)
            {
                boolArr[i] = true; // initialize all to true
            }

            for (int i = 0; i < numIterations; i++)
            {
                double    newStartTime = startTime + i * measureLength * 2;
                OsbSprite sprite       = findValidEntry(boolArr);
                int       height       = 160;

                sprite.Fade(OsbEasing.InExpo, newStartTime - measureLength / 16, newStartTime, 0, 1);
                sprite.Move(OsbEasing.InExpo, newStartTime - measureLength / 16, newStartTime, 150, height, 110, height);
                sprite.Move(newStartTime, newStartTime + 2 * measureLength - measureLength / 4, sprite.PositionAt(newStartTime), 100, height);
                sprite.Move(
                    OsbEasing.InExpo,
                    newStartTime + 2 * measureLength - measureLength / 4,
                    newStartTime + 2 * measureLength - measureLength / 8,
                    sprite.PositionAt(newStartTime + 2 * measureLength - measureLength / 4),
                    60,
                    height
                    );
                sprite.Fade(OsbEasing.InExpo, newStartTime + 2 * measureLength - measureLength / 4, newStartTime + 2 * measureLength - measureLength / 8, 1, 0);
            }
        }
        public override void Generate()
        {
            var layer = GetLayer("Cinema");

            var cinema = layer.CreateSprite("sb/scenes/cinema.jpg", OsbOrigin.Centre);

            cinema.Scale(OsbEasing.OutCirc, 58078, 58987, 1, Constants.screenScale);
            cinema.Fade(58078, 1);
            cinema.Fade(73078, 0);

            Helpers.bounceEffect(58987, cinema);

            var cinemaHold = layer.CreateSprite("sb/scenes/cinemaHold.jpg", OsbOrigin.Centre);

            cinemaHold.Scale(72851, Constants.screenScale);
            cinemaHold.Fade(OsbEasing.OutSine, 72851, 72851 + 227, 0, 1);
            cinemaHold.Fade(94442, 0);

            // Meguru Expressions
            Vector2 face = Helpers.locationHandler(974f, 200f);

            Helpers.moveScaleAndFade("sb/scenes/cinemaLayer1.jpg", 66487, 73078, face.X, face.Y, layer);
            Helpers.moveScaleAndFade("sb/scenes/cinemaLayer2.jpg", 80124, 87396, face.X, face.Y, layer);
            OsbSprite cinemaFinal = Helpers.moveScaleAndFadeIn("sb/scenes/cinemaLayer3.jpg", 87169, 87169, face.X, face.Y, layer);

            cinemaFinal.Fade(94442, 0);
        }
        public override void Generate()
        {
            OsbSprite sprite = GetLayer("Beginning_BG").CreateSprite(FilePath);

            sprite.Scale(ScaleEasing, StartTime, StartTime + ScaleTime, TransformBeginScale, Scale);
            sprite.Fade(FadeOutEasing, StartTime, StartTime + FadeOutTime, 0, 1);
            sprite.Fade(FadeInEasing, EndTime - FadeInTime, EndTime, 1, 0);
        }
    public OsbSprite FlareSprite(string filePath)
    {
        OsbSprite sprite = GetLayer(Layers.Overlay).CreateSprite(filePath, OsbOrigin.TopCentre);

        sprite.Scale(0, 1);
        sprite.Fade(0, 0);
        return(sprite);
    }
    public OsbSprite GetBackgroundSprite(BackgroundType type)
    {
        OsbSprite sprite = GetLayer(Layers.HitobjectBackground).CreateSprite(GetBackground(type));

        sprite.Scale(0, 854.0f / MainStoryboard.Instance.GetMapsetBitmap(GetBackground(type)).Width);
        sprite.Fade(0, 0);
        return(sprite);
    }
        public OsbSprite RequestAvaliableSakuraSprite(int current_index)
        {
            int index = (current_index) % 15;

            string    path   = System.IO.Path.Combine(@"SB\effect\lyrics_bg", $"{index + 1}.png");
            OsbSprite sprite = GetLayer("LyricsLayer_BG").CreateSprite(path, OsbOrigin.CentreRight);

            return(sprite);
        }
Esempio n. 22
0
        public override void Generate()
        {
            OsbSprite sprite = GetLayer(LayerName).CreateSprite(FilePath);

            sprite.Scale(ScaleEasing, StartTime, StartTime + ScaleTime, TransformBeginScale, TransformEndScale);
            sprite.Fade(FadeOutEasing, StartTime, StartTime + FadeOutTime, 0, 1);
            sprite.Fade(FadeInEasing, EndTime - FadeInTime, EndTime, 1, 0);
            sprite.Move(OsbEasing.None, StartMoveTime, KeepMoveTime + StartMoveTime, StartMovePosition, EndMovePosition);
        }
Esempio n. 23
0
        public static OsbSprite moveScaleAndFadeIn(string path, double startTime, double endTime, double x, double y, StoryboardLayer layer)
        {
            OsbSprite sprite = layer.CreateSprite(path, OsbOrigin.Centre);

            sprite.Move(startTime, x, y);
            sprite.Scale(startTime, Constants.screenScale);
            sprite.Fade(OsbEasing.OutSine, startTime, startTime + Constants.beatLength / 2, 0, 1);
            return(sprite);
        }
Esempio n. 24
0
 public PianoNote(OsbSprite top, OsbSprite bottom, OsbSprite body, Vector2 position, bool up, float scale)
 {
     this.top      = top;
     this.bottom   = bottom;
     this.body     = body;
     this.position = position;
     this.up       = up;
     this.scale    = scale;
 }
Esempio n. 25
0
        public static void ScaleToFit(this OsbSprite sprite)
        {
            var bitmap = Bitmap.FromFile(sprite.GetTexturePathAt(sprite.CommandsStartTime));

            sprite.Scale(
                bitmap.Width / bitmap.Height > 480.0 / 854.0 ?
                480.0 / bitmap.Height
                : 854.0 / bitmap.Width
                );
        }
Esempio n. 26
0
        public void tock(int startTime, int endTime, OsbSprite hand2)
        {
            double rotation = 0;

            for (int i = startTime; i <= endTime; i += 24840)
            {
                hand2.Rotate(i, i + 24840, rotation, (Math.PI / 180) * 30 + rotation);
                rotation += (Math.PI / 180) * 30;
            }
        }
        private void zoomEffect(OsbSprite sprite, double startTime)
        {
            var center  = new Vector2(320f, 240f);
            var endTime = startTime + Constants.beatLength * 1.5;
            var pos     = Vector2.Subtract(center, ZoomChange);

            sprite.Move(startTime, endTime, sprite.PositionAt(startTime).X, sprite.PositionAt(startTime).Y, center.X + pos.X, center.Y + pos.Y);
            sprite.Scale(startTime, endTime, sprite.ScaleAt(startTime).X, 2.2);
            sprite.Rotate(OsbEasing.InCirc, startTime, endTime, 0, -Math.PI / 4);
        }
        private OsbSprite floatingEffect(double startTime, float moveX, float moveY, OsbSprite sprite)
        {
            var endTime = startTime + 1818;

            sprite.Move(
                startTime, endTime,
                sprite.PositionAt(startTime).X, sprite.PositionAt(startTime).Y,
                sprite.PositionAt(startTime).X + moveX, sprite.PositionAt(startTime).Y + moveY
                );
            return(sprite);
        }
            public SquareSprite(OsbSprite sqsprite, double time, StoryboardLayer lay)
            {
                sprite = sqsprite;
                sprite.Fade(time, 1);
                position = (Vector2)sprite.PositionAt(time);
                sprite.Color(time, Color4.White);
                color = Color4.White;

                layerP = lay;
                //quatterBeat =;
            }
Esempio n. 30
0
                // Goal for this one is to create that sort of camera-moving effect.
                // Maybe do something with extremely subtle easings and light movements.
                public static void ShakeSubtle(OsbSprite sprite, int startTime, int endTime, Vector2 variance, int points = 20)
                {
                    var step = (endTime - startTime) / (float)points;

                    for (float i = startTime; i < endTime; i += step)
                    {
                        var pointB = (Vector2)sprite.PositionAt(startTime);
                        var pointA = pointB + new Vector2((float)(StoryboardObjectGenerator.Current.Random(0, variance.X) - variance.X / 2), (float)(StoryboardObjectGenerator.Current.Random(0, variance.Y) - variance.Y / 2));
                        sprite.Move((OsbEasing)StoryboardObjectGenerator.Current.Random(0, Enum.GetNames(typeof(OsbEasing)).Length), i, i + step, pointA, pointB);
                    }
                }