public static void MoveCurve(Sprite light, double startTime, double endTime, int angle1, int angle2, int xc, int yc, double offsetx, double offsety, int radius) { var radangle1 = angle1 * (Math.PI / 180.0); var radangle2 = angle2 * (Math.PI / 180.0); int x1 = (int)(radius * Math.Sin(radangle1 - Math.PI / 2) + xc); int y1 = (int)(radius * Math.Sin(radangle1) + yc); int x2 = (int)(radius * Math.Sin(radangle2 - Math.PI / 2) + xc - offsetx); int y2 = (int)(radius * Math.Sin(radangle2) + yc - offsety); light.Move(startTime, endTime, x1, y1, x2, y2); }
public void Flash(int startTime) { Sprite white = new Sprite(@"sb\etc\p.png", Sprite.origin.BottomCentre); white.Fade(startTime, startTime + beat / 2, .7, 0); white.Scale(startTime, scale); white.Move(startTime, 320, 480); Color2 c = Color2.HSL2RGB(rand.Next(1, 100) / 100.0, .4, .8); white.Color(startTime, c.red, c.green, c.blue); white.Parameters(startTime, startTime, "A"); }
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 void DrawNameThing() { string[][] names = { new string[] { Translate("D"), Translate("e"), Translate("p"), Translate("t"), Translate("h"), Translate("s"), }, new string[] { Translate("C"), Translate("r"), Translate("y"), Translate("s"), Translate("t"), Translate("a"), Translate("l"), } }; int offsetx = 320; int y = 110; double size = .7; double size2 = size * .7; double radius = 80; double letterSize = .4; int lineLength = 215; int lineWidth = 40; int dist = 20; int offsetLettersX = -5; int offsetLettersY = 0; Color2 c = new Color2(148, 196, 255); //left: Depths Sprite line1 = Mathematics.DrawLines(beginning, 1, lineWidth, Sprite.origin.TopLeft); line1.Move(beginning, 320 - offsetx, y - (int)radius); Mathematics.ScaleLines(line1, 1, beginning + beat, beginning + beat * 2, lineLength, lineWidth); line1.Color(c.red, c.green, c.blue); line1.Fade(beginning + beat, beginning + beat * 2, 0, 1); line1.Fade(ending - beat * 2, ending - beat, 1, 0); Sprite circle1 = new Sprite(@"sb\etc\circle.png"); circle1.Move(beginning, 320 - offsetx, y); circle1.Fade(beginning, beginning + beat, 0, 1); circle1.Fade(ending - beat, ending, 1, 0); circle1.Scale(beginning, size); Sprite circle2 = new Sprite(@"sb\etc\circle.png"); circle2.Move(beginning, 320 - offsetx, y); circle2.Fade(beginning, beginning + beat, 0, 1); circle2.Fade(ending - beat, ending, 1, 0); circle2.Scale(beginning, size2); circle2.Color(c.red, c.green, c.blue); for (int i = 0; i < names[0].Length; i++) { Sprite letter = new Sprite($@"sb\text\{names[0][i]}.png", Sprite.origin.TopCentre); letter.Move(beginning, 320 - offsetx + (int)radius + offsetLettersX + i * dist, y - (int)radius - offsetLettersY); letter.Fade(beginning + beat * 2, beginning + beat * 2.5, 0, 1); letter.Fade(ending - beat * 2, ending - beat, 1, 0); letter.Scale(letterSize); } //right: Crystal Sprite line2 = Mathematics.DrawLines(beginning, 1, lineWidth, Sprite.origin.BottomRight); line2.Move(beginning, 320 + offsetx, y + (int)radius); Mathematics.ScaleLines(line2, 1, beginning + beat, beginning + beat * 2, lineLength, lineWidth); line2.Color(c.blue, c.red, c.green); line2.Fade(beginning + beat, beginning + beat * 2, 0, 1); line2.Fade(ending - beat * 2, ending - beat, 1, 0); Sprite circle3 = new Sprite(@"sb\etc\circle.png"); circle3.Move(beginning, 320 + offsetx, y); circle3.Fade(beginning, beginning + beat, 0, 1); circle3.Fade(ending - beat, ending, 1, 0); circle3.Scale(beginning, size); Sprite circle4 = new Sprite(@"sb\etc\circle.png"); circle4.Move(beginning, 320 + offsetx, y); circle4.Fade(beginning, beginning + beat, 0, 1); circle4.Fade(ending - beat, ending, 1, 0); circle4.Scale(beginning, size2); circle4.Color(c.blue, c.red, c.green); for (int i = 0; i < names[1].Length; i++) { Sprite letter = new Sprite($@"sb\text\{names[1][i]}.png", Sprite.origin.BottomCentre); letter.Move(beginning, 320 + offsetx - (int)radius - offsetLettersX - (names[1].Length - i - 1) * dist, y + (int)radius + offsetLettersY); letter.Fade(beginning + beat * 2, beginning + beat * 2.5, 0, 1); letter.Fade(ending - beat * 2, ending - beat, 1, 0); letter.Scale(letterSize); } }
public void BubblingThing(double startTime, double endTime, int xc, int yc, int length, int dir) { int x1, x2; x1 = xc - length / 2; x2 = xc + length / 2; int rate = (int)((endTime - startTime) / 1000 * 20); for (int i = 0; i < rate; i++) { int dist = 20 + rand.Next(0, 30); double start = rand.Next((int)startTime, (int)(endTime)); double end = start + rand.Next((int)beat * 4, (int)beat * 16); int x = rand.Next(x1, x2); double size = rand.Next(10, 70) / 1000.0; Color2 c = Color2.HSL2RGB((double)(x - x1) / (x2 - x1), .8, .7); Sprite bubble = new Sprite(@"sb\etc\circle.png", dir == 1 ? Sprite.origin.TopCentre : Sprite.origin.BottomCentre); bubble.Fade(start, start + beat, 0, 1); bubble.Fade(end - beat, end, 1, 0); bubble.Scale(size); bubble.Move(1, start, end, x, yc, x, yc + dist * dir); bubble.Color(start, c.red, c.green, c.blue); //bubble.Parameters(start, start, "A"); } }
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); }