Prevent divide by zero when the elapsed time is too small.
[python-bulletml.git] / bulletml-runner
index 21ba80e..ec6007b 100755 (executable)
@@ -23,9 +23,10 @@ def main(argv):
 
     while True:
         filename = argv[file_idx % len(argv)]
-        doc = bulletml.BulletML(open(filename, "rU"))
-        source = bulletml.Bullet.FromDoc(
-            doc, x=150, y=150, target=target, rank=0.5)
+        doc = bulletml.BulletML.FromDocument(open(filename, "rU"))
+        actions = [act([], 0.5) for act in doc.top]
+        source = bulletml.Bullet(
+            x=150, y=150, target=target, actions=actions, rank=0.5)
                                          
         active = set([source])
         source.vanished = True
@@ -58,8 +59,10 @@ def main(argv):
                     elif event.key == pygame.K_RETURN:
                         newfile = True
                     elif event.key == pygame.K_s:
-                        source = bulletml.Bullet.FromDoc(
-                            doc, x=150, y=150, target=target, rank=0.5)
+                        actions = [act([], 0.5) for act in doc.top]
+                        source = bulletml.Bullet(
+                            x=150, y=150, target=target,
+                            actions=actions, rank=0.5)
                         source.vanished = True
                         active.add(source)
             target.x, target.y = pygame.mouse.get_pos()
@@ -82,12 +85,13 @@ def main(argv):
 
                 frames += 1
                 if frames % 100 == 0:
-                    seconds_per_bullet = elapsed / count
-                    bullets_per_second = count / elapsed
                     print "  Processing: %04d: %d bullets, %d active." % (
                         frames, total, count)
-                    print "  %g seconds per bullet (60Hz max: %g)." % (
-                        seconds_per_bullet, bullets_per_second / 60)
+                    if elapsed:
+                        print "  %g seconds per bullet (60Hz max: %g)." % (
+                            seconds_per_bullet = elapsed / count
+                            bullets_per_second = count / elapsed
+                            seconds_per_bullet, bullets_per_second / 60)
 
             screen.fill([0, 0, 0])
             for obj in active: