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); }
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; } }
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); }