protected override void OnPaint(PaintEventArgs e)
{
Graphics g = e.Graphics;
double delta_time = (DateTime.Now - lastGUIUpdate).TotalMilliseconds;
SetupGraphics(g, delta_time.ToString());
if (!debug_break) {
//DateTime tm_start = DateTime.Now;
InformationPacket ip = Physics.Physics.Update(Puck, Puck, Table, delta_time);
//times.Add((DateTime.Now - tm_start).TotalMilliseconds);
//if (times.Count == 1000)
//{
// tm.Stop();
// MessageBox.Show(times.Average().ToString());
//}
debugging_packets.Add(ip);
if (debugging_packets.Count > 2)
debugging_packets.RemoveAt(0);
}
if (Puck.Location.X < 0 || Puck.Location.X > Table.Width || Puck.Location.Y < 0 || Puck.Location.Y > Table.Height) {
tm.Stop();
debug_break = true;
}
g.FillRectangle(Brushes.White, 0, 0, si(Table.Width), si(Table.Height));
g.DrawRectangle(Pens.Black, 0, 0, si(Table.Width), si(Table.Height));
foreach (Line w in Table.Walls) {
DrawLine(g, w, Pens.Black);
}
foreach (Arc a in Table.Arcs) {
DrawArc(g, a, Pens.Black);
}
g.FillEllipse(Brushes.Blue, getPuckRectangle(Puck));
DrawLine(g, Puck.Path, Pens.Red);
if (debug_break) {
for (int j = 0; j < debugging_packets.Count; ++j) {
for (int i = 0; i < debugging_packets[j].Points.Count; ++i) {
g.DrawRectangle(getFromInt(i), s(debugging_packets[j].Points[i].X), s(debugging_packets[j].Points[i].Y), 10, 10);
}
for (int i = 0; i < debugging_packets[j].Lines.Count; ++i) {
DrawLine(g, debugging_packets[j].Lines[i], getFromInt(j));
}
}
}
lastGUIUpdate = DateTime.Now;
base.OnPaint(e);
}