Beispiel #1
0
        public void generateLyrics(FontGenerator font, SubtitleSet subtitles, string layerName, bool additive)
        {
            var layer = GetLayer(layerName);

            if (PerCharacter)
            {
                generatePerCharacter(font, subtitles, layer, additive);
            }
            else
            {
                generatePerLine(font, subtitles, layer, additive);
            }
        }
        public void generatePerCharacter(FontGenerator font, SubtitleSet subtitles, StoryboardLayer layer, bool additive)
        {
            foreach (var subtitleLine in subtitles.Lines)
            {
                var letterY = SubtitleY;
                foreach (var line in subtitleLine.Text.Split('\n'))
                {
                    var lineWidth  = 0f;
                    var lineHeight = 0f;
                    foreach (var letter in line)
                    {
                        var texture = font.GetTexture(letter.ToString());
                        lineWidth += texture.BaseWidth * FontScale;
                        lineHeight = Math.Max(lineHeight, texture.BaseHeight * FontScale);
                    }

                    var letterX = 320 - lineWidth * 0.5f;
                    var run     = 0;
                    foreach (var letter in line)
                    {
                        var texture = font.GetTexture(letter.ToString());
                        if (!texture.IsEmpty)
                        {
                            var position = new Vector2(letterX, letterY)
                                           + texture.OffsetFor(Origin) * FontScale;
                            var lastPosition = new Vector2(letterX, letterY)
                                               + texture.OffsetFor(Origin) * FontScale + new Vector2(0, -20);
                            var firstPosition = new Vector2(letterX, letterY)
                                                + texture.OffsetFor(Origin) * FontScale + new Vector2(0, +15);

                            var sprite = layer.CreateSprite(texture.Path, Origin, position);
                            sprite.Scale(subtitleLine.StartTime, FontScale);
                            sprite.Move(subtitleLine.StartTime - 200, subtitleLine.StartTime - 200 + run, firstPosition, position);
                            sprite.Fade(subtitleLine.StartTime - 200, subtitleLine.StartTime - 200 + run, 0, 1);
                            sprite.Fade(subtitleLine.EndTime - 200, subtitleLine.EndTime, 1, 0);
                            sprite.Move(subtitleLine.EndTime - 200, subtitleLine.EndTime, position, lastPosition);
                            sprite.ScaleVec((OsbEasing)6, subtitleLine.EndTime - 200, subtitleLine.EndTime, FontScale, FontScale, FontScale, 0);
                            if (additive)
                            {
                                sprite.Additive(subtitleLine.StartTime - 200, subtitleLine.EndTime);
                            }
                        }
                        letterX += texture.BaseWidth * FontScale;
                        run     += 14;
                    }
                    letterY += lineHeight;
                }
            }
        }
        public void EN_Section9()
        {
            this.fadeOutDelay = 50;
            this.timing       = new Timing();
            var font = FontGenerator("sb/dialog/txt/9", fontEN);

            this.font = font;

            // DIALOG 1 -----------------------------------------
            string[] sentence = { "?!",
                                  "What's going on?! Let me run a quick system scan..." };

            this.timing.start = 380218;
            this.timing.end   = 385244;
            this.position     = new Vector2(105, 326);
            Dialog(sentence);

            // DIALOG 2 -----------------------------------------
            string[] sentence2 = { "....",
                                   "*Scanning*" };

            this.timing.start = 385244;
            this.timing.end   = 394853;
            this.position     = new Vector2(105, 326);
            Dialog(sentence2);

            // DIALOG 3 -----------------------------------------
            string[] sentence3 = { "It seems the remaining bugs from Section 4 have infiltrated the system,",
                                   "corrupting the mappers' databases... Wait... this was not supposed to happen...",
                                   "Why do Necho and Otosaka-Yu have to fight!" };

            this.timing.start = 394853;
            this.timing.end   = 408289;
            this.position     = new Vector2(105, 326);
            Dialog(sentence3);

            // DIALOG 4 -----------------------------------------
            string[] sentence4 = { "Unfortunately, it seems that your score will inevitably drop, but please save them!",
                                   "We can only count on you..." };

            this.fadeOutDelay = 500;
            this.timing.start = 408289;
            this.timing.end   = 417785;
            this.position     = new Vector2(105, 326);
            Dialog(sentence4);
            Tochi(380218, 417785);
        }
Beispiel #4
0
        public void Run()
        {
            PlainCoreSettings.GlfwSearchPath = Path.GetFullPath("../../../../../Native/");
            var window = new RenderWindow();

            var rs       = new TextureResourceSet(window);
            var t        = Texture.FromFile("Example.png");
            var renderer = new SpriteRenderer();
            var dl       = DynamicDisplayList <VertexPositionColorTexture> .Create(renderer);

            var sprites     = new List <SpriteRenderItem>();
            var description = FontGenerator.GenerateFont("OpenSans-Regular.ttf", 40);
            var font        = new Font(description);

            sprites.Add(SpriteDrawer.Draw(t, Color4.White, 0f, 0f));
            sprites.Add(SpriteDrawer.Draw(t, Color4.White, 100f, 100f));
            sprites.Add(SpriteDrawer.Draw(t, Color4.White, 200f, 200f));
            sprites.Add(SpriteDrawer.Draw(t, Color4.White, 400f, 400f));
            var glyphs = font.DrawString("ASDF", 500f, 400f);

            sprites.AddRange(glyphs);
            var indices = SpriteRenderer.GetIndices(sprites.Count);

            renderer.SetRenderItems(sprites.ToArray());

            while (window.IsOpen)
            {
                window.Clear(Color4.Black);

                window.PollEvents();

                renderer.RenderToData((vertices, count, tex) =>
                {
                    dl.SetVertices(vertices);
                    dl.SetIndices(indices, count);
                    rs.Texture = tex;
                    dl.Draw(rs, count);
                });

                window.Display();
            }

            dl.Dispose();
            font.Dispose();
            renderer.Dispose();
            window.Dispose();
        }
