public OsbSprite Generate(OsbSprite sprite, bool startTriggerGroup = false, string triggerType = "", int startTrigger = 0, int endTrigger = 0, int triggerGroup = 0)
    {
        float letterY = position.position.Y - 4;

        foreach (var line in lines)
        {
            float i = 0;

            float letterX = position.position.X;
            if (this.centre)
            {
                letterX = position.position.X - this.lineWidth * 0.5f;
            }

            foreach (var letter in line)
            {
                var duration = endTime - startTime;
                var texture  = font.GetTexture(letter.ToString());
                if (!texture.IsEmpty)
                {
                    var letterPos = new Vector2(letterX, letterY)
                                    + texture.OffsetFor(OsbOrigin.Centre) * this.textScale;

                    var spriteText = generator.GetLayer(layerName).CreateSprite(texture.Path, OsbOrigin.Centre, letterPos);

                    if (startTriggerGroup)
                    {
                        spriteText.StartTriggerGroup(triggerType, startTrigger, endTrigger, triggerGroup);
                    }

                    spriteText.Fade(startTime + delay * i, startTime + FadeIn + delay * i, 0, fade);
                    spriteText.Fade(endTime, endTime + FadeOut, fade, 0);
                    spriteText.Scale(startTime, this.textScale);
                    spriteText.Color(startTime, Color);

                    if (startTriggerGroup)
                    {
                        spriteText.EndGroup();
                    }

                    sprite = spriteText;
                }
                letterX   += texture.BaseWidth * this.textScale;
                startTime += delay * i;
                i++;
            }
            letterY += this.textScale * lineHeightSpace() / textScale;
        }
        return(sprite);
    }
    public void Generate(string avatarPath, float avatarScale, int avatarEndDelay, float startX, float y, string itemsPath, float itemScale, int yMin, int yMax, bool FrontAndBack, int startTime, int endTime, Color4 ThemeColor, int spawnMin, int spawnMax)
    {
        // Item Collect

        var sTime         = startTime;
        var eTime         = endTime;
        var itemVelocity  = generator.Random(spawnMin, spawnMax);
        var hoverDuration = 2000;
        var prevPosition  = startX;
        var loopAmount    = (eTime - sTime) / (hoverDuration * 2);
        var avatar        = generator.GetLayer("Avatar").CreateSprite(avatarPath, OsbOrigin.BottomCentre);

        for (var i = sTime; i < eTime; i += itemVelocity)
        {
            var FlipHVelocity = generator.Random(1, 3);
            var itemDuration  = itemVelocity;
            generator.Log(itemDuration.ToString());

            var itemThree = generator.GetLayer("Items").CreateSprite("sb/missions/" + itemsPath + "/3.png", OsbOrigin.Centre);
            var itemFour  = generator.GetLayer("Items").CreateSprite("sb/missions/" + itemsPath + "/4.png", OsbOrigin.Centre);
            var itemFive  = generator.GetLayer("Items").CreateSprite("sb/missions/" + itemsPath + "/5.png", OsbOrigin.Centre);
            var itemSix   = generator.GetLayer("Items").CreateSprite("sb/missions/" + itemsPath + "/6.png", OsbOrigin.Centre);
            var anyItem   = generator.GetLayer("Items").CreateSprite("sb/missions/" + itemsPath + "/" + generator.Random(1, 7) + ".png", OsbOrigin.Centre); // any items

            // ITEMS /////////////////////////////////////////////////////////////////////
            var moveX = generator.Random(0, 640);
            var moveY = generator.Random(yMin, yMax);
            anyItem.Scale(i, generator.Random(0.5, 0.6) * itemScale);
            anyItem.Fade(i, i + 500, 0, 1);
            anyItem.Fade(i + itemDuration - 500, i + itemDuration + 1300, 1, 0);
            anyItem.Move(OsbEasing.InOutQuad, i + itemDuration - 500, i + itemDuration + 1300, new Vector2(moveX, moveY), new Vector2(moveX, moveY - 200));
            anyItem.Color(i + itemDuration - 500, i + itemDuration + 1300, ThemeColor, Color4.Red);

            if (i % FlipHVelocity == 1)
            {
                anyItem.FlipH(i, i + itemDuration + 1300);
            }

            var d             = (eTime - sTime);
            var itemDuration2 = (generator.Random(d / 10, d));

            if (FrontAndBack)
            {
                var itemOne = generator.GetLayer("ItemsFront").CreateSprite("sb/missions/" + itemsPath + "/" + generator.Random(1, 7) + ".png", OsbOrigin.Centre);
                var itemTwo = generator.GetLayer("ItemsBack").CreateSprite("sb/missions/" + itemsPath + "/" + generator.Random(1, 7) + ".png", OsbOrigin.Centre);

                // front
                itemOne.Color(sTime, ThemeColor);
                itemOne.Scale(sTime, generator.Random(0.3, 0.6) * itemScale);
                itemOne.Fade(sTime, sTime + 500, 0, 1);
                itemOne.Fade(sTime + itemDuration2 - 500, sTime + itemDuration2, 1, 0);
                itemOne.Move(sTime, new Vector2(generator.Random(0, 640), generator.Random((int)y, yMax)));

                // back
                itemTwo.Color(sTime, ThemeColor);
                itemTwo.Scale(sTime, generator.Random(0.3, 0.6) * itemScale);
                itemTwo.Fade(sTime, sTime + 500, 0, 1);
                itemTwo.Fade(sTime + itemDuration2 - 500, sTime + itemDuration2, 1, 0);
                itemTwo.Move(sTime, new Vector2(generator.Random(0, 640), generator.Random(yMin, (int)y)));

                if (i % FlipHVelocity == 1)
                {
                    itemOne.FlipH(sTime, sTime + itemDuration2);
                    itemTwo.FlipH(sTime, sTime + itemDuration2);
                }
            }

            else
            {
                var itemOne = generator.GetLayer("Items").CreateSprite("sb/missions/" + itemsPath + "/1.png", OsbOrigin.Centre);
                var itemTwo = generator.GetLayer("Items").CreateSprite("sb/missions/" + itemsPath + "/2.png", OsbOrigin.Centre);

                itemOne.Color(sTime, ThemeColor);
                itemOne.Scale(sTime, generator.Random(0.3, 0.6) * itemScale);
                itemOne.Fade(sTime, sTime + 500, 0, 1);
                itemOne.Fade(sTime + itemDuration2 - 500, sTime + itemDuration2, 1, 0);
                itemOne.Move(sTime, new Vector2(generator.Random(0, 640), generator.Random(yMin, yMax)));

                itemTwo.Color(sTime, ThemeColor);
                itemTwo.Scale(sTime, generator.Random(0.3, 0.6) * itemScale);
                itemTwo.Fade(sTime, sTime + 500, 0, 1);
                itemTwo.Fade(sTime + itemDuration2 - 500, sTime + itemDuration2, 1, 0);
                itemTwo.Move(sTime, new Vector2(generator.Random(0, 640), generator.Random(yMin, yMax)));

                itemThree.Color(sTime, ThemeColor);
                itemThree.Scale(sTime, generator.Random(0.3, 0.6) * itemScale);
                itemThree.Fade(sTime, sTime + 500, 0, 1);
                itemThree.Fade(sTime + itemDuration2 - 500, sTime + itemDuration2, 1, 0);
                itemThree.Move(sTime, new Vector2(generator.Random(0, 640), generator.Random(yMin, yMax)));

                itemFour.Color(sTime, ThemeColor);
                itemFour.Scale(sTime, generator.Random(0.3, 0.6) * itemScale);
                itemFour.Fade(sTime, sTime + 500, 0, 1);
                itemFour.Fade(sTime + itemDuration2 - 500, sTime + itemDuration2, 1, 0);
                itemFour.Move(sTime, new Vector2(generator.Random(0, 640), generator.Random(yMin, yMax)));

                itemFive.Color(sTime, ThemeColor);
                itemFive.Scale(sTime, generator.Random(0.3, 0.6) * itemScale);
                itemFive.Fade(sTime, sTime + 500, 0, 1);
                itemFive.Fade(sTime + itemDuration2 - 500, sTime + itemDuration2, 1, 0);
                itemFive.Move(sTime, new Vector2(generator.Random(0, 640), generator.Random(yMin, yMax)));

                itemSix.Color(sTime, ThemeColor);
                itemSix.Scale(sTime, generator.Random(0.3, 0.6) * itemScale);
                itemSix.Fade(sTime, sTime + 500, 0, 1);
                itemSix.Fade(sTime + itemDuration2 - 500, sTime + itemDuration2, 1, 0);
                itemSix.Move(sTime, new Vector2(generator.Random(0, 640), generator.Random(yMin, yMax)));

                if (i % FlipHVelocity == 1)
                {
                    itemOne.FlipH(sTime, sTime + itemDuration2);
                    itemTwo.FlipH(sTime, sTime + itemDuration2);
                    itemThree.FlipH(sTime, sTime + itemDuration2);
                    itemFour.FlipH(sTime, sTime + itemDuration2);
                    itemFive.FlipH(sTime, sTime + itemDuration2);
                    itemSix.FlipH(sTime, sTime + itemDuration2);
                }
            }
            // ///////////////////////////////////////////////////////////////////////////

            // AVATAR
            avatar.Scale(sTime, avatarScale);
            avatar.Color(sTime, ThemeColor);
            avatar.Fade(sTime, sTime + 1000, 0, 1);
            avatar.Fade(eTime + avatarEndDelay - 1000, eTime + avatarEndDelay, 1, 0);
            // avatar hovering
            avatar.StartLoopGroup(sTime, loopAmount);
            avatar.MoveY(OsbEasing.InOutSine, 0, hoverDuration, y, y + 15);
            avatar.MoveY(OsbEasing.InOutSine, hoverDuration, hoverDuration * 2, y + 15, y);
            avatar.EndGroup();

            // avatar vertical movement
            var nexItemPosX = anyItem.PositionAt(i + itemDuration).X;
            avatar.MoveX(OsbEasing.InOutSine, i - 500, i - 500 + itemDuration, prevPosition, nexItemPosX);

            // flipH
            if (i > 132312)
            {
                if (prevPosition < nexItemPosX)
                {
                    avatar.FlipH(i - 500, i - 500 + itemDuration);
                }
            }


            // OBTAIN EFFECT /////////////////////////////////////////////////////////////////////
            var Amount      = 10;
            var nexItemPosY = anyItem.PositionAt(i + itemDuration).Y;
            for (var o = 0; o < Amount; o++)
            {
                var posY      = nexItemPosY + 30;
                var posStartX = generator.Random(nexItemPosX - 5, nexItemPosX + 5);
                var posEndX   = generator.Random(nexItemPosX - 20, nexItemPosX + 20);
                var sprite    = generator.GetLayer("Items").CreateSprite("sb/particle2.png", OsbOrigin.Centre);
                var light     = generator.GetLayer("Items").CreateSprite("sb/light.png", OsbOrigin.CentreLeft);

                var randomMoveX    = generator.Random(-20, 20);
                var randomMoveX2   = generator.Random(-25, 25);
                var randomFadeOut  = generator.Random(300, 1300);
                var randomScaleOut = generator.Random(0.003, 0.006);

                sprite.Fade(i + itemDuration - 1000, i + itemDuration + randomFadeOut, 1, 0);
                sprite.Additive(i + itemDuration - 1000, i + itemDuration + +randomFadeOut);
                sprite.Color(i + itemDuration - 1000, i + itemDuration, Color4.Red, ThemeColor);
                sprite.MoveX(i + itemDuration - 1000, i + itemDuration - 500, posStartX, posStartX);
                sprite.MoveY(i + itemDuration - 1000, i + itemDuration - 500, posY, posY);
                sprite.MoveY(OsbEasing.InOutQuad, i + itemDuration - 500, i + itemDuration + randomFadeOut, posY, posY - generator.Random(150, 200));
                // end move loop
                sprite.StartLoopGroup(i + itemDuration - 500, 4);
                sprite.MoveX(OsbEasing.InOutSine, 0, (500 + randomFadeOut) / 4, posStartX + randomMoveX, posEndX + randomMoveX2);
                sprite.MoveX(OsbEasing.InOutSine, (500 + randomFadeOut) / 4, (500 + randomFadeOut) / 3, posEndX + randomMoveX2, posStartX + randomMoveX);
                sprite.MoveX(OsbEasing.InOutSine, (500 + randomFadeOut) / 3, (500 + randomFadeOut) / 2, posStartX + randomMoveX, posEndX + randomMoveX2);
                sprite.MoveX(OsbEasing.InOutSine, (500 + randomFadeOut) / 2, (500 + randomFadeOut) / 1, posEndX + randomMoveX2, posStartX + randomMoveX);
                sprite.EndGroup();
                // end loop
                sprite.ScaleVec(OsbEasing.OutExpo, i + itemDuration - 1000, i + itemDuration - 500, generator.Random(0.1, 0.2), generator.Random(0.2, 0.3), 0.4, 0.3);
                sprite.ScaleVec(i + itemDuration - 500, i + itemDuration + +randomFadeOut, 0.4, 0.3, randomScaleOut, randomScaleOut);

                light.Move(i + itemDuration - 500, nexItemPosX, nexItemPosY);
                light.Fade(i + itemDuration - 500, i + itemDuration, 0, 0.05);
                light.Fade(i + itemDuration + randomFadeOut, i + itemDuration + randomFadeOut + 500, 0.05, 0);
                light.ScaleVec(OsbEasing.OutExpo, i + itemDuration - 500, i + itemDuration + randomFadeOut - 500, 0.01, 0.01, generator.Random(0.2, 0.28), 0.2);
                light.ScaleVec(OsbEasing.In, i + itemDuration + randomFadeOut - 500, i + itemDuration + randomFadeOut + 100, generator.Random(0.2, 0.28), 0.2, generator.Random(0.2, 0.28), 0.005);
                light.Additive(i + itemDuration - 500, i + itemDuration + randomFadeOut + 500);

                var rotation = MathHelper.DegreesToRadians(-90);
                light.Rotate(i + itemDuration - 500, rotation);

                // sound effect
                var obtainSFX = generator.GetLayer("Items").CreateSample("sb/sfx/obtain-item.ogg", i + itemDuration - 500, 10);
            }
            // ///////////////////////////////////////////////////////////////////////////////////

            prevPosition = (int)nexItemPosX;
        }
    }
    public OsbSprite GenerateBoxes(StoryboardObjectGenerator generator, string layerName, int soundDelay, string soundEffect, Color4 Color, DialogTiming timing,
                                   float pointerScale, float Fade, Position position, Pointer pointer, Push push, bool centre, float lineWidth, float lineHeight,
                                   OsbSprite spriteBox, bool startTriggerGroup = false, string triggerType = "", int startTrigger = 0, int endTrigger = 0, int triggerGroup = 0)
    {
        var d         = 300;
        var fadeTime  = 500;
        var PushValue = 30;
        var biggerBox = 10;
        var boxPos    = centre ? new Vector2(position.position.X - lineWidth * 0.5f - (biggerBox / 2) - 3, position.position.Y - (biggerBox / 2) - 4) :
                        new Vector2(position.position.X - (biggerBox / 2) - 3, position.position.Y - (biggerBox / 2) - 4);

        var layer = generator.GetLayer(layerName);

        // var inputBox = layer.CreateSprite("sb/dialog/box/b.png", OsbOrigin.TopLeft, boxPos);
        var inputBox             = layer.CreateAnimation("sb/dialog/box/b.png", 30, 60, OsbLoopType.LoopForever, OsbOrigin.TopLeft, boxPos);
        var bitmapInputBox       = generator.GetMapsetBitmap("sb/pixel.png");
        var bitmapInputBox2      = generator.GetMapsetBitmap("sb/pixel.png");
        var bitmapInputBoxWidth  = ((lineWidth / bitmapInputBox.Width) + biggerBox);
        var bitmapInputBoxHeight = (lineHeight / bitmapInputBox.Height) + biggerBox;

        var widthInputBox  = bitmapInputBoxWidth / 900;
        var heightInputBox = bitmapInputBoxHeight / 400;
        var bWidth         = widthInputBox * 900;
        var bHeight        = heightInputBox * 900;

        // var bitmapPointer = generator.GetMapsetBitmap("sb/dialog/pointers/pointer.png");
        // var bitmapPointerCorner = generator.GetMapsetBitmap("sb/dialog/pointers/pointerCorner.png");

        // generator.Log($"width: {widthInputBox}     heigt: {heightInputBox}");

        if (startTriggerGroup)
        {
            inputBox.StartTriggerGroup(triggerType, startTrigger, endTrigger, triggerGroup);
        }

        // sfx - message-1
        var message1 = layer.CreateSample(soundEffect, timing.startTime - d + soundDelay, 40);

        //

        // start style
        if (pointer == Pointer.None)
        {
            inputBox.Color(timing.startTime - d, Color);
            inputBox.ScaleVec(timing.startTime - d, widthInputBox, heightInputBox);
            inputBox.Fade(timing.startTime - d, timing.startTime - d + 200, 0, Fade);
            inputBox.Fade(timing.endTime + d - fadeTime, timing.endTime + d, Fade, 0);

            if (push == Push.None)
            {
                if (push == Push.Up)
                {
                    inputBox.MoveY(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, boxPos.Y + PushValue, boxPos.Y);
                    inputBox.MoveY(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), boxPos.Y, boxPos.Y - PushValue);
                }
            }

            if (push == Push.Down)
            {
                inputBox.MoveY(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, boxPos.Y - PushValue, boxPos.Y);
                inputBox.MoveY(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), boxPos.Y, boxPos.Y + PushValue);
            }

            if (push == Push.Left)
            {
                inputBox.MoveX(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, boxPos.X + PushValue, boxPos.X);
                inputBox.MoveX(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), boxPos.X, boxPos.X - PushValue);
            }

            if (push == Push.Right)
            {
                inputBox.MoveX(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, boxPos.X - PushValue, boxPos.X);
                inputBox.MoveX(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), boxPos.X, boxPos.X + PushValue);
            }
        }
        // end style

        else
        {
            inputBox.Color(timing.startTime - d, Color);
            inputBox.ScaleVec(timing.startTime - d, widthInputBox, heightInputBox);
            inputBox.Fade(timing.startTime - d, timing.startTime - d + 200, 0, Fade);
            inputBox.Fade(timing.endTime + d - fadeTime, timing.endTime + d, Fade, 0);

            if (push == Push.None)
            {
                if (push == Push.Up)
                {
                    inputBox.MoveY(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, boxPos.Y + PushValue, boxPos.Y);
                    inputBox.MoveY(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), boxPos.Y, boxPos.Y - PushValue);
                }
            }

            if (push == Push.Down)
            {
                inputBox.MoveY(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, boxPos.Y - PushValue, boxPos.Y);
                inputBox.MoveY(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), boxPos.Y, boxPos.Y + PushValue);
            }

            if (push == Push.Left)
            {
                inputBox.MoveX(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, boxPos.X + PushValue, boxPos.X);
                inputBox.MoveX(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), boxPos.X, boxPos.X - PushValue);
            }

            if (push == Push.Right)
            {
                inputBox.MoveX(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, boxPos.X - PushValue, boxPos.X);
                inputBox.MoveX(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), boxPos.X, boxPos.X + PushValue);
            }
        }

        // // start style
        // if (pointer == Pointer.Up)
        // {
        //     inputBox.Color(timing.startTime - d, Color);
        //     inputBox.ScaleVec(timing.startTime - d, widthInputBox, heightInputBox);
        //     inputBox.Fade(timing.startTime - d, timing.startTime - d + 200, 0, Fade);
        //     inputBox.Fade(timing.endTime + d - fadeTime, timing.endTime + d, Fade, 0);

        //     var pointerPos = new Vector2(boxPos.X + (lineWidth / 2), boxPos.Y);
        //     var point = layer.CreateSprite("sb/dialog/pointers/pointer.png", OsbOrigin.BottomCentre, pointerPos);

        //     if (startTriggerGroup)
        //     {
        //         point.StartTriggerGroup(triggerType, startTrigger, endTrigger, triggerGroup);
        //     }

        //     point.Color(timing.startTime - d, Color);
        //     point.Scale(timing.startTime, pointerScale);
        //     point.Fade(timing.startTime - d, timing.startTime - d + 200, 0, Fade);
        //     point.Fade(timing.endTime + d - fadeTime, timing.endTime + d, Fade, 0);

        //     if (push == Push.None)
        //     {
        //         point.MoveX(timing.startTime - d, pointerPos.X);
        //         point.MoveY(timing.endTime + d, pointerPos.Y);
        //     }

        //     if (push == Push.Up)
        //     {
        //         inputBox.MoveY(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, boxPos.Y + PushValue, boxPos.Y);
        //         inputBox.MoveY(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), boxPos.Y, boxPos.Y - PushValue);
        //         point.MoveY(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, pointerPos.Y + PushValue, pointerPos.Y);
        //         point.MoveY(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), pointerPos.Y, pointerPos.Y - PushValue);
        //     }

        //     if (push == Push.Down)
        //     {
        //         inputBox.MoveY(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, boxPos.Y - PushValue, boxPos.Y);
        //         inputBox.MoveY(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), boxPos.Y, boxPos.Y + PushValue);
        //         point.MoveY(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, pointerPos.Y - PushValue, pointerPos.Y);
        //         point.MoveY(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), pointerPos.Y, pointerPos.Y + PushValue);
        //     }

        //     if (push == Push.Left)
        //     {
        //         inputBox.MoveX(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, boxPos.X + PushValue, boxPos.X);
        //         inputBox.MoveX(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), boxPos.X, boxPos.X - PushValue);
        //         point.MoveX(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, pointerPos.X + PushValue, pointerPos.X);
        //         point.MoveX(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), pointerPos.X, pointerPos.X - PushValue);
        //     }

        //     if (push == Push.Right)
        //     {
        //         inputBox.MoveX(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, boxPos.X - PushValue, boxPos.X);
        //         inputBox.MoveX(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), boxPos.X, boxPos.X + PushValue);
        //         point.MoveX(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, pointerPos.X - PushValue, pointerPos.X);
        //         point.MoveX(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), pointerPos.X, pointerPos.X + PushValue);
        //     }

        //     if (startTriggerGroup)
        //     {
        //         point.EndGroup();
        //     }

        //     spriteBox = point;
        // }
        // // end style

        // // start style
        // if (pointer == Pointer.Down)
        // {
        //     inputBox.Color(timing.startTime - d, Color);
        //     inputBox.ScaleVec(timing.startTime - d, widthInputBox, heightInputBox);
        //     inputBox.Fade(timing.startTime - d, timing.startTime - d + 200, 0, Fade);
        //     inputBox.Fade(timing.endTime + d - fadeTime, timing.endTime + d, Fade, 0);

        //     var pointerPos = new Vector2(boxPos.X + (lineWidth / 2), boxPos.Y + heightInputBox);
        //     var point = layer.CreateSprite("sb/dialog/pointers/pointer.png", OsbOrigin.BottomCentre, pointerPos);

        //     if (startTriggerGroup)
        //     {
        //         point.StartTriggerGroup(triggerType, startTrigger, endTrigger, triggerGroup);
        //     }

        //     point.Rotate(timing.startTime, MathHelper.DegreesToRadians(180));
        //     point.Scale(timing.startTime, pointerScale);
        //     point.Color(timing.startTime - d, Color);
        //     point.Fade(timing.startTime - d, timing.startTime - d + 200, 0, Fade);
        //     point.Fade(timing.endTime + d - fadeTime, timing.endTime + d, Fade, 0);

        //     if (push == Push.None)
        //     {
        //         point.MoveX(timing.startTime - d, pointerPos.X);
        //         point.MoveY(timing.endTime + d, pointerPos.Y);
        //     }

        //     if (push == Push.Up)
        //     {
        //         inputBox.MoveY(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, boxPos.Y + PushValue, boxPos.Y);
        //         inputBox.MoveY(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), boxPos.Y, boxPos.Y - PushValue);
        //         point.MoveY(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, pointerPos.Y + PushValue, pointerPos.Y);
        //         point.MoveY(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), pointerPos.Y, pointerPos.Y - PushValue);
        //     }

        //     if (push == Push.Down)
        //     {
        //         inputBox.MoveY(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, boxPos.Y - PushValue, boxPos.Y);
        //         inputBox.MoveY(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), boxPos.Y, boxPos.Y + PushValue);
        //         point.MoveY(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, pointerPos.Y - PushValue, pointerPos.Y);
        //         point.MoveY(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), pointerPos.Y, pointerPos.Y + PushValue);
        //     }

        //     if (push == Push.Left)
        //     {
        //         inputBox.MoveX(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, boxPos.X + PushValue, boxPos.X);
        //         inputBox.MoveX(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), boxPos.X, boxPos.X - PushValue);
        //         point.MoveX(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, pointerPos.X + PushValue, pointerPos.X);
        //         point.MoveX(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), pointerPos.X, pointerPos.X - PushValue);
        //     }

        //     if (push == Push.Right)
        //     {
        //         inputBox.MoveX(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, boxPos.X - PushValue, boxPos.X);
        //         inputBox.MoveX(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), boxPos.X, boxPos.X + PushValue);
        //         point.MoveX(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, pointerPos.X - PushValue, pointerPos.X);
        //         point.MoveX(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), pointerPos.X, pointerPos.X + PushValue);
        //     }

        //     if (startTriggerGroup)
        //     {
        //         point.EndGroup();
        //     }

        //     spriteBox = point;
        // }
        // // end style

        // // start style
        // if (pointer == Pointer.CentreLeft)
        // {
        //     inputBox.Color(timing.startTime - d, Color);
        //     inputBox.ScaleVec(timing.startTime - d, widthInputBox, heightInputBox);
        //     inputBox.Fade(timing.startTime - d, timing.startTime - d + 200, 0, Fade);
        //     inputBox.Fade(timing.endTime + d - fadeTime, timing.endTime + d, Fade, 0);

        //     var pointerPos = new Vector2(boxPos.X, boxPos.Y + (heightInputBox / 2));
        //     var point = layer.CreateSprite("sb/dialog/pointers/pointer.png", OsbOrigin.BottomCentre, pointerPos);

        //     if (startTriggerGroup)
        //     {
        //         point.StartTriggerGroup(triggerType, startTrigger, endTrigger, triggerGroup);
        //     }

        //     point.Rotate(timing.startTime, MathHelper.DegreesToRadians(-90));
        //     point.Scale(timing.startTime, pointerScale);
        //     point.Color(timing.startTime - d, Color);
        //     point.Fade(timing.startTime - d, timing.startTime - d + 200, 0, Fade);
        //     point.Fade(timing.endTime + d - fadeTime, timing.endTime + d, Fade, 0);

        //     if (push == Push.None)
        //     {
        //         point.MoveX(timing.startTime - d, pointerPos.X);
        //         point.MoveY(timing.endTime + d, pointerPos.Y);
        //     }

        //     if (push == Push.Up)
        //     {
        //         inputBox.MoveY(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, boxPos.Y + PushValue, boxPos.Y);
        //         inputBox.MoveY(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), boxPos.Y, boxPos.Y - PushValue);
        //         point.MoveY(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, pointerPos.Y + PushValue, pointerPos.Y);
        //         point.MoveY(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), pointerPos.Y, pointerPos.Y - PushValue);
        //     }

        //     if (push == Push.Down)
        //     {
        //         inputBox.MoveY(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, boxPos.Y - PushValue, boxPos.Y);
        //         inputBox.MoveY(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), boxPos.Y, boxPos.Y + PushValue);
        //         point.MoveY(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, pointerPos.Y - PushValue, pointerPos.Y);
        //         point.MoveY(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), pointerPos.Y, pointerPos.Y + PushValue);
        //     }

        //     if (push == Push.Left)
        //     {
        //         inputBox.MoveX(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, boxPos.X + PushValue, boxPos.X);
        //         inputBox.MoveX(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), boxPos.X, boxPos.X - PushValue);
        //         point.MoveX(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, pointerPos.X + PushValue, pointerPos.X);
        //         point.MoveX(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), pointerPos.X, pointerPos.X - PushValue);
        //     }

        //     if (push == Push.Right)
        //     {
        //         inputBox.MoveX(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, boxPos.X - PushValue, boxPos.X);
        //         inputBox.MoveX(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), boxPos.X, boxPos.X + PushValue);
        //         point.MoveX(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, pointerPos.X - PushValue, pointerPos.X);
        //         point.MoveX(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), pointerPos.X, pointerPos.X + PushValue);
        //     }

        //     if (startTriggerGroup)
        //     {
        //         point.EndGroup();
        //     }

        //     spriteBox = point;
        // }
        // // end style

        // // start style
        // if (pointer == Pointer.CentreRight)
        // {
        //     inputBox.Color(timing.startTime - d, Color);
        //     inputBox.ScaleVec(timing.startTime - d, widthInputBox, heightInputBox);
        //     inputBox.Fade(timing.startTime - d, timing.startTime - d + 200, 0, Fade);
        //     inputBox.Fade(timing.endTime + d - fadeTime, timing.endTime + d, Fade, 0);

        //     var pointerPos = new Vector2(boxPos.X + widthInputBox, boxPos.Y + (heightInputBox / 2));
        //     var point = layer.CreateSprite("sb/dialog/pointers/pointer.png", OsbOrigin.BottomCentre, pointerPos);

        //     if (startTriggerGroup)
        //     {
        //         point.StartTriggerGroup(triggerType, startTrigger, endTrigger, triggerGroup);
        //     }

        //     point.Rotate(timing.startTime, MathHelper.DegreesToRadians(90));
        //     point.Scale(timing.startTime, pointerScale);
        //     point.Color(timing.startTime - d, Color);
        //     point.Fade(timing.startTime - d, timing.startTime - d + 200, 0, Fade);
        //     point.Fade(timing.endTime + d - fadeTime, timing.endTime + d, Fade, 0);

        //     if (push == Push.None)
        //     {
        //         point.MoveX(timing.startTime - d, pointerPos.X);
        //         point.MoveY(timing.endTime + d, pointerPos.Y);
        //     }

        //     if (push == Push.Up)
        //     {
        //         inputBox.MoveY(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, boxPos.Y + PushValue, boxPos.Y);
        //         inputBox.MoveY(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), boxPos.Y, boxPos.Y - PushValue);
        //         point.MoveY(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, pointerPos.Y + PushValue, pointerPos.Y);
        //         point.MoveY(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), pointerPos.Y, pointerPos.Y - PushValue);
        //     }

        //     if (push == Push.Down)
        //     {
        //         inputBox.MoveY(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, boxPos.Y - PushValue, boxPos.Y);
        //         inputBox.MoveY(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), boxPos.Y, boxPos.Y + PushValue);
        //         point.MoveY(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, pointerPos.Y - PushValue, pointerPos.Y);
        //         point.MoveY(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), pointerPos.Y, pointerPos.Y + PushValue);
        //     }

        //     if (push == Push.Left)
        //     {
        //         inputBox.MoveX(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, boxPos.X + PushValue, boxPos.X);
        //         inputBox.MoveX(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), boxPos.X, boxPos.X - PushValue);
        //         point.MoveX(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, pointerPos.X + PushValue, pointerPos.X);
        //         point.MoveX(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), pointerPos.X, pointerPos.X - PushValue);
        //     }

        //     if (push == Push.Right)
        //     {
        //         inputBox.MoveX(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, boxPos.X - PushValue, boxPos.X);
        //         inputBox.MoveX(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), boxPos.X, boxPos.X + PushValue);
        //         point.MoveX(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, pointerPos.X - PushValue, pointerPos.X);
        //         point.MoveX(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), pointerPos.X, pointerPos.X + PushValue);
        //     }

        //     if (startTriggerGroup)
        //     {
        //         point.EndGroup();
        //     }

        //     spriteBox = point;
        // }
        // // end style

        // // start style
        // if (pointer == Pointer.TopLeft)
        // {
        //     inputBox.Color(timing.startTime - d, Color);
        //     inputBox.ScaleVec(timing.startTime - d, widthInputBox, heightInputBox);
        //     inputBox.Fade(timing.startTime - d, timing.startTime - d + 200, 0, Fade);
        //     inputBox.Fade(timing.endTime + d - fadeTime, timing.endTime + d, Fade, 0);

        //     var pointerPos = new Vector2(boxPos.X + (bitmapPointerCorner.Height / 4) + 0.5f, boxPos.Y + (bitmapPointerCorner.Height / 4) + 0.5f);
        //     var point = layer.CreateSprite("sb/dialog/pointers/pointerCorner.png", OsbOrigin.BottomCentre, pointerPos);

        //     if (startTriggerGroup)
        //     {
        //         point.StartTriggerGroup(triggerType, startTrigger, endTrigger, triggerGroup);
        //     }

        //     point.Rotate(timing.startTime, MathHelper.DegreesToRadians(-45));
        //     point.Scale(timing.startTime, pointerScale);
        //     point.Color(timing.startTime - d, Color);
        //     point.Fade(timing.startTime - d, timing.startTime - d + 200, 0, Fade);
        //     point.Fade(timing.endTime + d - fadeTime, timing.endTime + d, Fade, 0);

        //     if (push == Push.None)
        //     {
        //         point.MoveX(timing.startTime - d, pointerPos.X);
        //         point.MoveY(timing.endTime + d, pointerPos.Y);
        //     }

        //     if (push == Push.Up)
        //     {
        //         inputBox.MoveY(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, boxPos.Y + PushValue, boxPos.Y);
        //         inputBox.MoveY(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), boxPos.Y, boxPos.Y - PushValue);
        //         point.MoveY(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, pointerPos.Y + PushValue, pointerPos.Y);
        //         point.MoveY(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), pointerPos.Y, pointerPos.Y - PushValue);
        //     }

        //     if (push == Push.Down)
        //     {
        //         inputBox.MoveY(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, boxPos.Y - PushValue, boxPos.Y);
        //         inputBox.MoveY(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), boxPos.Y, boxPos.Y + PushValue);
        //         point.MoveY(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, pointerPos.Y - PushValue, pointerPos.Y);
        //         point.MoveY(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), pointerPos.Y, pointerPos.Y + PushValue);
        //     }

        //     if (push == Push.Left)
        //     {
        //         inputBox.MoveX(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, boxPos.X + PushValue, boxPos.X);
        //         inputBox.MoveX(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), boxPos.X, boxPos.X - PushValue);
        //         point.MoveX(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, pointerPos.X + PushValue, pointerPos.X);
        //         point.MoveX(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), pointerPos.X, pointerPos.X - PushValue);
        //     }

        //     if (push == Push.Right)
        //     {
        //         inputBox.MoveX(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, boxPos.X - PushValue, boxPos.X);
        //         inputBox.MoveX(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), boxPos.X, boxPos.X + PushValue);
        //         point.MoveX(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, pointerPos.X - PushValue, pointerPos.X);
        //         point.MoveX(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), pointerPos.X, pointerPos.X + PushValue);
        //     }

        //     if (startTriggerGroup)
        //     {
        //         point.EndGroup();
        //     }

        //     spriteBox = point;
        // }
        // // end style

        // // start style
        // if (pointer == Pointer.TopRight)
        // {
        //     inputBox.Color(timing.startTime - d, Color);
        //     inputBox.ScaleVec(timing.startTime - d, widthInputBox, heightInputBox);
        //     inputBox.Fade(timing.startTime - d, timing.startTime - d + 200, 0, Fade);
        //     inputBox.Fade(timing.endTime + d - fadeTime, timing.endTime + d, Fade, 0);

        //     var pointerPos = new Vector2(boxPos.X + widthInputBox - (bitmapPointerCorner.Height / 4) - 0.5f, boxPos.Y + (bitmapPointerCorner.Height / 4) + 0.5f);
        //     var point = layer.CreateSprite("sb/dialog/pointers/pointerCorner.png", OsbOrigin.BottomCentre, pointerPos);

        //     if (startTriggerGroup)
        //     {
        //         point.StartTriggerGroup(triggerType, startTrigger, endTrigger, triggerGroup);
        //     }

        //     point.Rotate(timing.startTime, MathHelper.DegreesToRadians(45));
        //     point.Scale(timing.startTime, pointerScale);
        //     point.Color(timing.startTime - d, Color);
        //     point.Fade(timing.startTime - d, timing.startTime - d + 200, 0, Fade);
        //     point.Fade(timing.endTime + d - fadeTime, timing.endTime + d, Fade, 0);

        //     if (push == Push.None)
        //     {
        //         point.MoveX(timing.startTime - d, pointerPos.X);
        //         point.MoveY(timing.endTime + d, pointerPos.Y);
        //     }

        //     if (push == Push.Up)
        //     {
        //         inputBox.MoveY(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, boxPos.Y + PushValue, boxPos.Y);
        //         inputBox.MoveY(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), boxPos.Y, boxPos.Y - PushValue);
        //         point.MoveY(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, pointerPos.Y + PushValue, pointerPos.Y);
        //         point.MoveY(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), pointerPos.Y, pointerPos.Y - PushValue);
        //     }

        //     if (push == Push.Down)
        //     {
        //         inputBox.MoveY(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, boxPos.Y - PushValue, boxPos.Y);
        //         inputBox.MoveY(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), boxPos.Y, boxPos.Y + PushValue);
        //         point.MoveY(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, pointerPos.Y - PushValue, pointerPos.Y);
        //         point.MoveY(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), pointerPos.Y, pointerPos.Y + PushValue);
        //     }

        //     if (push == Push.Left)
        //     {
        //         inputBox.MoveX(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, boxPos.X + PushValue, boxPos.X);
        //         inputBox.MoveX(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), boxPos.X, boxPos.X - PushValue);
        //         point.MoveX(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, pointerPos.X + PushValue, pointerPos.X);
        //         point.MoveX(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), pointerPos.X, pointerPos.X - PushValue);
        //     }

        //     if (push == Push.Right)
        //     {
        //         inputBox.MoveX(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, boxPos.X - PushValue, boxPos.X);
        //         inputBox.MoveX(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), boxPos.X, boxPos.X + PushValue);
        //         point.MoveX(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, pointerPos.X - PushValue, pointerPos.X);
        //         point.MoveX(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), pointerPos.X, pointerPos.X + PushValue);
        //     }

        //     if (startTriggerGroup)
        //     {
        //         point.EndGroup();
        //     }

        //     spriteBox = point;
        // }
        // // end style

        // // start style
        // if (pointer == Pointer.BottomLeft)
        // {
        //     inputBox.Color(timing.startTime - d, Color);
        //     inputBox.ScaleVec(timing.startTime - d, widthInputBox, heightInputBox);
        //     inputBox.Fade(timing.startTime - d, timing.startTime - d + 200, 0, Fade);
        //     inputBox.Fade(timing.endTime + d - fadeTime, timing.endTime + d, Fade, 0);

        //     var pointerPos = new Vector2(boxPos.X + (bitmapPointerCorner.Height / 4) + 0.5f, boxPos.Y + heightInputBox - (bitmapPointerCorner.Height / 4) - 0.5f);
        //     var point = layer.CreateSprite("sb/dialog/pointers/pointerCorner.png", OsbOrigin.BottomCentre, pointerPos);

        //     if (startTriggerGroup)
        //     {
        //         point.StartTriggerGroup(triggerType, startTrigger, endTrigger, triggerGroup);
        //     }

        //     point.Rotate(timing.startTime, MathHelper.DegreesToRadians(-135));
        //     point.Scale(timing.startTime, pointerScale);
        //     point.Color(timing.startTime - d, Color);
        //     point.Fade(timing.startTime - d, timing.startTime - d + 200, 0, Fade);
        //     point.Fade(timing.endTime + d - fadeTime, timing.endTime + d, Fade, 0);

        //     if (push == Push.None)
        //     {
        //         point.MoveX(timing.startTime - d, pointerPos.X);
        //         point.MoveY(timing.endTime + d, pointerPos.Y);
        //     }

        //     if (push == Push.Up)
        //     {
        //         inputBox.MoveY(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, boxPos.Y + PushValue, boxPos.Y);
        //         inputBox.MoveY(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), boxPos.Y, boxPos.Y - PushValue);
        //         point.MoveY(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, pointerPos.Y + PushValue, pointerPos.Y);
        //         point.MoveY(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), pointerPos.Y, pointerPos.Y - PushValue);
        //     }

        //     if (push == Push.Down)
        //     {
        //         inputBox.MoveY(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, boxPos.Y - PushValue, boxPos.Y);
        //         inputBox.MoveY(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), boxPos.Y, boxPos.Y + PushValue);
        //         point.MoveY(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, pointerPos.Y - PushValue, pointerPos.Y);
        //         point.MoveY(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), pointerPos.Y, pointerPos.Y + PushValue);
        //     }

        //     if (push == Push.Left)
        //     {
        //         inputBox.MoveX(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, boxPos.X + PushValue, boxPos.X);
        //         inputBox.MoveX(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), boxPos.X, boxPos.X - PushValue);
        //         point.MoveX(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, pointerPos.X + PushValue, pointerPos.X);
        //         point.MoveX(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), pointerPos.X, pointerPos.X - PushValue);
        //     }

        //     if (push == Push.Right)
        //     {
        //         inputBox.MoveX(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, boxPos.X - PushValue, boxPos.X);
        //         inputBox.MoveX(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), boxPos.X, boxPos.X + PushValue);
        //         point.MoveX(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, pointerPos.X - PushValue, pointerPos.X);
        //         point.MoveX(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), pointerPos.X, pointerPos.X + PushValue);
        //     }

        //     if (startTriggerGroup)
        //     {
        //         point.EndGroup();
        //     }

        //     spriteBox = point;
        // }
        // // end style

        // // start style
        // if (pointer == Pointer.BottomRight)
        // {
        //     inputBox.Color(timing.startTime - d, Color);
        //     inputBox.ScaleVec(timing.startTime - d, widthInputBox, heightInputBox);
        //     inputBox.Fade(timing.startTime - d, timing.startTime - d + 200, 0, Fade);
        //     inputBox.Fade(timing.endTime + d - fadeTime, timing.endTime + d, Fade, 0);

        //     var pointerPos = new Vector2(boxPos.X + widthInputBox - (bitmapPointerCorner.Height / 4) - 0.5f, boxPos.Y + heightInputBox - (bitmapPointerCorner.Height / 4) - 0.5f);
        //     var point = layer.CreateSprite("sb/dialog/pointers/pointerCorner.png", OsbOrigin.BottomCentre, pointerPos);

        //     if (startTriggerGroup)
        //     {
        //         point.StartTriggerGroup(triggerType, startTrigger, endTrigger, triggerGroup);
        //     }

        //     point.Rotate(timing.startTime, MathHelper.DegreesToRadians(135));
        //     point.Scale(timing.startTime, pointerScale);
        //     point.Color(timing.startTime - d, Color);
        //     point.Fade(timing.startTime - d, timing.startTime - d + 200, 0, Fade);
        //     point.Fade(timing.endTime + d - fadeTime, timing.endTime + d, Fade, 0);

        //     if (push == Push.None)
        //     {
        //         point.MoveX(timing.startTime - d, pointerPos.X);
        //         point.MoveY(timing.endTime + d, pointerPos.Y);
        //     }

        //     if (push == Push.Up)
        //     {
        //         inputBox.MoveY(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, boxPos.Y + PushValue, boxPos.Y);
        //         inputBox.MoveY(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), boxPos.Y, boxPos.Y - PushValue);
        //         point.MoveY(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, pointerPos.Y + PushValue, pointerPos.Y);
        //         point.MoveY(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), pointerPos.Y, pointerPos.Y - PushValue);
        //     }

        //     if (push == Push.Down)
        //     {
        //         inputBox.MoveY(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, boxPos.Y - PushValue, boxPos.Y);
        //         inputBox.MoveY(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), boxPos.Y, boxPos.Y + PushValue);
        //         point.MoveY(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, pointerPos.Y - PushValue, pointerPos.Y);
        //         point.MoveY(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), pointerPos.Y, pointerPos.Y + PushValue);
        //     }

        //     if (push == Push.Left)
        //     {
        //         inputBox.MoveX(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, boxPos.X + PushValue, boxPos.X);
        //         inputBox.MoveX(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), boxPos.X, boxPos.X - PushValue);
        //         point.MoveX(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, pointerPos.X + PushValue, pointerPos.X);
        //         point.MoveX(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), pointerPos.X, pointerPos.X - PushValue);
        //     }

        //     if (push == Push.Right)
        //     {
        //         inputBox.MoveX(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, boxPos.X - PushValue, boxPos.X);
        //         inputBox.MoveX(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), boxPos.X, boxPos.X + PushValue);
        //         point.MoveX(OsbEasing.OutBack, timing.startTime - d, timing.startTime - d + 400, pointerPos.X - PushValue, pointerPos.X);
        //         point.MoveX(OsbEasing.OutSine, timing.endTime + (d * 2) - 400, timing.endTime + (d * 2), pointerPos.X, pointerPos.X + PushValue);
        //     }

        //     if (startTriggerGroup)
        //     {
        //         point.EndGroup();
        //     }

        //     spriteBox = point;
        // }
        // // end style

        if (startTriggerGroup)
        {
            inputBox.EndGroup();
        }

        spriteBox = inputBox;

        return(spriteBox);
    }
