From f05ccbe166fd2501be3502f81f0562e73291fa04 Mon Sep 17 00:00:00 2001 From: Aaron Perley Date: Sun, 9 Oct 2016 18:00:10 -0400 Subject: Refactor bridge, fish show, and sunrise show code --- show.py | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 show.py (limited to 'show.py') 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 -- cgit v1.3.1