Beispiel #5
0
        private void CreateLyrics(FontGenerator font, Color4 ColorType, string Sentence, string FontName, int FontSize, float FontScale, Vector2 position, int StartTime, int EndTime)
        {
            var LetterSpacing = 5;
            var LyricsLayer   = GetLayer("Lyrics");
            var letterY       = position.Y;
            var lineWidth     = 0f;
            var lineHeight    = 0f;
            var letterSpacing = LetterSpacing * FontScale;

            foreach (var letter in Sentence)
            {
                var texture = font.GetTexture(letter.ToString());
                lineWidth += texture.BaseWidth * FontScale + letterSpacing;
                lineHeight = Math.Max(lineHeight, texture.BaseHeight * FontScale);
            }

            var letterX = position.X - lineWidth * 0.5f;

            var timePerLetter = 0;
            var i             = 0;

            foreach (var letter in Sentence)
            {
                var texture = font.GetTexture(letter.ToString());
                if (!texture.IsEmpty)
                {
                    var FadeTime     = 200;
                    var RandomRotate = Random(MathHelper.DegreesToRadians(-20), MathHelper.DegreesToRadians(20));
                    var letterPos    = new Vector2(letterX, letterY)
                                       + texture.OffsetFor(OsbOrigin.Centre) * FontScale;

                    var sprite = LyricsLayer.CreateSprite(texture.Path, OsbOrigin.Centre);

                    var preDelay = 100;
                    sprite.MoveX(OsbEasing.OutQuad, StartTime - 1000 + timePerLetter * i, StartTime - preDelay + timePerLetter * i, 610, letterPos.X);
                    sprite.MoveY(OsbEasing.Out, StartTime - 1000 + timePerLetter * i, StartTime - preDelay + timePerLetter * i, Random(330, 415), letterPos.Y);
                    sprite.Fade(StartTime - 1000 + timePerLetter * i, StartTime - 500 + timePerLetter * i, 0, 0.4);
                    sprite.Fade(EndTime - preDelay - (FadeTime * 1.5) + timePerLetter * i, EndTime - preDelay + timePerLetter * i, 0.4, 0);
                    sprite.Scale(StartTime - preDelay, FontScale);

                    sprite.Color(StartTime - preDelay, ColorType);
                    i++;
                }
                letterX += texture.BaseWidth * FontScale + letterSpacing;
            }
            letterY += lineHeight;
        }
        public void JP_Section9()
        {
            this.fadeOutDelay = 50;
            this.timing       = new Timing();
            var font = FontGenerator("sb/dialog/txt/9/jp", fontJP);

            this.font = font;

            // DIALOG 1 -----------------------------------------
            string[] sentence = { "?!",
                                  "何が起こっているの?!私にシステムスキャンをさせてください..." };

            this.timing.start = 380218;
            this.timing.end   = 385244;
            this.position     = new Vector2(105, 326);
            Dialog(sentence);

            // DIALOG 2 -----------------------------------------
            string[] sentence2 = { "....",
                                   "*Scanning*" };

            this.timing.start = 385244;
            this.timing.end   = 394853;
            this.position     = new Vector2(105, 326);
            Dialog(sentence2);

            // DIALOG 3 -----------------------------------------
            string[] sentence3 = { "見た感じセクション4からの残りのバグはシステムに侵入し、マッパー達のデーターベースを破損しました...",
                                   "待って。こういうことがあってはダメです...なぜNechoとOtosaka-Yuは戦う必要性があるのですか!" };

            this.timing.start = 394853;
            this.timing.end   = 407418;
            this.position     = new Vector2(105, 326);
            Dialog(sentence3);

            // DIALOG 4 -----------------------------------------
            string[] sentence4 = { "残念ながらあなたのスコアは必然的に落ちますが、彼たちを助けてください!",
                                   "私たちはあなたにしか頼れません..." };

            this.fadeOutDelay = 500;
            this.timing.start = 407418;
            this.timing.end   = 416214;
            this.position     = new Vector2(105, 326);
            Dialog(sentence4);
            Tochi(380218, 416214);
        }
        private void generateLyrics(FontGenerator font, SubtitleSet subtitles)
        {
            foreach (var subtitleLine in subtitles.Lines)
            {
                var letterY = 240f;
                foreach (var line in subtitleLine.Text.Split('\n'))
                {
                    var lineWidth  = 0f;
                    var lineHeight = 0f;
                    foreach (var letter in line)
                    {
                        var texture = font.GetTexture(letter.ToString());
                        lineWidth += texture.BaseWidth * fontscale;
                        lineHeight = Math.Max(lineHeight, texture.BaseHeight * fontscale);
                    }

                    var     letterX = 320 - lineWidth * 0.5f;
                    Vector2 center  = new Vector2(320, 240);
                    foreach (var letter in line)
                    {
                        var texture = font.GetTexture(letter.ToString());
                        if (!texture.IsEmpty)
                        {
                            var position = new Vector2(letterX, (float)(letterY - lineHeight * 0.5)) // Moving Lyics To Y center
                                           + texture.OffsetFor(OsbOrigin.Centre) * fontscale;

                            var distance = Vector2.Subtract(position, center); // Distance between each letter and center

                            var sprite = GetLayer("").CreateSprite(texture.Path, OsbOrigin.Centre);
                            // Move away from center
                            sprite.MoveY(subtitleLine.StartTime, position.Y);
                            sprite.MoveX(subtitleLine.StartTime, subtitleLine.EndTime, position.X, position.X + distance.X * 0.25);
                            sprite.Scale(subtitleLine.StartTime, fontscale);
                            sprite.Fade(subtitleLine.StartTime, subtitleLine.StartTime + Constants.beatLength * 0.25, 0, 1);
                            // Move back to center
                            distance = Vector2.Subtract(sprite.PositionAt(subtitleLine.EndTime), center);
                            sprite.MoveX(subtitleLine.EndTime, subtitleLine.EndTime + Constants.beatLength * 0.25, sprite.PositionAt(subtitleLine.EndTime).X, Vector2.Subtract(sprite.PositionAt(subtitleLine.EndTime), distance).X);
                            sprite.Fade(subtitleLine.EndTime, subtitleLine.EndTime + Constants.beatLength * 0.25, 1, 0);
                            sprite.Scale(subtitleLine.EndTime, subtitleLine.EndTime + Constants.beatLength * 0.25, fontscale, 0);
                        }
                        letterX += texture.BaseWidth * fontscale;
                    }
                    letterY += lineHeight;
                }
            }
        }
Beispiel #8
0
        public void generateLyrics(FontGenerator font, SubtitleSet subtitles, string layerName)
        {
            var layer = GetLayer(layerName);

            foreach (var subtitleLine in subtitles.Lines)
            {
                float letterY    = SubtitleY;
                float whiteSpace = 3f;
                foreach (var line in subtitleLine.Text.Split('\n'))
                {
                    var lineWidth  = 0f;
                    var lineHeight = 0f;
                    foreach (var letter in line)
                    {
                        var texture = font.GetTexture(letter.ToString());
                        lineWidth += texture.BaseWidth * mainFontScale + whiteSpace;
                        lineHeight = Math.Max(lineHeight, texture.BaseHeight * mainFontScale);
                    }
                    var    letterX      = 320 - lineWidth * 0.5f;
                    double relativeTime = subtitleLine.StartTime;
                    foreach (var letter in line)
                    {
                        var texture = font.GetTexture(letter.ToString());
                        if (!texture.IsEmpty)
                        {
                            var position = new Vector2(letterX, letterY)
                                           + texture.OffsetFor(OsbOrigin.Centre) * mainFontScale;
                            Vector2 offscreen   = Vector2.Subtract(new Vector2(-200, position.Y), position);
                            Vector2 screenright = new Vector2(600, position.Y);


                            var sprite = layer.CreateSprite(texture.Path, OsbOrigin.Centre, position);
                            sprite.Scale(relativeTime, mainFontScale);
                            sprite.Fade(relativeTime - 227, relativeTime, 0, 1);
                            sprite.Move(subtitleLine.EndTime - 227, subtitleLine.EndTime, position, Vector2.Add(position, new Vector2(Random(-5, 5), Random(-20, 20))));
                            sprite.Scale(subtitleLine.EndTime - 227, subtitleLine.EndTime, mainFontScale, 0);
                            sprite.Fade(subtitleLine.EndTime - 227, subtitleLine.EndTime, 1, 0);
                        }
                        letterX      += texture.BaseWidth * mainFontScale + whiteSpace;
                        relativeTime += 114 / 2;
                    }
                    letterY += lineHeight;
                }
            }
        }
    public DialogText(StoryboardObjectGenerator generator, string layerName, FontGenerator font, OsbSprite sprite, Color4 Color, Position position, DialogTiming timing, float fade, int FadeIn, int FadeOut, int fontSize, bool centre)
    {
        //And this pack of lines are just the way we set our local variable with the parameters values of the constructor.
        this.generator = generator;
        this.font      = font;

        this.startTime = timing.startTime;
        this.endTime   = timing.endTime;
        this.position  = position;
        this.fade      = fade;
        this.fontSize  = fontSize;
        this.Color     = Color;
        this.lineWidth = 0f;
        this.centre    = centre;
        this.layerName = layerName;
        this.FadeIn    = FadeIn;
        this.FadeOut   = FadeOut;
    }
