summaryrefslogtreecommitdiffstats
path: root/show.py
diff options
context:
space:
mode:
Diffstat (limited to 'show.py')
-rw-r--r--show.py39
1 files changed, 39 insertions, 0 deletions
diff --git a/show.py b/show.py
new file mode 100644
index 0000000..f8544c9
--- /dev/null
+++ b/show.py
@@ -0,0 +1,39 @@
+from __future__ import division, print_function
+import time
+
+class Clock(object):
+ def __init__(self):
+ self.last_tick = time.time()
+
+ def tick(self, framerate):
+ sec_per_frame = 1.0 / framerate
+ diff = time.time() - self.last_tick
+ while diff < sec_per_frame:
+ diff = time.time() - self.last_tick
+
+ if diff > (1.05 * sec_per_frame):
+ print("WARN: tick is not being called fast enough\n",
+ "target {}, actual {}".format(sec_per_frame, diff))
+ self.last_tick = time.time()
+
+
+class Show(object):
+ def __init__(self, bridge):
+ self.bridge = bridge
+ self.clock = Clock()
+ self.running = True
+ self.init()
+
+ def run(self, framerate=40):
+ while self.running:
+ self.update()
+ self.bridge.update()
+ self.clock.tick(framerate)
+
+ def init(self):
+ """Override me"""
+ raise NotImplementedError
+
+ def update(self):
+ """Override me"""
+ raise NotImplementedError