merge magfest branch into master

This commit is contained in:
Frank DeMarco 2020-10-05 18:28:14 -04:00
commit dd938d8da2
1 changed files with 22 additions and 11 deletions

33
NS.py
View File

@ -44,6 +44,7 @@ class NS(Game, Animation):
STEP = .4 STEP = .4
IDLE_TIMEOUT = 60000 * 5 IDLE_TIMEOUT = 60000 * 5
CHANNEL_COUNT = 8 CHANNEL_COUNT = 8
NO_RESET_TIMEOUT = 3000
def __init__(self): def __init__(self):
Game.__init__(self) Game.__init__(self)
@ -109,36 +110,37 @@ class NS(Game, Animation):
name = self.get_configuration("input", "arduino-port") name = self.get_configuration("input", "arduino-port")
try: try:
transmission = self.serial_reader.readline().strip() transmission = self.serial_reader.readline().strip()
print transmission print(transmission)
except SerialException: except SerialException:
print "Serial not ready... passing..." print("Serial not ready... passing...")
transmission = "" transmission = ""
if len(transmission) == 4: if len(transmission) == 4:
try: try:
self.serial_data = int(transmission, 2) self.serial_data = int(transmission, 2)
except ValueError: except ValueError:
print "Value error checking four digit serial transmission" print("Value error checking four digit serial transmission")
self.handle_garbage(transmission) self.handle_garbage(transmission)
self.reset_arduino() self.reset_arduino()
self.idle_elapsed = 0 self.idle_elapsed = 0
elif len(transmission) > 0: elif len(transmission) > 0:
try: try:
int(transmission, 2) int(transmission, 2)
except ValueError: except ValueError:
print "Received a non-four digit serial transmission" print("Received a non-four digit serial transmission")
self.handle_garbage(transmission) self.handle_garbage(transmission)
else: else:
self.serial_data = 0 self.serial_data = 0
def handle_garbage(self, transmission): def handle_garbage(self, transmission):
self.serial_data = 0 self.serial_data = 0
print "Garbage detected: %s" % transmission print("Garbage detected: %s" % transmission)
self.serial_reader.reset_input_buffer() self.serial_reader.reset_input_buffer()
def reset_arduino(self): def reset_arduino(self):
self.serial_reader.dtr = False if self.serial_enabled():
self.serial_reader.reset_input_buffer() self.serial_reader.dtr = False
self.serial_reader.dtr = True self.serial_reader.reset_input_buffer()
self.serial_reader.dtr = True
def end(self, evt): def end(self, evt):
if evt.type == QUIT or self.delegate.compare(evt, "quit"): if evt.type == QUIT or self.delegate.compare(evt, "quit"):
@ -162,6 +164,7 @@ class NS(Game, Animation):
self.chemtrails.reset() self.chemtrails.reset()
self.platform.reset() self.platform.reset()
self.dialogue.reset() self.dialogue.reset()
self.no_reset_elapsed = 0
def set_most_recent_time(self, score): def set_most_recent_time(self, score):
self.most_recent_time = score self.most_recent_time = score
@ -201,8 +204,16 @@ class NS(Game, Animation):
def update(self): def update(self):
Animation.update(self) Animation.update(self)
if self.serial_enabled(): last_frame_duration = self.time_filter.get_last_frame_duration()
self.apply_serial() if self.serial_enabled() or True:
# self.apply_serial()
if self.title.active or self.introduction.active or self.ending.active or \
self.dialogue.active:
self.no_reset_elapsed += last_frame_duration
if self.no_reset_elapsed >= self.NO_RESET_TIMEOUT:
print("auto arduino reset triggered")
self.reset_arduino()
self.no_reset_elapsed = 0
self.title.update() self.title.update()
self.introduction.update() self.introduction.update()
self.ending.update() self.ending.update()