Beispiel #10
0
        public void generatePerLine(FontGenerator font, SubtitleSet subtitles, StoryboardLayer layer, bool additive)
        {
            foreach (var line in subtitles.Lines)
            {
                var texture  = font.GetTexture(line.Text);
                var position = new Vector2(320 - texture.BaseWidth * FontScale * 0.5f, SubtitleY)
                               + texture.OffsetFor(Origin) * FontScale;

                var sprite = layer.CreateSprite(texture.Path, Origin, position);
                sprite.Scale(line.StartTime, line.EndTime, FontScale, FontScale - 0.05);
                sprite.Fade(line.StartTime - 200, line.StartTime + 200, 0, 1);
                sprite.Fade(line.EndTime - 200, line.EndTime, 1, 0);
                if (additive)
                {
                    sprite.Additive(line.StartTime - 200, line.EndTime);
                }
            }
        }
Beispiel #11
0
        /* |||||||||||||||||||||||||||||||||||||||||||| SYSTEM DIALOGUES |||||||||||||||||||||||||||||||||||||||||||| */

        public void EN_System()
        {
            this.timing = new Timing();
            var font = FontGenerator("sb/dialog/txt/system", fontEN);

            this.font = font;

            // DIALOG 1 -----------------------------------------
            string[] sentence = { "Get ready!",
                                  "Your mission is about to begin." };

            this.showBox      = true;
            this.timing.start = 40630;
            this.timing.end   = 48937;
            this.position     = new Vector2(40, 430);
            this.push         = DialogBoxes.Push.Right;
            Dialog(sentence);
        }
Beispiel #12
0
        public void JP_System()
        {
            this.timing = new Timing();
            var font = FontGenerator("sb/dialog/txt/system/jp", fontJP);

            this.font = font;

            // DIALOG 1 -----------------------------------------
            string[] sentence = { "準備してください!",
                                  "あなたのミッションはもうすぐ始まります。" };

            this.showBox      = true;
            this.timing.start = 40630;
            this.timing.end   = 48937;
            this.position     = new Vector2(40, 430);
            this.push         = DialogBoxes.Push.Right;
            Dialog(sentence);
        }
Beispiel #13
0
 public static string InvalidateFontsAction()
 {
     foreach (var configPath in EnumerateFontConfigs(AssetPath.Combine(The.Workspace.AssetsDirectory, "Fonts/")))
     {
         Console.WriteLine($"Processing {configPath}..");
         try {
             var tftPath = Path.ChangeExtension(configPath, "tft");
             FontGenerator.UpdateCharSetsAndGenerateFont(
                 new Uri(The.Workspace.AssetsDirectory + "\\").MakeRelativeUri(new Uri(configPath)).OriginalString,
                 The.Workspace.AssetsDirectory
                 );
         } catch (Exception e) {
             Console.WriteLine($"Failed to generate font using {configPath} config");
             Console.WriteLine(e);
         }
     }
     return(null);
 }
Beispiel #14
0
        public override void Generate()
        {
            layer        = GetLayer("Main");
            beatduration = Beatmap.GetTimingPointAt(62840).BeatDuration;

            rnd = new Random();

            // Init the font

            font = LoadFont("sb/AlienFontGenerated", new FontDescription()
            {
                FontPath         = "fonts/Alien_lines_1.9.ttf",
                FontSize         = 72,
                Color            = Color4.White,
                Padding          = Vector2.Zero,
                FontStyle        = System.Drawing.FontStyle.Regular,
                TrimTransparency = true,
                EffectsOnly      = false,
                Debug            = false,
            },
                            new FontOutline()
            {
                Thickness = 0,
                Color     = Color4.Transparent,
            },
                            new FontShadow()
            {
                Thickness = 0,
                Color     = Color4.Transparent,
            });

            generateLine(42735, 62840, 25, true);
            generateLine(42735, 62840, 65, false);
            generateLine(42735, 62840, 105, true);
            generateLine(42735, 62840, 145, false);
            generateLine(42735, 62840, 185, true);
            generateLine(42735, 62840, 225, false);
            generateLine(42735, 62840, 265, true);
            generateLine(42735, 62840, 305, false);
            generateLine(42735, 62840, 345, true);
            generateLine(42735, 62840, 385, false);
            generateLine(42735, 62840, 425, false);
            generateLine(42735, 62840, 465, true);
        }
Beispiel #15
0
        public void generateSukiLyrics(FontGenerator font, SubtitleSet subtitles, string layerName)
        {
            var layer = GetLayer(layerName);

            foreach (var subtitleLine in subtitles.Lines)
            {
                var   letterY    = 240f;
                float whiteSpace = 6f;
                foreach (var line in subtitleLine.Text.Split('\n'))
                {
                    var lineWidth  = 0f;
                    var lineHeight = 0f;
                    foreach (var letter in line)
                    {
                        var texture = font.GetTexture(letter.ToString());
                        lineWidth += (texture.BaseWidth + whiteSpace) * sideFontScale;
                        lineHeight = Math.Max(lineHeight, texture.BaseHeight * sideFontScale);
                    }
                    var     letterX = 320 - lineWidth * 0.5f;
                    Vector2 center  = new Vector2(320, 240);
                    foreach (var letter in line)
                    {
                        var texture = font.GetTexture(letter.ToString());
                        if (!texture.IsEmpty)
                        {
                            var position = new Vector2(letterX, (float)(letterY - lineHeight * 0.5))
                                           + texture.OffsetFor(OsbOrigin.Centre) * sideFontScale;

                            var distance = Vector2.Subtract(position, center) * 0.3f;

                            var sprite = layer.CreateSprite(texture.Path, OsbOrigin.Centre);
                            sprite.MoveX(subtitleLine.StartTime - 227, subtitleLine.StartTime, 320, position.X);
                            sprite.MoveX(subtitleLine.StartTime, subtitleLine.EndTime, sprite.PositionAt(subtitleLine.StartTime).X, Vector2.Add(sprite.PositionAt(subtitleLine.StartTime), distance).X);
                            sprite.Scale(subtitleLine.StartTime, sideFontScale);
                            sprite.Fade(subtitleLine.StartTime - 227, subtitleLine.StartTime, 0, 1);
                            sprite.Fade(subtitleLine.EndTime - 227, subtitleLine.EndTime, 1, 0);
                            sprite.Additive(subtitleLine.StartTime - 227, subtitleLine.EndTime);
                        }
                        letterX += (texture.BaseWidth + whiteSpace) * sideFontScale;
                    }
                    letterY += lineHeight;
                }
            }
        }
Beispiel #16
0
    public void SetupFont()
    {
        font = LoadFont("sb/f/c", new FontDescription()
        {
            FontPath = "fonts/Montserrat-Light.ttf",
            FontSize = 38,
            Color    = Color4.White
        });

        string[] creditList =
        {
            "Tenkai", "Kroytz"
        };

        foreach (string credit in creditList)
        {
            font.GetTexture(credit);
        }
    }
Beispiel #17
0
        protected override void LoadContent()
        {
            keyBoardReader = new KeyBoardReader();
            _spriteBatch   = new SpriteBatch(GraphicsDevice);
            #region add worlds to level1
            levelsWorld1 = new List <IRoomLayout>();
            levelsWorld1.Add(new StartWorldLayout());
            levelsWorld1.Add(new World1Room1Layout());
            levelsWorld1.Add(new World1Room2Layout());
            levelsWorld1.Add(new World1Room3Layout());
            levelsWorld1.Add(new World1Room4Layout());
            #endregion
            #region add menu items to the menus
            startMenuItems = new List <string>
            {
                "Pigit", "Play", "Exit Game", "->"
            };

            pauseMenuItems = new List <string>
            {
                "Pause", "Resume", "Main Menu", "->"
            };

            deadMenuItems = new List <string>
            {
                "Dead", "Main Menu", "Exit Game", "->"
            };

            endMenuItems = new List <string>
            {
                "End", "Main Menu", "Exit Game", "->"
            };
            #endregion
            #region generate
            fontGenerator   = new FontGenerator(Content);
            generateSprites = new SpriteGenerator(Content);
            musicGenerator  = new MusicGenerator(Content);
            #endregion
            InitializeGameObjects();
        }
