summaryrefslogtreecommitdiffstats
path: root/show.py
diff options
context:
space:
mode:
authorAaron Perley <aaron.perley@gmail.com>2016-10-09 18:00:10 -0400
committerAaron Perley <aaron.perley@gmail.com>2016-10-09 18:00:10 -0400
commitf05ccbe166fd2501be3502f81f0562e73291fa04 (patch)
treecbc4eb9b8de594533e4f8b262385652b0dfd0309 /show.py
parentf0cb39571e4ac16b6fab6b04c26e17897e61f9f5 (diff)
downloadbridge-f05ccbe166fd2501be3502f81f0562e73291fa04.tar.zst
Refactor bridge, fish show, and sunrise show code
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