Example #4
0
    public void Overlay()
    {
        var bitmap = generator.GetMapsetBitmap("sb/HUD/overlay.png");
        var sprite = generator.GetLayer("HUD").CreateSprite("sb/HUD/overlay.png", OsbOrigin.Centre);

        sprite.Scale(OsbEasing.OutSine, startTime - FadeTime, startTime, 520.0f / bitmap.Height, 480.0f / bitmap.Height);
        sprite.Fade(startTime - FadeTime, startTime, 0, 0.2f);
        sprite.Fade(endTime, endTime + FadeTime, 0.2f, 0);
        sprite.Additive(startTime, endTime);

        var duration  = 15000;
        var loopCount = (endTime - startTime) / duration;

        for (var i = startTime; i < startTime + duration; i += 500)
        {
            var particleLeft  = generator.GetLayer("HUD").CreateSprite("sb/pixel.png", OsbOrigin.Centre);
            var particleRight = generator.GetLayer("HUD").CreateSprite("sb/pixel.png", OsbOrigin.Centre);

            var pad      = 10;
            var startX   = new Vector2(-98, 12);
            var startY   = new Vector2(0, 240);
            var endX     = new Vector2(-98, 26);
            var endY     = new Vector2(240, 436);
            var rotation = MathHelper.DegreesToRadians(90);

            particleLeft.StartLoopGroup(i, loopCount);
            particleLeft.ScaleVec(OsbEasing.Out, 0, duration / 2, 1, 0, 1, 7);
            particleLeft.ScaleVec(OsbEasing.In, duration / 2, duration, 1, 7, 1, 0);
            // first half
            particleLeft.MoveX(OsbEasing.Out, 0, duration / 2, startX.Y + pad, startX.X + pad);
            particleLeft.MoveY(0, duration / 2, startY.X, startY.Y);
            // second half
            particleLeft.MoveX(OsbEasing.InQuad, duration / 2, duration, endX.X + pad, endX.Y + pad);
            particleLeft.MoveY(duration / 2, duration, endY.X, endY.Y);
            particleLeft.EndGroup();
            particleLeft.Fade(i, 0.2f);
            particleLeft.Rotate(i, rotation);
            particleLeft.Additive(i, i + duration);

            var startX2 = new Vector2(738, 628);
            var startY2 = new Vector2(0, 240);
            var endX2   = new Vector2(738, 614);
            var endY2   = new Vector2(240, 436);
            particleRight.StartLoopGroup(i, loopCount);
            particleRight.ScaleVec(OsbEasing.Out, 0, duration / 2, 1, 0, 1, 7);
            particleRight.ScaleVec(OsbEasing.In, duration / 2, duration, 1, 7, 1, 0);
            // first half
            particleRight.MoveX(OsbEasing.Out, 0, duration / 2, startX2.Y - pad, startX2.X - pad);
            particleRight.MoveY(0, duration / 2, startY2.X, startY2.Y);
            // second half
            particleRight.MoveX(OsbEasing.InQuad, duration / 2, duration, endX2.X - pad, endX2.Y - pad);
            particleRight.MoveY(duration / 2, duration, endY2.X, endY2.Y);
            particleRight.EndGroup();
            particleRight.Fade(i, 0.2f);
            particleRight.Rotate(i, rotation);
            particleRight.Additive(i, i + duration);
        }

        var duration2  = 6500;
        var loopCount2 = (endTime - startTime) / duration2;

        for (var i = startTime; i < startTime + duration2; i += 1000)
        {
            var moveBy         = 61;
            var posLeft        = new Vector2(-25, 240);
            var posRight       = new Vector2(665, 240);
            var bitmapLines    = generator.GetMapsetBitmap("sb/HUD/line.png");
            var sideLinesLeft  = generator.GetLayer("HUD").CreateSprite("sb/HUD/line.png", OsbOrigin.CentreLeft);
            var sideLinesRight = generator.GetLayer("HUD").CreateSprite("sb/HUD/line.png", OsbOrigin.CentreRight);

            sideLinesLeft.StartLoopGroup(i, loopCount2);
            sideLinesLeft.MoveY(0, duration2, posLeft.Y, posLeft.Y);
            sideLinesLeft.MoveX(OsbEasing.OutCirc, 0, duration2, posLeft.X, posLeft.X - moveBy);
            sideLinesLeft.Scale(OsbEasing.OutCirc, 0, duration2, 370.0f / bitmapLines.Height, 458.0f / bitmapLines.Height);
            sideLinesLeft.Fade(0, duration2 / 4, 0, 0.15f);
            sideLinesLeft.Fade(duration2 - duration2 / 2, duration2, 0.15f, 0);
            sideLinesLeft.Additive(0, duration2);
            sideLinesLeft.EndGroup();

            sideLinesRight.StartLoopGroup(i, loopCount2);
            sideLinesRight.FlipH(0, duration2);
            sideLinesRight.MoveY(0, duration2, posRight.Y, posRight.Y);
            sideLinesRight.MoveX(OsbEasing.OutCirc, 0, duration2, posRight.X, posRight.X + moveBy);
            sideLinesRight.Scale(OsbEasing.OutCirc, 0, duration2, 370.0f / bitmapLines.Height, 458.0f / bitmapLines.Height);
            sideLinesRight.Fade(0, duration2 / 4, 0, 0.15f);
            sideLinesRight.Fade(duration2 - duration2 / 2, duration2, 0.15f, 0);
            sideLinesRight.Additive(0, duration2);
            sideLinesRight.EndGroup();
        }
    }