Beispiel #18
0
        public void GenerateSongName(FontGenerator font, bool additive, int Start, int End, string Sentence)
        {
            double    Beat       = Beatmap.GetTimingPointAt(Start).BeatDuration;
            float     letterX    = 320;
            var       letterY    = 220;
            var       lineWidth  = 0f;
            var       lineHeight = 0f;
            float     FontScale  = 0.5f;
            int       Delay      = 60;
            OsbOrigin Origin     = OsbOrigin.Centre;

            foreach (var letter in Sentence)
            {
                var texture = font.GetTexture(letter.ToString());
                lineWidth += texture.BaseWidth * FontScale;
                lineHeight = Math.Max(lineHeight, texture.BaseHeight * FontScale);
            }
            var letterCenter = letterX;

            letterX = letterX - lineWidth * 0.5f;

            foreach (var letter in Sentence)
            {
                var texture = font.GetTexture(letter.ToString());
                if (!texture.IsEmpty)
                {
                    var position = new Vector2(letterX, letterY)
                                   + texture.OffsetFor(Origin) * FontScale;

                    var sprite = GetLayer("Sentence").CreateSprite(texture.Path, Origin, position);

                    sprite.Scale(OsbEasing.OutBack, Start + Delay, Start + Delay + 300, 0, FontScale);
                    sprite.Fade(Start + Delay, Start + Delay + 300, 0, 1);
                    sprite.Fade(End, End + 300, 1, 0);

                    Delay += 60;
                }
                letterX += texture.BaseWidth * FontScale;
            }
        }
        public override void Generate()
        {
            Font = SetFont();
            GenerateCredit("SAKURABURST", 7687, 15099, 0.5f, 320, 216);
            GenerateCredit("SKYSHIFTER VIP", 8040, 15099, 25, 320, 265);


            GenerateCredit("BEATMAP", 16158, 23216, 0.3f, 320, 130);

            GenerateCredit("STORYBOARD", 17569, 23216, 0.3f, 320, 280);

            GenerateCredit("SCUBDOMINO & SHIZUKU-", 18981, 23216, 0.3f, 320, 153);
            GenerateCredit("COPPERTINE - DARKY1 - PONO", 20393, 23216, 0.3f, 320, 303);

            var partLines = File.ReadAllLines(ProjectPath + "/parts.txt");

            foreach (var line in partLines)
            {
                var values = line.Split(';');
                GeneratePartName(values[0], int.Parse(values[1]), int.Parse(values[2]));
            }
        }
Beispiel #20
0
        public void generatePerLine(FontGenerator font, SubtitleSet subtitles, StoryboardLayer layer, bool additive)
        {
            foreach (var line in subtitles.Lines)
            {
                var texture  = font.GetTexture(line.Text);
                var position = new Vector2(320 - texture.BaseWidth * FontScale * 0.5f, SubtitleY)
                               + texture.OffsetFor(Origin) * FontScale;

                var sprite  = layer.CreateSprite(texture.Path, Origin, position);
                var glitch1 = layer.CreateSprite(texture.Path, Origin, position);
                var glitch2 = layer.CreateSprite(texture.Path, Origin, position);
                sprite.Scale(OsbEasing.Out, line.StartTime, line.StartTime + 300, 0, FontScale * 0.9);
                sprite.Scale(OsbEasing.In, line.StartTime + 300, line.EndTime, FontScale * 0.9, FontScale);
                glitch1.Color(line.StartTime + 900, 0.8, 0.06, 0.223);
                glitch2.Color(line.StartTime + 900, 0.058, 0.98, 0.98);

                glitch1.Fade(line.StartTime + 300, line.StartTime + 400, 0, 0);
                glitch1.Fade(line.StartTime + 400, line.StartTime + 500, 0.25, 0.25);
                glitch1.Fade(line.StartTime + 500, line.EndTime, 0, 0);
                glitch1.Scale(OsbEasing.Out, line.StartTime, line.StartTime + 300, 0, FontScale * 0.9);
                glitch1.Scale(OsbEasing.In, line.StartTime + 300, line.EndTime, FontScale * 0.9, FontScale);
                glitch1.Move(line.StartTime + 300, 317, 218);

                glitch2.Fade(line.StartTime + 350, line.StartTime + 450, 0, 0);
                glitch2.Fade(line.StartTime + 450, line.StartTime + 550, 0.25, 0.25);
                glitch2.Fade(line.StartTime + 550, line.EndTime, 0, 0);
                glitch2.Scale(OsbEasing.Out, line.StartTime, line.StartTime + 350, 0, FontScale * 0.9);
                glitch2.Scale(OsbEasing.In, line.StartTime + 350, line.EndTime, FontScale * 0.9, FontScale);
                glitch2.Move(line.StartTime + 350, 323, 218);

                sprite.Fade(line.StartTime, line.EndTime, 1, 0);
                if (additive)
                {
                    sprite.Additive(line.StartTime - 200, line.EndTime);
                }
            }
        }
