diff options
| author | Aaron Perley <aaron.perley@gmail.com> | 2016-10-09 18:00:10 -0400 |
|---|---|---|
| committer | Aaron Perley <aaron.perley@gmail.com> | 2016-10-09 18:00:10 -0400 |
| commit | f05ccbe166fd2501be3502f81f0562e73291fa04 (patch) | |
| tree | cbc4eb9b8de594533e4f8b262385652b0dfd0309 /show.py | |
| parent | f0cb39571e4ac16b6fab6b04c26e17897e61f9f5 (diff) | |
| download | bridge-f05ccbe166fd2501be3502f81f0562e73291fa04.tar.zst | |
Refactor bridge, fish show, and sunrise show code
Diffstat (limited to 'show.py')
| -rw-r--r-- | show.py | 39 |
1 files changed, 39 insertions, 0 deletions
@@ -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 |
