コード例 #1
0
        public void DrawWheels(double startTime, double endTime, int x, int y, double scale, int color, int aps)
        {
            double angle = Math.Abs(aps) * (endTime - startTime) / 1000;

            int amount = 16;
            double interval = 360 / amount;
            bool inv = aps < 0;
            for (double i = 0; i < 180 - 20; i += interval)
            {
                Sprite gear = Mathematics.DrawLines(startTime, 250 * scale, 35 * scale);
                gear.Rotate(startTime, endTime, i + (inv ? angle : 0), i + (inv ? 0 : angle));
                gear.Fade(startTime, startTime + beat / 2, 0, 1);
                gear.Fade(endTime - beat / 2, endTime, 1, 0);
                gear.Move(startTime, x, y);
            }

            Sprite mid = new Sprite(string.Format(@"sb\etc\stripe{0}.png", color));
            mid.Scale(scale - .03 * scale);
            mid.Move(x, y);
            mid.Fade(startTime, startTime + beat, 0, 1);
            mid.Fade(endTime - beat / 2, endTime, 1, 0);
            mid.Rotate(startTime, endTime, 0 + (inv ? angle : 0), 0 + (inv ? 0 : angle));

            Sprite outer = new Sprite(@"sb\etc\outer.png");
            outer.Scale(scale);
            outer.Move(x, y);
            outer.Fade(startTime, startTime + beat / 2, 0, 1);
            outer.Fade(endTime - beat / 2, endTime, 1, 0);

            Sprite inner = new Sprite(@"sb\etc\circle.png");
            inner.Scale(scale * .6);
            inner.Move(x, y);
            inner.Fade(startTime, startTime + beat / 2, 0, 1);
            inner.Fade(endTime - beat / 2, endTime, 1, 0);
        }
コード例 #2
0
        public static void MoveCircular(Sprite light, double startTime, double endTime, int startAngle, int endAngle, int radius, int originStartX, int originStartY, int originEndX, int originEndY, int accuracy, bool rotate)
        {
            double originX = originStartX;
            double originY = originStartY;
            double offsetx = ((originStartX - originEndX) / ((endTime - startTime) / accuracy));
            double offsety = ((originStartY - originEndY) / ((endTime - startTime) / accuracy));

            double currAngle = startAngle;
            double incAngle = (endAngle - startAngle) / ((endTime - startTime) / accuracy);

            double rotAngle = startAngle * -1;
            double decAngle = (endAngle - startAngle) / ((endTime - startTime) / accuracy);

            for (double j = startTime; j < endTime; j += accuracy)
            {
                MoveCurve(light, j, j + accuracy, (int)currAngle, (int)(currAngle + incAngle), (int)originX, (int)originY, offsetx, offsety, radius);
                if (rotate)
                {
                    light.Rotate(j, j + accuracy, rotAngle, rotAngle - decAngle);
                }
                currAngle = currAngle + incAngle;
                rotAngle = rotAngle - decAngle;
                originX = originX - offsetx;
                originY = originY - offsety;
            }
        }
コード例 #3
0
        public void ShootingStar(double startTime, int x, int dir)
        {
            int midPoint = rand.Next(230, 260);
            Sprite star = new Sprite(@"sb\bg\star.png");
            star.Scale(.1);
            star.Rotate(startTime, startTime + beat * 2, 0, rand.Next(60, 180));
            star.Move(1, startTime, startTime + beat / 4 * 3, x, -20, x, 500);
            star.Fade(startTime - 1, startTime, 0, 1);
            star.Parameters(startTime, startTime, "A");
            star.Color(247, 255, 168);

            Sprite line = Mathematics.DrawLines(startTime, 500, 10, dir == 1 ? Sprite.origin.CentreRight : Sprite.origin.CentreLeft);
            line.Rotate(startTime, 90 * dir);
            line.Move(1, startTime, startTime + beat / 4 * 3, x, -20, x, 500);
            Mathematics.ScaleLines(line, 1, startTime + beat, startTime + beat / 4 * 7, 1, 10);
            line.Parameters(startTime, startTime, "A");
            line.Color(247, 255, 168);
            line.Fade(startTime - 1, startTime, 0, 1);
        }