Beispiel #21
0
        public void generatePerLine(FontGenerator font, SubtitleSet subtitles, StoryboardLayer layer, bool additive)
        {
            foreach (var line in subtitles.Lines)
            {
                var texture  = font.GetTexture(line.Text);
                var position = new Vector2(320 - texture.BaseWidth * FontScale * 0.5f, SubtitleY)
                               + texture.OffsetFor(Origin) * FontScale;

                var sprite = layer.CreateSprite(texture.Path, Origin, position);
                sprite.Rotate(line.StartTime, 0.4);
                sprite.Scale(line.StartTime, FontScale);
                sprite.Fade(line.StartTime - 200, line.StartTime, 0, 1);
                sprite.Fade(line.EndTime - 200, line.EndTime, 1, 0);
                double posx      = -25;
                double posxAfter = -25;
                double posy      = 220;
                double posyAfter = 220;
                sprite.MoveX(OsbEasing.Out, line.StartTime - 500, line.StartTime, posx - 500, posx);
                sprite.MoveY(OsbEasing.Out, line.StartTime - 500, line.StartTime, posy - 200, posy);

                for (double i = line.StartTime; i <= line.EndTime; i += 75)
                {
                    posxAfter += 1;
                    posyAfter += 0.5;
                    sprite.MoveX(i, i + 75, posx, posxAfter);
                    sprite.MoveY(i, i + 75, posy, posyAfter);
                    posx = posxAfter;
                    posy = posyAfter;
                }
                sprite.MoveX(OsbEasing.InCubic, line.EndTime - 500, line.EndTime + 250, posxAfter - 6, posx + 475);
                sprite.MoveY(OsbEasing.InCubic, line.EndTime - 500, line.EndTime + 250, posyAfter - 3, posy + 200);
                if (additive)
                {
                    sprite.Additive(line.StartTime - 200, line.EndTime);
                }
            }
        }
        public void generatePerLine(FontGenerator font, SubtitleSet subtitles, StoryboardLayer layer, bool additive)
        {
            var positionList = new TupleList <int, int> {
                { 120, 100 }, //I'll
                { 230, 100 }, //find
                { 370, 100 }, //some
                { 120, 138 }, //peace
                { 120, 192 }, //this
                { 120, 254 }, //time
                { 306, 194 }, //i'll
                { 410, 194 }, //let
                { 306, 254 }, //you
                { 120, 312 }, //Know
                { 155, 160 }, //we're
                { 325, 160 }, //gonna
                { 155, 206 }, //grow
                { 110, 100 }, //i'm
                { 180, 100 }, //gonna
                { 250, 146 }, //show
                { 316, 190 }, //you
                { 110, 146 }, //my
                { 110, 240 }, //Heart
                { 340, 240 }, //and
                { 110, 300 }, //soul
                { 200, 150 }, // this
                { 325, 150 }, //time
                { 138, 190 }, //this
                { 325, 190 }, //time
                { 170, 140 }, //my
                { 150, 180 }, //love
                { 3, 1 },
                { 1, 1 }
            };
            var scaleList = new TupleList <double, double> {
                { 0.35, 0.35 },  //I'll
                { 0.35, 0.35 },  //find
                { 0.35, 0.35 },  //some
                { 0.845, 0.50 }, //peace
                { 0.55, 0.55 },  //this
                { 0.55, 0.55 },  //time
                { 0.45, 0.45 },  //i'll
                { 0.42, 0.45 },  //let
                { 0.65, 0.53 },  //you
                { 0.900, 0.60 }, //Know
                { 0.35, 0.35 },  //we're
                { 0.35, 0.35 },  //gonna
                { 0.78, 1.3 },   //grow
                { 0.35, 0.35 },  //i'm
                { 0.35, 0.35 },  //gonna
                { 0.35, 0.35 },  //you
                { 0.35, 0.35 },  //show
                { 0.65, 0.80 },  //my
                { 0.45, 0.50 },  //Heart
                { 0.45, 0.5 },   //and
                { 1.1, 0.80 },   //soul
                { 0.35, 0.35 },  // this
                { 0.35, 0.35 },  //time
                { 0.55, 0.55 },  //this
                { 0.55, 0.55 },  //time
                { 0.35, 0.35 },  //my
                { 0.75, 0.75 },  //love
            };
            var angleList = new List <int> {
                0, //I'll
                0, //find
                0, //some
                0, //peace
                0, //this
                0, //time
                0, //i'll
                0, //let
                0, //you
                0, //Know
                0, //we're
                0, //gonna
                0, //grow
                0, //i'm
                0, //gonna
                0, //show
                0, //you
                0, //my
                0, //Heart
                0, //and
                0, //soul
                0, // this
                0, //time
                0, //this
                0, //time
                0, //my
                0, //love
            };
            var colorList = new List <Color4> {
                Color4.White,          //I'll
                Color4.White,          //find
                Color4.White,          //some
                Color4.MediumSeaGreen, //peace
                Color4.White,          //this
                Color4.MediumSeaGreen, //time
                Color4.White,          //i'll
                Color4.White,          //let
                Color4.White,          //you
                Color4.CornflowerBlue, //Know
                Color4.White,          //we're
                Color4.White,          //gonna
                Color4.CornflowerBlue, //grow
                Color4.White,          //i'm
                Color4.White,          //gonna
                Color4.CornflowerBlue, //show
                Color4.White,          //you
                Color4.White,          //my
                Color4.Red,            //Heart
                Color4.White,          //and
                Color4.Red,            //soul
                Color4.White,          // this
                Color4.MediumSeaGreen, //time
                Color4.White,          //this
                Color4.MediumSeaGreen, //time
                Color4.White,          //my
                Color4.Red,            //love
            };
            var run = 0;

            foreach (var line in subtitles.Lines)
            {
                var texture  = font.GetTexture(line.Text);
                var position = new Vector2(positionList[run].Item1, positionList[run].Item2);
                var sprite   = layer.CreateSprite(texture.Path, Origin, position);
                sprite.ScaleVec(line.StartTime, scaleList[run].Item1, scaleList[run].Item2);
                sprite.Fade(line.StartTime - 100, line.StartTime, 0, 1);
                sprite.Fade(line.EndTime - 100, line.EndTime, 1, 0);
                sprite.Rotate(line.EndTime - 100, MathHelper.DegreesToRadians(angleList[run]));
                sprite.Color(line.StartTime, colorList[run]);
                run += 1;
            }
        }
Beispiel #23
0
        public void generatePerLine(FontGenerator font, SubtitleSet subtitles, StoryboardLayer layer, bool additive)
        {
            foreach (var line in subtitles.Lines)
            {
                Vector2[] shakePosition;
                shakePosition = new Vector2[10];
                Vector2[] shakePositionR;
                shakePositionR = new Vector2[10];
                Vector2[] shakePositionB;
                shakePositionB = new Vector2[10];

                for (int i = 0; i < 10; i++)
                {
                    shakePosition[i] = new Vector2(
                        (float)Random(0, 2),
                        (float)Random(0, 2)
                        );
                    shakePositionR[i] = new Vector2(
                        (float)Random(0, 5),
                        (float)Random(0, 5)
                        );
                    shakePositionB[i] = new Vector2(
                        (float)Random(0, 5),
                        (float)Random(0, 5)
                        );
                }

                var beat      = 509;
                int loopCount = (int)Math.Ceiling((line.EndTime - line.StartTime - 200) / (10 * beat / 4));
                var value     = line.Text;

                var lineY = SubtitleY;
                if (line.StartTime > 209149)
                {
                    lineY = 150;
                }

                var texture  = font.GetTexture(line.Text);
                var position = new Vector2(320 - texture.BaseWidth * FontScale * 0.5f, lineY)
                               + texture.OffsetFor(Origin) * FontScale;



                if (value != "Killing" || (line.StartTime < 38302 && line.StartTime >= 54573))
                {
                    var RCopy = layer.CreateSprite(texture.Path, Origin, position);
                    var BCopy = layer.CreateSprite(texture.Path, Origin, position);

                    RCopy.ScaleVec(line.StartTime, FontScale, FontScale);
                    RCopy.Fade(line.StartTime - 200, line.StartTime, 0, 0.5);
                    RCopy.Fade(line.EndTime - 200, line.EndTime, 0.5, 0);
                    RCopy.Color(line.StartTime - 200, 255, 0, 0);

                    RCopy.StartLoopGroup(line.StartTime - 200, loopCount);
                    for (int i = 0; i < 10; i++)
                    {
                        RCopy.Move(OsbEasing.OutBounce, beat / 4 * i, beat / 4 * (i + 1), position + shakePositionR[i], position - shakePositionR[i] / 2);
                    }
                    RCopy.EndGroup();


                    RCopy.ScaleVec(line.EndTime - 200, line.EndTime, FontScale, FontScale, FontScale + 0.5, 0);



                    BCopy.ScaleVec(line.StartTime, FontScale, FontScale);
                    BCopy.Fade(line.StartTime - 200, line.StartTime, 0, 0.5);
                    BCopy.Fade(line.EndTime - 200, line.EndTime, 0.5, 0);
                    BCopy.Color(line.StartTime - 200, 0.2, 0.8, 1);

                    BCopy.StartLoopGroup(line.StartTime - 200, loopCount);
                    for (int i = 0; i < 10; i++)
                    {
                        BCopy.Move(OsbEasing.OutBounce, beat / 4 * i, beat / 4 * (i + 1), position + shakePositionB[i], position - shakePositionB[i] / 2);
                    }
                    BCopy.EndGroup();

                    BCopy.ScaleVec(line.EndTime - 200, line.EndTime, FontScale, FontScale, FontScale + 0.5, 0);

                    RCopy.Additive(line.StartTime - 200, line.EndTime);
                    BCopy.Additive(line.StartTime - 200, line.EndTime);
                }

                var sprite = layer.CreateSprite(texture.Path, Origin, position);

                sprite.ScaleVec(line.StartTime, FontScale, FontScale);
                sprite.Fade(line.StartTime - 200, line.StartTime, 0, 1);
                sprite.Fade(line.EndTime - 200, line.EndTime, 1, 0);

                sprite.StartLoopGroup(line.StartTime - 200, loopCount);
                for (int i = 0; i < 10; i++)
                {
                    sprite.Move(OsbEasing.OutBounce, beat / 4 * i, beat / 4 * (i + 1), position + shakePosition[i], position - shakePosition[i] / 2);
                }
                sprite.EndGroup();


                sprite.ScaleVec(line.EndTime - 200, line.EndTime, FontScale, FontScale, FontScale + 0.5, 0);


                if (additive)
                {
                    sprite.Additive(line.StartTime - 200, line.EndTime);
                }

                if (value == "Killing")
                {
                    sprite.Color(line.StartTime - 200, 0.8, 0, 0);
                }
            }
        }
Beispiel #24
0
 public IconCache()
 {
     using (var stream = File.OpenRead("FontAwesome.ttf"))
         _generator = new FontGenerator(new TrueTypeSharp.TrueTypeFont(stream));
 }
Beispiel #25
0
        public void generatePerCharacter(FontGenerator font, SubtitleSet subtitles, StoryboardLayer layer, string TimestampSplit)
        {
            var TimestampArray = Array.ConvertAll(TimestampSplit.Split(','), s => int.Parse(s));
            var LineStart      = 0;
            var LineEnd        = 0;
            var RunLine        = 0f;
            var aniLyrics      = 0;

            var trace = layer.CreateSprite(TracePath, OsbOrigin.Centre);

            if (StartTrace == 49997)
            {
                trace.Move(StartTrace - tick(0, 2) - tick(0, 1), StartTrace - tick(0, 1), new Vector2(-120, 400), new Vector2(70, 400));
                trace.Fade(StartTrace - tick(0, 2) - tick(0, 1), StartTrace - tick(0, 1), 0, 0.65);
                trace.ScaleVec(StartTrace - tick(0, 2) - tick(0, 1), StartTrace - tick(0, 1), 0, 0.15, 0.22, 0.15);
                trace.Color(StartTrace - tick(0, 2) - tick(0, 1), 0, 0, 0);
                trace.Fade(EndTrace - tick(0, 0.5), EndTrace, 0.65, 0);
            }
            else
            {
                trace.FlipH(StartTrace - tick(0, 2) - tick(0, 1), EndTrace);
                trace.FlipV(StartTrace - tick(0, 2) - tick(0, 1), EndTrace);
                trace.Move(StartTrace - tick(0, 2) - tick(0, 1), StartTrace - tick(0, 1), new Vector2(730, 400), new Vector2(540, 400));
                trace.Fade(StartTrace - tick(0, 2) - tick(0, 1), StartTrace - tick(0, 1), 0, 0.65);
                trace.ScaleVec(StartTrace - tick(0, 2) - tick(0, 1), StartTrace - tick(0, 1), 0, 0.15, 0.22, 0.15);
                trace.Color(StartTrace - tick(0, 2) - tick(0, 1), 0, 0, 0);
                trace.Fade(EndTrace - tick(0, 0.5), EndTrace, 0.65, 0);
            }

            foreach (var subtitleLine in subtitles.Lines)
            {
                foreach (var line in subtitleLine.Text.Split('\0'))
                {
                    var letterX = SubtitleX;
                    var letterY = SubtitleY;

                    var lineWidth  = 0f;
                    var lineHeight = 0f;

                    for (int x = 0; x < TimestampArray.Length; x++)
                    {
                        if (LineStart == TimestampArray[x])
                        {
                            continue;
                        }
                        if (TimestampArray[x] <= subtitleLine.StartTime && TimestampArray[x + 1] >= subtitleLine.StartTime)
                        {
                            LineStart = TimestampArray[x];
                            LineEnd   = TimestampArray[x + 1];
                            RunLine   = 0f;
                            aniLyrics = 0;
                            break;
                        }
                    }

                    foreach (var letter in line)
                    {
                        var texture = font.GetTexture(letter.ToString());
                        lineWidth += texture.BaseWidth * FontScale;
                        lineHeight = Math.Max(lineHeight, texture.BaseHeight * FontScale);
                        if (!texture.IsEmpty)
                        {
                            var position = new Vector2(letterX + RunLine, letterY)
                                           + texture.OffsetFor(Origin) * FontScale;
                            var sprite = layer.CreateSprite(texture.Path, Origin);
                            if (letter == '$')
                            {
                                letterX += texture.BaseWidth * FontScale;
                                continue;
                            }
                            //begin
                            sprite.Scale(LineStart + aniLyrics - tick(0, 0.5) + tick(0, 2), FontScale - 0.2f);
                            sprite.Fade(LineStart + aniLyrics - tick(0, 0.5) + tick(0, 2), LineStart + aniLyrics - tick(0, 0.75), 0, 0.4);
                            sprite.Move(LineStart + aniLyrics - tick(0, 0.5) + tick(0, 2), LineStart + aniLyrics - tick(0, 0.75), position - new Vector2(0, 20), position);
                            //pulse
                            sprite.Scale(subtitleLine.StartTime - 50, subtitleLine.StartTime + 50, FontScale - 0.2f, FontScale);
                            sprite.Fade(subtitleLine.StartTime - 50, subtitleLine.StartTime + 50, 0.4, 1);
                            //end
                            sprite.Scale(subtitleLine.StartTime + 50, subtitleLine.EndTime + tick(0, 1), FontScale, FontScale - 0.2f);
                            sprite.Fade(subtitleLine.StartTime + 50, subtitleLine.EndTime + tick(0, 1), 1, 0);
                        }
                        letterX += texture.BaseWidth * FontScale;
                    }
                    RunLine   += letterX - SubtitleX;
                    letterY   += lineHeight;
                    aniLyrics += 40;
                }
            }
        }
        public override void Generate()
        {
            layer        = GetLayer("Foreground");
            beatduration = Beatmap.GetTimingPointAt(2000).BeatDuration;

            // Setting the fonts
            fontNormal = LoadFont("sb/PianoNotesRegular", new FontDescription()
            {
                FontPath         = "fonts/Altero-Outline.otf",
                FontSize         = 72,
                Color            = Color4.White,
                Padding          = new Vector2(5, 5),
                FontStyle        = FontStyle.Regular,
                TrimTransparency = true,
                EffectsOnly      = false,
                Debug            = false,
            },
                                  new FontOutline()
            {
                Thickness = 0,
                Color     = Color.Transparent,
            },
                                  new FontShadow()
            {
                Thickness = 0,
                Color     = Color.Transparent,
            });


            fontBold = LoadFont("sb/PianoNotesBold", new FontDescription()
            {
                FontPath         = "fonts/Altero-Regular.otf",
                FontSize         = 72,
                Color            = Color4.White,
                Padding          = new Vector2(5, 5),
                FontStyle        = FontStyle.Bold,
                TrimTransparency = true,
                EffectsOnly      = false,
                Debug            = false,
            },
                                new FontOutline()
            {
                Thickness = 0,
                Color     = Color.Transparent,
            },
                                new FontShadow()
            {
                Thickness = 0,
                Color     = Color.Transparent,
            });

            generateNote("G7", 2526, 360, false);
            generateNote("F#4", 2683, 320, true);

            generateNote("B#3", 3782, 320, false);
            generateNote("D#4", 3939, 280, true);

            generateNote("A4", 4882, 270, true);
            generateNote("F1", 5039, 230, false);
            generateNote("G#7", 5196, 190, true);
        }
Beispiel #27
0
        public void generatePerCharacter(FontGenerator font, SubtitleSet subtitles, StoryboardLayer layer, bool additive)
        {
            foreach (var subtitleLine in subtitles.Lines)
            {
                var letterY = SubtitleY;
                foreach (var line in subtitleLine.Text.Split('\n'))
                {
                    var lineWidth  = 0f;
                    var lineHeight = 0f;
                    foreach (var letter in line)
                    {
                        var texture = font.GetTexture(letter.ToString());
                        lineWidth += texture.BaseWidth * FontScale;
                        lineHeight = Math.Max(lineHeight, texture.BaseHeight * FontScale);
                    }
                    float letterX;

                    int length = subtitleLine.Text.Length;
                    if (length > 30)
                    {
                        letterX = 10;
                    }
                    else if (length > 20)
                    {
                        letterX = 0;
                    }
                    else
                    {
                        letterX = -10;
                    }


                    var initX = letterX;
                    foreach (var letter in line)
                    {
                        var texture = font.GetTexture(letter.ToString());
                        if (!texture.IsEmpty)
                        {
                            var position = new Vector2(letterX, letterY)
                                           + texture.OffsetFor(Origin) * FontScale;

                            var angle = 15.5155 * Math.PI / 180;

                            var     Radius = position.X - initX;
                            var     x      = Radius * Math.Cos(angle) + initX;
                            var     y      = Radius * Math.Sin(angle) + letterY;
                            Vector2 newPos = new Vector2((float)x, (float)y);

                            Vector2 extraMovement = new Vector2(15f, 5f);

                            Vector2 startPoint = new Vector2(150f, 40f);

                            var layer2 = GetLayer("Background");

                            var redSquare = layer2.CreateSprite("sb/babysquare.png", Origin, newPos);
                            redSquare.Color(subtitleLine.StartTime, 1, 0, 0);
                            redSquare.Fade(subtitleLine.StartTime - 200, subtitleLine.StartTime, 0, 0.15);
                            redSquare.Fade(subtitleLine.EndTime - 200, subtitleLine.EndTime, 0.15, 0);
                            redSquare.Scale(subtitleLine.StartTime, Random(0, 2.5));
                            redSquare.Rotate(subtitleLine.StartTime - 200, subtitleLine.EndTime, Random(-2, 2), Random(-2, 2));

                            var sprite = layer.CreateSprite(texture.Path, Origin, startPoint);
                            sprite.Move(OsbEasing.OutExpo, subtitleLine.StartTime - 200, subtitleLine.StartTime + 200, newPos - startPoint, newPos);
                            sprite.Move(subtitleLine.StartTime + 200, subtitleLine.EndTime, newPos, newPos + extraMovement);
                            sprite.Scale(subtitleLine.StartTime, FontScale);
                            sprite.Fade(subtitleLine.StartTime - 200, subtitleLine.StartTime, 0, 1);
                            sprite.Fade(subtitleLine.EndTime - 200, subtitleLine.EndTime, 1, 0);
                            sprite.Rotate(subtitleLine.StartTime, angle);
                            sprite.Scale(subtitleLine.StartTime - 200, subtitleLine.StartTime, 0.05, 0.25);

                            if (additive)
                            {
                                sprite.Additive(subtitleLine.StartTime - 200, subtitleLine.EndTime);
                            }
                        }
                        letterX += texture.BaseWidth * FontScale;
                    }
                    letterY += lineHeight;
                }
            }
        }
        public override void Generate()
        {
            layer        = GetLayer("Main");
            beatduration = Beatmap.GetTimingPointAt(13).BeatDuration;

            // Loading the big notes

            ArrayList beeg = new ArrayList();

            for (int i = 0; i < 6; i++)
            {
                if (i == 2)
                {
                    continue;
                }
                Vector2 position = new Vector2(320 - 150 + i * 60, 260);
                var     top      = layer.CreateSprite("sb/piano/top.png", OsbOrigin.BottomCentre, position);
                var     bottom   = layer.CreateSprite("sb/piano/bottom.png", OsbOrigin.TopCentre, position + new Vector2(0, 0.1f * 200));
                var     body     = layer.CreateSprite("sb/piano/body.png", OsbOrigin.BottomCentre, position);

                top.Scale(2369, 0.2);
                bottom.Scale(2369, 0.2);
                body.ScaleVec(2369, 0.2, 0.1);
                body.Rotate(2369, Math.PI);

                PianoNote pn1 = new PianoNote(top, bottom, body, position, false, 0.2f);
                pn1.fadeIn(2369);
                pn1.fadeOut(20117);

                beeg.Add(pn1);
            }

            // Loading the small notes

            ArrayList smol = new ArrayList();

            for (int i = 0; i < 7; i++)
            {
                Vector2 position = new Vector2(320 - 180 + i * 60, 220);
                var     top      = layer.CreateSprite("sb/piano/top-fill.png", OsbOrigin.BottomCentre, position - new Vector2(0, 0.075f * 200));
                var     bottom   = layer.CreateSprite("sb/piano/bottom-fill.png", OsbOrigin.TopCentre, position);
                var     body     = layer.CreateSprite("sb/piano/body-fill.png", OsbOrigin.BottomCentre, position);

                top.Scale(2369, 0.15);
                bottom.Scale(2369, 0.15);
                body.ScaleVec(2369, 0.15, 0.075);

                PianoNote pn1 = new PianoNote(top, bottom, body, position, true, 0.15f);
                pn1.fadeIn(2369);
                pn1.fadeOut(20117);

                smol.Add(pn1);
            }


            // Setting font

            font = LoadFont("sb/PianoNotesRegular", new FontDescription()
            {
                FontPath         = "fonts/Altero-Regular.otf",
                FontSize         = 72,
                Color            = Color4.White,
                Padding          = new Vector2(5, 5),
                FontStyle        = FontStyle.Regular,
                TrimTransparency = true,
                EffectsOnly      = false,
                Debug            = false,
            },
                            new FontOutline()
            {
                Thickness = 0,
                Color     = Color.Transparent,
            },
                            new FontShadow()
            {
                Thickness = 0,
                Color     = Color.Transparent,
            });

            Tuple <int, string>[] noteList =
            {
                Tuple.Create(3, "A#3"),
                Tuple.Create(0, "C4"),
                Tuple.Create(0, "C2"),
                Tuple.Create(0, "C3"),
                Tuple.Create(1, "D3"),
                Tuple.Create(1, "D#3"),
                Tuple.Create(3, "F3"),
                Tuple.Create(4, "A#3"),
                Tuple.Create(4, "G3"),
                Tuple.Create(4, "G4"),
                Tuple.Create(0, "C2"),
                Tuple.Create(3, "F3"),
                Tuple.Create(4, "G3"),
                Tuple.Create(4, "A#4"),
                Tuple.Create(3, "F3"),
                Tuple.Create(4, "G3"),
                Tuple.Create(3, "A#3"),
                Tuple.Create(0, "C4"),
                Tuple.Create(0, "C2"),
                Tuple.Create(0, "C3"),
                Tuple.Create(1, "D3"),
                Tuple.Create(1, "D#3"),
                Tuple.Create(3, "F3"),
                Tuple.Create(4, "A#3"),
                Tuple.Create(4, "G3"),
                Tuple.Create(4, "G4"),
                Tuple.Create(0, "C2"),
                Tuple.Create(3, "F3"),
                Tuple.Create(4, "G3"),
                Tuple.Create(4, "A#4"),
                Tuple.Create(3, "F3"),
                Tuple.Create(4, "G3"),
                Tuple.Create(3, "A#3"),
                Tuple.Create(0, "C4"),
                Tuple.Create(0, "C2"),
                Tuple.Create(0, "C3"),
                Tuple.Create(1, "D3"),
                Tuple.Create(1, "D#3"),
                Tuple.Create(3, "F3"),
                Tuple.Create(4, "A#3"),
                Tuple.Create(4, "G3"),
                Tuple.Create(4, "G4"),
                Tuple.Create(0, "C2"),
                Tuple.Create(3, "F3"),
                Tuple.Create(4, "G3"),
                Tuple.Create(4, "A#4"),
                Tuple.Create(3, "F3"),
                Tuple.Create(4, "G3"),
                Tuple.Create(3, "A#3"),
                Tuple.Create(0, "C4"),
                Tuple.Create(0, "C2"),
                Tuple.Create(0, "C3"),
                Tuple.Create(1, "D3"),
                Tuple.Create(1, "D#3"),
                Tuple.Create(3, "F3"),
                Tuple.Create(4, "A#3"),
                Tuple.Create(4, "G3"),
                Tuple.Create(4, "G4"),
                Tuple.Create(0, "C2"),
                Tuple.Create(3, "F3"),
                Tuple.Create(4, "G3"),
                Tuple.Create(4, "A#4"),
                Tuple.Create(3, "F3"),
                Tuple.Create(4, "G3"),
                Tuple.Create(3, "A#3"),
                Tuple.Create(0, "C4"),
                Tuple.Create(0, "C2"),
                Tuple.Create(0, "C3"),
                Tuple.Create(1, "D3"),
                Tuple.Create(1, "D#3"),
                Tuple.Create(3, "F3"),
                Tuple.Create(4, "A#3"),
                Tuple.Create(4, "G3"),
                Tuple.Create(4, "G4"),
                Tuple.Create(0, "C2"),
                Tuple.Create(3, "F3"),
                Tuple.Create(4, "G3"),
                Tuple.Create(4, "A#4"),
                Tuple.Create(3, "F3"),
                Tuple.Create(4, "G3"),
                Tuple.Create(3, "A#3"),
                Tuple.Create(0, "C4"),
                Tuple.Create(0, "C2"),
                Tuple.Create(0, "C3"),
                Tuple.Create(1, "D3"),
                Tuple.Create(1, "D#3"),
                Tuple.Create(3, "F3"),
                Tuple.Create(4, "A#3"),
                Tuple.Create(4, "G3"),
                Tuple.Create(4, "G4"),
                Tuple.Create(0, "C2"),
                Tuple.Create(3, "F3"),
                Tuple.Create(4, "G3"),
                Tuple.Create(4, "A#4"),
                Tuple.Create(3, "F3"),
                Tuple.Create(4, "G3"),
                Tuple.Create(3, "A#3"),
                Tuple.Create(0, "C4"),
                Tuple.Create(0, "C2"),
                Tuple.Create(0, "C3"),
                Tuple.Create(1, "D3"),
                Tuple.Create(1, "D#3"),
                Tuple.Create(3, "F3"),
                Tuple.Create(4, "A#3"),
                Tuple.Create(4, "G3"),
                Tuple.Create(4, "G4"),
                Tuple.Create(0, "C2"),
                Tuple.Create(3, "F3"),
                Tuple.Create(4, "G3"),
                Tuple.Create(4, "A#4"),
                Tuple.Create(3, "F3"),
                Tuple.Create(4, "G3")
            };

            double run = StartTime;

            foreach (var note in noteList)
            {
                if (note.Item2.Contains('#'))
                {
                    clickNoteBottom((PianoNote)(beeg[note.Item1]), (int)run, note.Item2);
                }
                else
                {
                    clickNoteTop((PianoNote)(smol[note.Item1]), (int)run, note.Item2);
                }
                run += tick(0, 2);
            }
        }
Beispiel #29
0
        public void generatePerCharacter(FontGenerator font, SubtitleSet subtitles, StoryboardLayer layer, bool additive)
        {
            var squaresLayer = GetLayer("lyricsSquares");

            foreach (var subtitleLine in subtitles.Lines)
            {
                var letterY    = SubtitleY;
                var i          = 0;
                var lineOffset = 0;
                foreach (var line in subtitleLine.Text.Split('\n'))
                {
                    var lineWidth  = 0f;
                    var lineHeight = 0f;
                    foreach (var letter in line)
                    {
                        var texture = font.GetTexture(letter.ToString());
                        lineWidth += texture.BaseWidth * FontScale;
                        lineHeight = Math.Max(lineHeight, texture.BaseHeight * FontScale);
                    }

                    var letterX = 320 - lineWidth * 0.5f + lineOffset;
                    foreach (var letter in line)
                    {
                        var texture = font.GetTexture(letter.ToString());
                        if (!texture.IsEmpty)
                        {
                            var initialPosition = new Vector2(letterX + 40, letterY) + texture.OffsetFor(Origin) * FontScale;

                            var position = new Vector2(letterX, letterY)
                                           + texture.OffsetFor(Origin) * FontScale;

                            var finalPosition = new Vector2(letterX + Random(-15, 15), letterY + Random(-15, 15)) + texture.OffsetFor(Origin) * FontScale;

                            if (squares)
                            {
                                for (int f = 0; f < 3; f++)
                                {
                                    var color = Color;
                                    if (ColorVariance > 0)
                                    {
                                        ColorVariance = MathHelper.Clamp(ColorVariance, 0, 1);

                                        var hsba = Color4.ToHsl(color);
                                        var sMin = Math.Max(0, hsba.Y - ColorVariance * 0.5f);
                                        var sMax = Math.Min(sMin + ColorVariance, 1);
                                        var vMin = Math.Max(0, hsba.Z - ColorVariance * 0.5f);
                                        var vMax = Math.Min(vMin + ColorVariance, 1);

                                        color = Color4.FromHsl(new Vector4(
                                                                   hsba.X,
                                                                   (float)Random(sMin, sMax),
                                                                   (float)Random(vMin, vMax),
                                                                   hsba.W));
                                    }


                                    var initiialRotation = Random(0, MathHelper.DegreesToRadians(360));
                                    var endRotation      = Random(0, MathHelper.DegreesToRadians(360));

                                    var sqaureIinitPos = new Vector2(letterX + Random(-30, 30), letterY + Random(-30, 30)) + texture.OffsetFor(Origin) * FontScale;

                                    var squarePosition = new Vector2(letterX + Random(-15, 15), letterY + Random(-15, 15)) + texture.OffsetFor(Origin) * FontScale;

                                    var square = squaresLayer.CreateSprite("sb/etc/p.png", Origin, squarePosition);
                                    square.Move(subtitleLine.StartTime - 400 + i, subtitleLine.StartTime + i, sqaureIinitPos, squarePosition);
                                    square.Scale(subtitleLine.StartTime - 400 + i, subtitleLine.EndTime, 20, 20);
                                    square.Additive(subtitleLine.StartTime - 400 + i, subtitleLine.EndTime);
                                    square.Fade(subtitleLine.StartTime - 400 + i, subtitleLine.StartTime + i, 0, 0.1);
                                    square.Rotate(subtitleLine.StartTime - 400 + i, subtitleLine.EndTime, initiialRotation, endRotation);
                                    square.Color(subtitleLine.StartTime - 400 + i, color);
                                    square.Fade(subtitleLine.EndTime - 400, subtitleLine.EndTime, 0.1, 0);
                                }
                            }

                            var sprite = layer.CreateSprite(texture.Path, Origin, position);
                            sprite.Move(OsbEasing.Out, subtitleLine.StartTime - 400 + i, subtitleLine.StartTime + i, initialPosition, position);
                            // sprite.Scale(subtitleLine.StartTime - 200 + i, subtitleLine.StartTime + i, 0, FontScale);
                            // sprite.Rotate(OsbEasing.Out, subtitleLine.StartTime - 400 + i, subtitleLine.StartTime + i, MathHelper.DegreesToRadians(Random(0, 360)), MathHelper.DegreesToRadians(0));
                            sprite.Fade(OsbEasing.Out, subtitleLine.StartTime - 400 + i, subtitleLine.StartTime + i, 0, 1);
                            // sprite.MoveY(subtitleLine.StartTime - 200 + i, subtitleLine.StartTime + i, letterY - 15, letterY);
                            sprite.Fade(OsbEasing.In, subtitleLine.EndTime - 400, subtitleLine.EndTime, 1, 0);
                            sprite.Scale(OsbEasing.In, subtitleLine.EndTime - 400, subtitleLine.EndTime, FontScale, 0);
                            sprite.Move(OsbEasing.In, subtitleLine.EndTime - 400, subtitleLine.EndTime, position, finalPosition);

                            if (additive)
                            {
                                sprite.Additive(subtitleLine.StartTime - 400, subtitleLine.EndTime);
                            }
                            i += 65;
                        }
                        letterX += texture.BaseWidth * FontScale;
                    }
                    // lineOffset += 120;
                    letterY += lineHeight;
                }
            }
        }
Beispiel #30
0
 public void CreateLyrics(FontGenerator font, List <Lyric> lyrics, LyricGeneration lyricType)
 {
 }