def track_move(move_serial, move_num, team, team_num, score, win_amount, dead_move, force_color, music_speed): #proc = psutil.Process(os.getpid()) #proc.nice(3) #explosion = Audio('audio/Joust/sounds/Explosion34.wav') #explosion.start_effect() move_last_value = None move = common.get_move(move_serial, move_num) team_colors = common.generate_colors(team_num) werewolf = False flash_time = time.time() #keep on looping while move is not dead while True: if sum(force_color) != 0: time.sleep(0.01) move.set_leds(*force_color) move.update_leds() if werewolf: move.set_rumble(80) elif dead_move.value == 1: if move.poll(): ax, ay, az = move.get_accelerometer_frame(psmove.Frame_SecondHalf) total = sum([ax, ay, az]) if move_last_value is not None: change = abs(move_last_value - total) speed_percent = (music_speed.value - SLOW_MUSIC_SPEED)/(FAST_MUSIC_SPEED - SLOW_MUSIC_SPEED) warning = common.lerp(SLOW_WARNING, FAST_WARNING, speed_percent) threshold = common.lerp(SLOW_MAX, FAST_MAX, speed_percent) if change > threshold: move.set_leds(0,0,0) move.set_rumble(90) score.value = -1 dead_move.value = 0 elif change > warning: move.set_leds(20,50,100) move.set_rumble(110) else: if score.value >= 1: if time.time() > flash_time: vall = calculate_flash_time(team_colors[team][0],team_colors[team][1],team_colors[team][2],score.value, win_amount) #print vall move.set_leds(*vall) #flash_time = time.time() + calculate_flash_time(score.value, win_amount) else: move.set_leds(*team_colors[team]) move.set_rumble(0) move_last_value = total move.update_leds() elif dead_move.value == 0: if move.poll(): move_button = move.get_buttons() if score.value >= 0 and move_button == common.Buttons.middle: dead_move.value = 1 move_last_value = None
def get_move(view, network): global image2 (move, eat) = common.get_move(view, network) # image2 = image return (move, eat) # def get_image(image): # return image
def get_move(self, view): life = view.GetLife() print >>self.log, view.GetXPos(), view.GetYPos() # print >>self.log, view.GetImage() # print >>self.log, view.GetPlantInfo() # self.log.flush() return common.get_move(view)
def get_move(self, view): life = view.GetLife() print >> self.log, view.GetXPos(), view.GetYPos() # print >>self.log, view.GetImage() # print >>self.log, view.GetPlantInfo() # self.log.flush() return common.get_move(view)
def next_move_spiral(self, x, y, x0, y0): x = x - x0 y = y - y0 if y > x and y > (x * -1): return game_interface.RIGHT if y <= x and y > (x * -1): return game_interface.DOWN if y < x and y <= (x * -1): return game_interface.LEFT if y >= x and y <= (x * -1): return game_interface.UP return common.get_move(view)
def main_track_move(menu, restart, move_serial, move_num, move_opts, force_color, battery, dead_count, game_mode, \ team, team_color_enum, controller_sensitivity, dead_move, music_speed, werewolf_reveal, show_team_colors, red_on_kill, zombie_opt,\ commander_intro, commander_move_opt, commander_powers, commander_overdrive,five_controller_opt, swapper_team_colors,\ invincibility, fight_club_color, num_teams,bomb_color,game_start,false_color, faked, rumble, dead_invince, kill_proc): print("starting Controller Process") move = common.get_move(move_serial, move_num) while (not kill_proc.value): move.set_rumble(0) if (restart.value == 1): pass elif (menu.value == 1): piparty.track_move(move_serial, move_num, move, move_opts, force_color, battery, dead_count, restart, menu, kill_proc) elif (game_mode.value == common.Games.Zombies.value): zombie.track_controller(move, zombie_opt, restart, menu, controller_sensitivity) elif (game_mode.value == common.Games.Commander.value): commander.track_move(move, team.value, dead_move, force_color, music_speed, commander_intro, \ commander_move_opt, commander_powers, commander_overdrive, restart, menu, controller_sensitivity) elif (game_mode.value == common.Games.Swapper.value): swapper.track_move(move, team, 2, swapper_team_colors, \ dead_move, force_color, music_speed, five_controller_opt, restart, menu, controller_sensitivity) elif (game_mode.value == common.Games.FightClub.value): fight_club.track_move(move, dead_move, force_color, music_speed, fight_club_color, invincibility, menu, restart, controller_sensitivity) elif (game_mode.value == common.Games.Tournament.value): tournament.track_move(move, team, num_teams.value, dead_move, force_color, music_speed, show_team_colors, invincibility, menu, restart, controller_sensitivity) elif (game_mode.value == common.Games.Ninja.value): speed_bomb.track_move(move, dead_move, force_color, bomb_color, five_controller_opt, game_start, false_color, faked, rumble, menu, restart) else: joust.track_move(move, game_mode.value, team.value, team_color_enum, dead_move, force_color, \ music_speed, werewolf_reveal, show_team_colors, red_on_kill, restart, menu, controller_sensitivity, dead_invince)
def track_move(serial, move_num, move_opts): move = common.get_move(serial, move_num) move.set_leds(0, 0, 0) move.update_leds() #move.set_leds(255,255,255) #move.update_leds() random_color = 0 while True: time.sleep(0.01) if move.poll(): game_mode = move_opts[Opts.game_mode.value] move_button = move.get_buttons() if move_opts[Opts.alive.value] == Alive.off.value: if move_button == Buttons.sync.value: move_opts[Opts.alive.value] = Alive.on.value time.sleep(0.1) else: if move_button == Buttons.all_buttons.value: move_opts[Opts.alive.value] = Alive.off.value move.set_leds(0, 0, 0) move.set_rumble(0) move.update_leds() continue if game_mode == common.Games.JoustFFA.value: move.set_leds(255, 255, 255) elif game_mode == common.Games.JoustTeams.value: if move_opts[Opts.team.value] >= TEAM_NUM: move_opts[Opts.team.value] = 0 move.set_leds(*TEAM_COLORS[move_opts[Opts.team.value]]) if move_button == Buttons.middle.value: #allow players to increase their own team if move_opts[Opts.holding. value] == Holding.not_holding.value: move_opts[Opts.team.value] = ( move_opts[Opts.team.value] + 1) % TEAM_NUM move_opts[ Opts.holding.value] = Holding.holding.value elif game_mode == common.Games.JoustRandomTeams.value: color = common.hsv2rgb(random_color, 1, 1) move.set_leds(*color) random_color += 0.001 if random_color >= 1: random_color = 0 elif game_mode == common.Games.WereJoust.value: if move_num <= 0: move.set_leds(150, 0, 0) else: move.set_leds(200, 200, 200) elif game_mode == common.Games.Zombies.value: move.set_leds(50, 150, 50) elif game_mode == common.Games.Commander.value: if move_num % 2 == 0: move.set_leds(150, 0, 0) else: move.set_leds(0, 0, 150) elif game_mode == common.Games.Random.value: if move_button == Buttons.middle.value: move_opts[Opts.random_start.value] = Alive.off.value if move_opts[Opts.random_start.value] == Alive.on.value: move.set_leds(0, 0, 255) else: move.set_leds(255, 255, 0) if move_opts[Opts.holding.value] == Holding.not_holding.value: if move_button == Buttons.select.value: move_opts[Opts.selection. value] = Selections.change_mode.value move_opts[Opts.holding.value] = Holding.holding.value if move_button == Buttons.start.value: print('start') move_opts[ Opts.selection.value] = Selections.start_game.value move_opts[Opts.holding.value] = Holding.holding.value if move_button == Buttons.nothing.value: move_opts[Opts.holding.value] = Holding.not_holding.value move.update_leds()
def get_move(self, view): self.calls += 1 return common.get_move(view)
def track_move(move_serial, move_num, team, team_num, dead_move, force_color, music_speed, move_opts): #proc = psutil.Process(os.getpid()) #proc.nice(3) start = False no_rumble = time.time() + 1 move_last_value = None move = common.get_move(move_serial, move_num) team_colors = common.generate_colors(team_num) #keep on looping while move is not dead ready = False move.set_leds(0, 0, 0) move.update_leds() time.sleep(1) death_time = 8 time_of_death = time.time() move_opts[Opts.holding.value] = Holding.not_holding.value move_opts[Opts.selection.value] = Selections.nothing.value while True: if sum(force_color) != 0: no_rumble_time = time.time() + 5 time.sleep(0.01) move.set_leds(*force_color) move.update_leds() move.set_rumble(0) no_rumble = time.time() + 0.5 #if we are not dead elif dead_move.value == 1: if move.poll(): ax, ay, az = move.get_accelerometer_frame( psmove.Frame_SecondHalf) total = sum([ax, ay, az]) if move_last_value is not None: change = abs(move_last_value - total) if move_opts[Opts.is_commander.value] == Bool.no.value: warning = FAST_WARNING threshold = FAST_MAX else: #if affected by overdrive, this could make the power better warning = SLOW_WARNING threshold = SLOW_MAX if change > threshold: if time.time() > no_rumble: move.set_leds(0, 0, 0) move.set_rumble(90) dead_move.value = 0 time_of_death = time.time() elif change > warning: if time.time() > no_rumble: move.set_leds(20, 50, 100) move.set_rumble(110) else: move.set_leds(100, 0, 100) move.set_rumble(0) button = move.get_buttons() move_last_value = total move.update_leds() #if we are dead elif dead_move.value <= 0: if time.time() - time_of_death >= death_time: dead_move.value = 3 elif dead_move.value == 3: move_last_value = None dead_move.value = 1 no_rumble = time.time() + 2 if death_time < 25: death_time += 2
def track_move( move_serial, move_num, team, team_num, dead_move, force_color, music_speed, commander_intro, move_opts, power, overdrive, ): # proc = psutil.Process(os.getpid()) # proc.nice(3) # explosion = Audio('audio/Joust/sounds/Explosion34.wav') # explosion.start_effect() start = False no_rumble = time.time() + 1 move_last_value = None move = common.get_move(move_serial, move_num) team_colors = common.generate_colors(team_num) # keep on looping while move is not dead ready = False move.set_leds(0, 0, 0) move.update_leds() time.sleep(1) death_time = 8 time_of_death = time.time() while commander_intro.value == 1: if move.poll(): button = move.get_buttons() if button == Buttons.middle.value and move_opts[Opts.holding.value] == Holding.not_holding.value: move_opts[Opts.selection.value] = Selections.a_button.value move_opts[Opts.holding.value] = Holding.holding.value elif button == Buttons.triangle.value and move_opts[Opts.holding.value] == Holding.not_holding.value: move_opts[Opts.selection.value] = Selections.triangle.value move_opts[Opts.holding.value] = Holding.holding.value elif ( move_opts[Opts.is_commander.value] == Bool.no.value and move_opts[Opts.holding.value] == Holding.holding.value ): move.set_leds(200, 200, 200) elif ( move_opts[Opts.is_commander.value] == Bool.yes.value and move_opts[Opts.holding.value] == Holding.holding.value ): move.set_leds(*Current_commander_colors[team]) else: # print 'boop' move.set_leds(*Commander_colors[team]) move.update_leds() move_opts[Opts.holding.value] = Holding.not_holding.value move_opts[Opts.selection.value] = Selections.nothing.value while True: if sum(force_color) != 0: no_rumble_time = time.time() + 5 time.sleep(0.01) move.set_leds(*force_color) move.update_leds() move.set_rumble(0) no_rumble = time.time() + 0.5 # if we are not dead elif dead_move.value == 1: if move.poll(): ax, ay, az = move.get_accelerometer_frame(psmove.Frame_SecondHalf) total = sum([ax, ay, az]) if move_last_value is not None: change = abs(move_last_value - total) # speed_percent = (music_speed.value - SLOW_MUSIC_SPEED)/(FAST_MUSIC_SPEED - SLOW_MUSIC_SPEED) # warning = common.lerp(SLOW_WARNING, FAST_WARNING, speed_percent) # threshold = common.lerp(SLOW_MAX, FAST_MAX, speed_percent) if move_opts[Opts.is_commander.value] == Bool.no.value: if overdrive.value == 0: warning = SLOW_WARNING threshold = SLOW_MAX else: warning = FAST_WARNING threshold = FAST_MAX else: # if affected by overdrive, this could make the power better warning = SLOW_WARNING threshold = SLOW_MAX if change > threshold: if time.time() > no_rumble: move.set_leds(0, 0, 0) move.set_rumble(90) dead_move.value = 0 time_of_death = time.time() elif change > warning: if time.time() > no_rumble: move.set_leds(20, 50, 100) move.set_rumble(110) else: if move_opts[Opts.is_commander.value] == Bool.no.value: if overdrive.value == 0: move.set_leds(*Commander_colors[team]) else: move.set_leds(*Overdrive_colors[team]) else: move.set_leds( *calculate_flash_time( Current_commander_colors[team][0], Current_commander_colors[team][1], Current_commander_colors[team][2], power.value, ) ) move.set_rumble(0) if move_opts[Opts.is_commander.value] == Bool.yes.value: if move.get_buttons() == 0 and move.get_trigger() < 10: move_opts[Opts.holding.value] = Holding.not_holding.value button = move.get_buttons() # print str(power.value) if power.value >= 1.0: # press trigger for overdrive if move_opts[Opts.holding.value] == Holding.not_holding.value and move.get_trigger() > 100: move_opts[Opts.selection.value] = Selections.trigger.value move_opts[Opts.holding.value] = Holding.holding.value # elif (move_opts[Opts.holding.value] == Holding.not_holding.value and button == Buttons.middle.value): # move_opts[Opts.selection.value] = Selections.a_button.value # move_opts[Opts.holding.value] = Holding.holding.value # elif (move_opts[Opts.holding.value] == Holding.not_holding.value and button == Buttons.triangle.value): # move_opts[Opts.selection.value] = Selections.triangle.value # move_opts[Opts.holding.value] = Holding.holding.value move_last_value = total move.update_leds() # if we are dead elif dead_move.value <= 0: if time.time() - time_of_death >= death_time: dead_move.value = 3 elif dead_move.value == 3: move_last_value = None dead_move.value = 1 no_rumble = time.time() + 2 if death_time < 25: death_time += 2
def start_game(self, random_mode=False): self.enable_bt_scanning(False) self.exclude_out_moves() self.stop_tracking_moves() time.sleep(1) self.teams = { serial: self.move_opts[serial][Opts.team.value] for serial in self.tracked_moves.keys() if self.out_moves[serial] == Alive.on.value } game_moves = [ move.get_serial() for move in self.moves if self.out_moves[move.get_serial()] == Alive.on.value ] try: self.menu_music.stop_audio() except: pass if len(game_moves ) < self.game_mode.minimum_players and self.ns.settings[ 'enforce_minimum']: Audio('audio/Menu/notenoughplayers.wav').start_effect() self.tracked_moves = {} return self.update_status('starting') if random_mode: good_random_modes = [ game for game in common.Games if game.name in self.ns.settings['random_modes'] ] good_random_modes = [ common.Games[game] for game in self.ns.settings['random_modes'] ] if self.ns.settings['enforce_minimum']: good_random_modes = [ game for game in good_random_modes if game.minimum_players <= len(game_moves) ] if len(good_random_modes) == 0: selected_game = common.Games.JoustFFA #force Joust FFA elif len(good_random_modes) == 1: selected_game = good_random_modes[0] else: if len(self.rand_game_list) >= len(good_random_modes): #empty rand game list, append old game, to not play it twice self.rand_game_list = [self.old_game_mode] selected_game = random.choice(good_random_modes) while selected_game in self.rand_game_list: selected_game = random.choice(good_random_modes) self.old_game_mode = selected_game self.rand_game_list.append(selected_game) self.game_mode = selected_game if self.ns.settings['play_instructions'] and self.ns.settings[ 'play_audio']: self.play_random_instructions() if self.game_mode == common.Games.Zombies: zombie.Zombie(game_moves, self.command_queue, self.ns, self.zombie_music) self.tracked_moves = {} elif self.game_mode == common.Games.Commander: commander.Commander(game_moves, self.command_queue, self.ns, self.commander_music) self.tracked_moves = {} elif self.game_mode == common.Games.Ninja: speed_bomb.Bomb(game_moves, self.command_queue, self.ns, self.commander_music) self.tracked_moves = {} elif self.game_mode == common.Games.Swapper: swapper.Swapper(game_moves, self.command_queue, self.ns, self.joust_music) self.tracked_moves = {} elif self.game_mode == common.Games.FightClub: if random.randint(0, 1) == 1: fight_music = self.commander_music else: fight_music = self.joust_music fight_club.Fight_club(game_moves, self.command_queue, self.ns, fight_music) self.tracked_moves = {} elif self.game_mode == common.Games.Tournament: tournament.Tournament(game_moves, self.command_queue, self.ns, self.joust_music) self.tracked_moves = {} else: if self.game_mode == common.Games.JoustFFA and self.experimental: print("Playing EXPERIMENTAL FFA Mode.") moves = [ common.get_move(serial, num) for num, serial in enumerate(game_moves) ] game = ffa.FreeForAll(moves, self.joust_music) game.run_loop() else: #may need to put in moves that have selected to not be in the game joust.Joust(game_moves, self.command_queue, self.ns, self.joust_music, self.teams, self.game_mode) self.tracked_moves = {} if random_mode: self.game_mode = common.Games.Random if self.ns.settings['play_instructions']: if self.ns.settings['play_audio']: Audio('audio/Menu/tradeoff2.wav').start_effect_and_wait() self.play_menu_music = True #reset music self.choose_new_music() #turn off admin mode so someone can't accidentally press a button self.admin_move = None self.random_added = []
def track_move(move_serial, move_num, team, num_teams, dead_move, force_color, music_speed, show_team_colors, invincibility): #proc = psutil.Process(os.getpid()) #proc.nice(3) #explosion = Audio('audio/Joust/sounds/Explosion34.wav') #explosion.start_effect() start = False no_rumble = time.time() + 1 move_last_value = None move = common.get_move(move_serial, move_num) team_colors = colors.generate_colors(num_teams) vibrate = False vibration_time = time.time() + 1 flash_lights = True flash_lights_timer = 0 start_inv = False change_arr = [0, 0, 0] #keep on looping while move is not dead while True: if show_team_colors.value == 1: if team.value != -1: move.set_leds(*team_colors[team.value]) else: move.set_leds(100, 100, 100) move.update_leds() elif sum(force_color) != 0: no_rumble_time = time.time() + 5 time.sleep(0.01) move.set_leds(*force_color) if sum(force_color) == 30: move.set_leds(0, 0, 0) move.set_rumble(0) move.update_leds() no_rumble = time.time() + 0.5 elif dead_move.value == 1 and team.value != -1: if move.poll(): ax, ay, az = move.get_accelerometer_frame( psmove.Frame_SecondHalf) #total = sum([ax, ay, az]) total = sqrt(sum([ax**2, ay**2, az**2])) if move_last_value is not None: change_real = abs(move_last_value - total) change_arr[0] = change_arr[1] change_arr[1] = change_arr[2] change_arr[2] = change_real change = (change_arr[0] + change_arr[1] + change_arr[2]) / 3 speed_percent = (music_speed.value - SLOW_MUSIC_SPEED) / ( FAST_MUSIC_SPEED - SLOW_MUSIC_SPEED) warning = common.lerp(SLOW_WARNING, FAST_WARNING, speed_percent) threshold = common.lerp(SLOW_MAX, FAST_MAX, speed_percent) if not start_inv and invincibility.value == 1: start_inv = True vibrate = True vibration_time = time.time() + 3 if vibrate: flash_lights_timer += 1 if flash_lights_timer > 7: flash_lights_timer = 0 flash_lights = not flash_lights if flash_lights: move.set_leds(100, 100, 100) else: if team.value != -1: move.set_leds(*team_colors[team.value]) else: move.set_leds(100, 100, 100) if time.time() < vibration_time - 0.22: move.set_rumble(110) else: move.set_rumble(0) if time.time() > vibration_time: vibrate = False start_inv = False invincibility.value = 0 else: if team.value != -1: move.set_leds(*team_colors[team.value]) else: move.set_leds(100, 100, 100) if invincibility.value == 0: if change > threshold: if time.time() > no_rumble: move.set_leds(0, 0, 0) move.set_rumble(90) dead_move.value = 0 elif change > warning and not vibrate: if time.time() > no_rumble: vibrate = True vibration_time = time.time() + 0.5 move.set_leds(20, 50, 100) move_last_value = total move.update_leds() else: if dead_move.value < 1: move.set_leds(0, 0, 0) elif team.value == -1: move.set_leds(100, 100, 100) move.update_leds() time.sleep(0.5) move.set_rumble(0)
def get_move(view): return common.get_move(view)
def track_move(serial, move_num, move_opts): move = common.get_move(serial, move_num) move.set_leds(0,0,0) move.update_leds() #move.set_leds(255,255,255) #move.update_leds() random_color = 0 while True: time.sleep(0.01) if move.poll(): game_mode = move_opts[Opts.game_mode.value] move_button = move.get_buttons() if move_opts[Opts.alive.value] == Alive.off.value: if move_button == Buttons.sync.value: move_opts[Opts.alive.value] = Alive.on.value time.sleep(0.1) else: if move_button == Buttons.all_buttons.value: move_opts[Opts.alive.value] = Alive.off.value move.set_leds(0,0,0) move.set_rumble(0) move.update_leds() continue if game_mode == common.Games.JoustFFA.value: move.set_leds(255,255,255) elif game_mode == common.Games.JoustTeams.value: if move_opts[Opts.team.value] >= TEAM_NUM: move_opts[Opts.team.value] = 0 move.set_leds(*TEAM_COLORS[move_opts[Opts.team.value]]) if move_button == Buttons.middle.value: #allow players to increase their own team if move_opts[Opts.holding.value] == Holding.not_holding.value: move_opts[Opts.team.value] = (move_opts[Opts.team.value] + 1) % TEAM_NUM move_opts[Opts.holding.value] = Holding.holding.value elif game_mode == common.Games.JoustRandomTeams.value: color = common.hsv2rgb(random_color, 1, 1) move.set_leds(*color) random_color += 0.001 if random_color >= 1: random_color = 0 elif game_mode == common.Games.WereJoust.value: if move_num <= 0: move.set_leds(150,0,0) else: move.set_leds(200,200,200) elif game_mode == common.Games.Zombies.value: move.set_leds(50,150,50) elif game_mode == common.Games.Commander.value: if move_num % 2 == 0: move.set_leds(150,0,0) else: move.set_leds(0,0,150) elif game_mode == common.Games.Random.value: if move_button == Buttons.middle.value: move_opts[Opts.random_start.value] = Alive.off.value if move_opts[Opts.random_start.value] == Alive.on.value: move.set_leds(0,0,255) else: move.set_leds(255,255,0) if move_opts[Opts.holding.value] == Holding.not_holding.value: if move_button == Buttons.select.value: move_opts[Opts.selection.value] = Selections.change_mode.value move_opts[Opts.holding.value] = Holding.holding.value if move_button == Buttons.start.value: print ('start') move_opts[Opts.selection.value] = Selections.start_game.value move_opts[Opts.holding.value] = Holding.holding.value if move_button == Buttons.nothing.value: move_opts[Opts.holding.value] = Holding.not_holding.value move.update_leds()
def track_move(move_serial, move_num, team, num_teams, dead_move, force_color, music_speed, commander_intro, move_opts, power, overdrive): #proc = psutil.Process(os.getpid()) #proc.nice(3) start = False no_rumble = time.time() + 1 move_last_value = None move = common.get_move(move_serial, move_num) team_colors = colors.generate_colors(num_teams) #keep on looping while move is not dead ready = False move.set_leds(0, 0, 0) move.update_leds() time.sleep(1) vibrate = False vibration_time = time.time() + 1 flash_lights = True flash_lights_timer = 0 change_arr = [0, 0, 0] death_time = 8 time_of_death = time.time() while commander_intro.value == 1: if move.poll(): button = common.Button(move.get_buttons()) if button == common.Button.MIDDLE and move_opts[ Opts.holding.value] == Holding.not_holding.value: move_opts[Opts.selection.value] = Selections.a_button.value move_opts[Opts.holding.value] = Holding.holding.value elif button == common.Button.TRIANGLE and move_opts[ Opts.holding.value] == Holding.not_holding.value: move_opts[Opts.selection.value] = Selections.triangle.value move_opts[Opts.holding.value] = Holding.holding.value elif move_opts[ Opts.is_commander.value] == Bool.no.value and move_opts[ Opts.holding.value] == Holding.holding.value: move.set_leds(200, 200, 200) elif move_opts[ Opts.is_commander.value] == Bool.yes.value and move_opts[ Opts.holding.value] == Holding.holding.value: move.set_leds(*Current_commander_colors[team]) else: move.set_leds(*Commander_colors[team]) move.update_leds() move_opts[Opts.holding.value] = Holding.not_holding.value move_opts[Opts.selection.value] = Selections.nothing.value while True: if sum(force_color) != 0: no_rumble_time = time.time() + 5 time.sleep(0.01) move.set_leds(*force_color) move.update_leds() move.set_rumble(0) no_rumble = time.time() + 0.5 #if we are not dead elif dead_move.value == 1: if move.poll(): ax, ay, az = move.get_accelerometer_frame( psmove.Frame_SecondHalf) #total = sum([ax, ay, az]) total = sqrt(sum([ax**2, ay**2, az**2])) if move_last_value is not None: change_real = abs(move_last_value - total) change_arr[0] = change_arr[1] change_arr[1] = change_arr[2] change_arr[2] = change_real change = (change_arr[0] + change_arr[1] + change_arr[2]) / 3 if move_opts[Opts.is_commander.value] == Bool.no.value: if overdrive.value == 0: warning = SLOW_WARNING threshold = SLOW_MAX else: warning = FAST_WARNING threshold = FAST_MAX else: #if affected by overdrive, this could make the power better warning = SLOW_WARNING threshold = SLOW_MAX if change > threshold: if time.time() > no_rumble: move.set_leds(0, 0, 0) move.set_rumble(90) dead_move.value = 0 time_of_death = time.time() elif change > warning and not vibrate: if time.time() > no_rumble: move.set_leds(20, 50, 100) vibrate = True vibration_time = time.time() + 0.5 else: if move_opts[Opts.is_commander.value] == Bool.no.value: if overdrive.value == 0: move.set_leds(*Commander_colors[team]) else: move.set_leds(*Overdrive_colors[team]) else: move.set_leds(*calculate_flash_time( Current_commander_colors[team][0], Current_commander_colors[team][1], Current_commander_colors[team][2], power.value)) move.set_rumble(0) if move_opts[Opts.is_commander.value] == Bool.yes.value: if (move.get_buttons() == 0 and move.get_trigger() < 10): move_opts[ Opts.holding.value] = Holding.not_holding.value button = move.get_buttons() #print str(power.value) if power.value >= 1.0: #press trigger for overdrive if (move_opts[Opts.holding.value] == Holding.not_holding.value and move.get_trigger() > 100): move_opts[Opts.selection. value] = Selections.trigger.value move_opts[ Opts.holding.value] = Holding.holding.value move_last_value = total if vibrate: flash_lights_timer += 1 if flash_lights_timer > 7: flash_lights_timer = 0 flash_lights = not flash_lights if flash_lights: move.set_leds(100, 100, 100) if time.time() < vibration_time - 0.22: move.set_rumble(110) else: move.set_rumble(0) if time.time() > vibration_time: vibrate = False move.update_leds() #if we are dead elif dead_move.value <= 0: if time.time() - time_of_death >= death_time: dead_move.value = 3 elif dead_move.value == 3: move_last_value = None dead_move.value = 1 no_rumble = time.time() + 2 if death_time < 25: death_time += 2
def track_move(move_serial, move_num, game_mode, team, team_color_enum, dead_move, force_color, music_speed, werewolf_reveal, show_team_colors, red_on_kill): #proc = psutil.Process(os.getpid()) #proc.nice(3) #explosion = Audio('audio/Joust/sounds/Explosion34.wav') #explosion.start_effect() start = False no_rumble = time.time() + 1 move_last_value = None move = common.get_move(move_serial, move_num) my_team_colors = team_color_enum.value werewolf = False vibrate = False change_arr = [0, 0, 0] vibration_time = time.time() + 1 flash_lights = True flash_lights_timer = 0 if team < 0: team = (team + 1) * -1 werewolf = True #keep on looping while move is not dead while True: if show_team_colors.value == 1: move.set_leds(*my_team_colors) move.update_leds() elif sum(force_color) != 0: no_rumble_time = time.time() + 5 time.sleep(0.01) move.set_leds(*force_color) if sum(force_color) > 75: if werewolf: move.set_rumble(80) else: if sum(force_color) == 30: if werewolf: move.set_leds(*colors.Colors.Blue40.value) else: move.set_leds(*colors.Colors.Black.value) move.set_rumble(0) move.update_leds() no_rumble = time.time() + 0.5 elif dead_move.value == 1 and werewolf_reveal.value > 0: if move.poll(): ax, ay, az = move.get_accelerometer_frame( psmove.Frame_SecondHalf) total = sqrt(sum([ax**2, ay**2, az**2])) #total = sum([ax, ay, az]) if move_last_value is not None: change_real = abs(move_last_value - total) change_arr[0] = change_arr[1] change_arr[1] = change_arr[2] change_arr[2] = change_real change = (change_arr[0] + change_arr[1] + change_arr[2]) / 3 speed_percent = (music_speed.value - SLOW_MUSIC_SPEED) / ( FAST_MUSIC_SPEED - SLOW_MUSIC_SPEED) if werewolf: warning = common.lerp(WERE_SLOW_WARNING, WERE_FAST_WARNING, speed_percent) threshold = common.lerp(WERE_SLOW_MAX, WERE_FAST_MAX, speed_percent) else: warning = common.lerp(SLOW_WARNING, FAST_WARNING, speed_percent) threshold = common.lerp(SLOW_MAX, FAST_MAX, speed_percent) if vibrate: flash_lights_timer += 1 if flash_lights_timer > 7: flash_lights_timer = 0 flash_lights = not flash_lights if flash_lights: if game_mode == common.Games.WereJoust: move.set_leds(*colors.Colors.Black.value) else: move.set_leds(*colors.Colors.White40.value) else: if game_mode == common.Games.WereJoust: if werewolf_reveal.value == 2 and werewolf: move.set_leds(*colors.Colors.Blue40.value) else: move.set_leds(*colors.Colors.White40.value) else: move.set_leds(*my_team_colors) if time.time() < vibration_time - 0.22: move.set_rumble(110) else: move.set_rumble(0) if time.time() > vibration_time: vibrate = False else: if game_mode == common.Games.WereJoust: if werewolf_reveal.value == 2 and werewolf: move.set_leds(*colors.Colors.Blue40.value) else: move.set_leds(*colors.Colors.White40.value) else: move.set_leds(*my_team_colors) #move.set_rumble(0) if change > threshold: if time.time() > no_rumble: if red_on_kill: move.set_leds(*colors.Colors.Red.value) else: move.set_leds(*colors.Colors.Black.value) move.set_rumble(90) dead_move.value = 0 elif change > warning and not vibrate: if time.time() > no_rumble: vibrate = True vibration_time = time.time() + 0.5 #move.set_leds(20,50,100) move_last_value = total move.update_leds() elif dead_move.value < 1: time.sleep(0.5) if dead_move.value == -1 and game_mode == common.Games.NonStop: time.sleep(2) move_last_value = 0 change_arr = [0, 0, 0] no_rumble = time.time() + 1 vibration_time = time.time() + 1 dead_move.value = 2
def get_move(view, network): global image1 (move, eat) = common.get_move(view, network) # image1 = image return (move, eat)
def track_move(move_serial, move_num, team, num_teams, team_colors, dead_move, force_color, music_speed, move_opts): #proc = psutil.Process(os.getpid()) #proc.nice(3) start = False no_rumble = time.time() + 1 move_last_value = None move = common.get_move(move_serial, move_num) #keep on looping while move is not dead ready = False move.set_leds(*colors.Colors.Black.value) move.update_leds() time.sleep(1) vibrate = False vibration_time = time.time() + 1 flash_lights = True flash_lights_timer = 0 change_arr = [0,0,0] death_time = 2 time_of_death = time.time() move_opts[Opts.holding.value] = Holding.not_holding.value move_opts[Opts.selection.value] = Selections.nothing.value while True: if sum(force_color) != 0: no_rumble_time = time.time() + 5 time.sleep(0.01) move.set_leds(*force_color) move.update_leds() move.set_rumble(0) no_rumble = time.time() + 0.5 #if we are not dead elif dead_move.value == 1: if move.poll(): ax, ay, az = move.get_accelerometer_frame(psmove.Frame_SecondHalf) total = sum([ax, ay, az]) if move_last_value is not None: change_real = abs(move_last_value - total) change_arr[0] = change_arr[1] change_arr[1] = change_arr[2] change_arr[2] = change_real change = (change_arr[0] + change_arr[1]+change_arr[2])/3 warning = SLOW_WARNING threshold = SLOW_MAX if vibrate: flash_lights_timer += 1 if flash_lights_timer > 7: flash_lights_timer = 0 flash_lights = not flash_lights if flash_lights: move.set_leds(*colors.Colors.White60.value) else: move.set_leds(*team_colors[team.value].value) if time.time() < vibration_time - 0.22: move.set_rumble(110) else: move.set_rumble(0) if time.time() > vibration_time: vibrate = False else: move.set_leds(*team_colors[team.value].value) if change > threshold: if time.time() > no_rumble: #vibrate = False move.set_leds(*colors.Colors.Black.value) move.set_rumble(90) dead_move.value = 0 time_of_death = time.time() elif change > warning and not vibrate: if time.time() > no_rumble: vibrate = True vibration_time = time.time() + 0.5 move.set_leds(20,50,100) #else: # move.set_rumble(0) move_last_value = total move.update_leds() #if we are dead elif dead_move.value <= 0: move.set_leds(*colors.Colors.Black.value) if time.time() - time_of_death >= death_time: dead_move.value = 3 elif dead_move.value == 3: move_last_value = None dead_move.value = 1 no_rumble = time.time() + 1 team.value = (team.value + 1) % num_teams
def get_move(view): #return common.get_move(view) return common.get_move(view,"images2.txt","value2.txt")
def track_move(move_serial, move_num, dead_move, force_color, bomb_color, move_opts, game_start, false_color, faked, rumble): #proc = psutil.Process(os.getpid()) #proc.nice(3) start = False no_rumble = time.time() + 1 move_last_value = None move = common.get_move(move_serial, move_num) #keep on looping while move is not dead ready = False move.set_leds(0, 0, 0) move.update_leds() time.sleep(1) super_dead = False no_bomb_color = [0, 0, 200] fake_bomb_color = [0, 255, 0] no_fake_bomb_color = [0, 0, 200] death_time = 8 time_of_death = time.time() can_fake = True faking = False move_opts[Opts.holding.value] = Holding.not_holding.value move_opts[Opts.selection.value] = Selections.nothing.value while not super_dead: if sum(force_color) != 0 and game_start.value == 1: no_rumble_time = time.time() + 5 time.sleep(0.01) move.set_leds(*force_color) move.update_leds() move.set_rumble(rumble.value) no_rumble = time.time() + 0.5 #if we are not dead elif dead_move.value > 0: move.set_rumble(rumble.value) if dead_move.value == 2: no_bomb_color = [150, 150, 150] no_fake_bomb_color = [120, 255, 120] else: no_bomb_color = [30, 30, 30] no_fake_bomb_color = [100, 100, 100] if move.poll(): button = move.get_buttons() if move_opts[Opts.has_bomb.value] == Bool.yes.value: if (move.get_trigger() > 50 and can_fake): faking = True #move_opts[Opts.holding.value] = Holding.holding.value move_opts[Opts.selection. value] = Selections.false_trigger.value if (move.get_trigger() <= 127): col1 = int( common.lerp(fake_bomb_color[0], no_fake_bomb_color[0], (move.get_trigger() - 50) / 77)) col2 = int( common.lerp(fake_bomb_color[1], no_fake_bomb_color[1], (move.get_trigger() - 50) / 77)) col3 = int( common.lerp(fake_bomb_color[2], no_fake_bomb_color[2], (move.get_trigger() - 50) / 77)) move.set_leds(col1, col2, col3) #if (move.get_trigger() > 127 and move.get_trigger() <= 140): # move.set_leds(*no_fake_bomb_color) if (move.get_trigger() > 127): col1 = int( common.lerp(no_fake_bomb_color[0], fake_bomb_color[0], (move.get_trigger() - 127) / 128)) col2 = int( common.lerp(no_fake_bomb_color[1], fake_bomb_color[1], (move.get_trigger() - 127) / 128)) col3 = int( common.lerp(no_fake_bomb_color[2], fake_bomb_color[2], (move.get_trigger() - 127) / 128)) move.set_leds(col1, col2, col3) #move.set_leds(0,200,0) else: move.set_leds(*bomb_color) if game_start.value == 0: move.set_leds(*force_color) move.update_leds() #move_opts[Opts.holding.value] == Holding.not_holding.value if faking: #move_opts[Opts.selection.value] = Selections.not_holding.value if game_start.value == 1: can_fake = False faking = False #non bomb holder else: can_fake = True faking = False if false_color.value == 1: move.set_leds(150, 20, 20) else: move.set_leds(*no_bomb_color) if move_opts[Opts.holding. value] == Holding.not_holding.value and ( move.get_trigger() > 50 or button == Buttons.middle.value): if move_opts[Opts.has_bomb.value] == Bool.no.value: move_opts[ Opts.holding.value] = Holding.holding.value if game_start.value == 1 and false_color.value == 1: print("JUST DIED TO BEING FAKED!!!") faked.value = 1 #dead_move.value -= 1 move.set_rumble(0) if move_opts[ Opts.holding.value] == Holding.not_holding.value and ( button == Buttons.triangle.value or button == Buttons.circle.value or button == Buttons.cross.value or button == Buttons.square.value): move_opts[Opts.selection.value] = Selections.counter.value move_opts[Opts.holding.value] = Holding.holding.value if button == Buttons.middle.value and move_opts[ Opts.holding.value] == Holding.not_holding.value: move_opts[Opts.selection.value] = Selections.a_button.value move_opts[Opts.holding.value] = Holding.holding.value elif move_opts[ Opts.holding. value] == Holding.holding.value and button == Buttons.nothing.value and move.get_trigger( ) <= 50: move_opts[Opts.selection.value] = Selections.nothing.value move_opts[Opts.holding.value] = Holding.not_holding.value else: if super_dead == False: #for i in range(100): # time.sleep(0.01) # move.set_leds(0,random.randrange(100, 200),0) # move.set_rumble(200) # move.update_leds() super_dead = True move.set_rumble(0) move.set_leds(0, 0, 0) move.update_leds()
def track_move(serial, move_num, move_opts, force_color, battery): move = common.get_move(serial, move_num) move.set_leds(0,0,0) move.update_leds() random_color = 0 while True: time.sleep(0.01) if move.poll(): game_mode = move_opts[Opts.game_mode.value] move_button = move.get_buttons() if move_opts[Opts.alive.value] == Alive.off.value: if move_button == Buttons.sync.value: move_opts[Opts.alive.value] = Alive.on.value time.sleep(0.1) else: if move_button == Buttons.all_buttons.value: move_opts[Opts.alive.value] = Alive.off.value move.set_leds(0,0,0) move.set_rumble(0) move.update_leds() continue #show battery level if battery.value == 1: battery_level = move.get_battery() if battery_level == 5: # 100% - green move.set_leds(0, 255, 0) elif battery_level == 4: # 80% - green-ish move.set_leds(128, 200, 0) elif battery_level == 3: # 60% - yellow move.set_leds(255, 255, 0) else: # <= 40% - red move.set_leds(255, 0, 0) #custom team mode is the only game mode that #can't be added to con mode elif game_mode == common.Games.JoustTeams.value: if move_opts[Opts.team.value] >= TEAM_NUM: move_opts[Opts.team.value] = 0 move.set_leds(*TEAM_COLORS[move_opts[Opts.team.value]]) if move_button == Buttons.middle.value: #allow players to increase their own team if move_opts[Opts.holding.value] == Holding.not_holding.value: move_opts[Opts.team.value] = (move_opts[Opts.team.value] + 1) % TEAM_NUM move_opts[Opts.holding.value] = Holding.holding.value #set leds to forced color elif sum(force_color) != 0: move.set_leds(*force_color) elif game_mode == common.Games.JoustFFA.value: move.set_leds(255,255,255) elif game_mode == common.Games.JoustRandomTeams.value: color = common.hsv2rgb(random_color, 1, 1) move.set_leds(*color) random_color += 0.001 if random_color >= 1: random_color = 0 elif game_mode == common.Games.WereJoust.value: if move_num <= 0: move.set_leds(150,0,0) else: move.set_leds(200,200,200) elif game_mode == common.Games.Zombies.value: move.set_leds(50,150,50) elif game_mode == common.Games.Commander.value: if move_num % 2 == 0: move.set_leds(150,0,0) else: move.set_leds(0,0,150) elif game_mode == common.Games.Swapper.value: if random_color > 0.5: move.set_leds(150,0,0) else: move.set_leds(0,0,150) random_color += 0.002 if random_color >= 1: random_color = 0 elif game_mode == common.Games.Ninja.value: if move_num <= 0: move.set_leds(random.randrange(100, 200),0,0) else: move.set_leds(200,200,200) elif game_mode == common.Games.KingoftheHill.value: if random_color > 0.5: move.set_leds(150,0,0) else: move.set_leds(0,0,150) random_color += 0.002 if random_color >= 1: random_color = 0 elif game_mode == common.Games.Random.value: if move_button == Buttons.middle.value: move_opts[Opts.random_start.value] = Alive.off.value if move_opts[Opts.random_start.value] == Alive.on.value: move.set_leds(0,0,255) else: move.set_leds(255,255,0) if move_opts[Opts.holding.value] == Holding.not_holding.value: #Change game mode and become admin controller if move_button == Buttons.select.value: move_opts[Opts.selection.value] = Selections.change_mode.value move_opts[Opts.holding.value] = Holding.holding.value #start the game if move_button == Buttons.start.value: move_opts[Opts.selection.value] = Selections.start_game.value move_opts[Opts.holding.value] = Holding.holding.value #as an admin controller add or remove game from convention mode if move_button == Buttons.cross.value: move_opts[Opts.selection.value] = Selections.add_game.value move_opts[Opts.holding.value] = Holding.holding.value #as an admin controller change sensitivity of controllers if move_button == Buttons.circle.value: move_opts[Opts.selection.value] = Selections.change_sensitivity.value move_opts[Opts.holding.value] = Holding.holding.value #as an admin controller change if instructions play if move_button == Buttons.square.value: move_opts[Opts.selection.value] = Selections.change_instructions.value move_opts[Opts.holding.value] = Holding.holding.value #as an admin show battery level of controllers if move_button == Buttons.triangle.value: move_opts[Opts.selection.value] = Selections.show_battery.value move_opts[Opts.holding.value] = Holding.holding.value if move_button == Buttons.nothing.value: move_opts[Opts.holding.value] = Holding.not_holding.value move.update_leds()
def start_game(self, random_mode=False): self.enable_bt_scanning(False) self.exclude_out_moves() time.sleep(1) self.teams = { serial: self.move_opts[serial][Opts.team.value] for serial in self.tracked_moves.keys() if self.out_moves[serial] == Alive.on.value } game_moves = [ move.get_serial() for move in self.moves if self.out_moves[move.get_serial()] == Alive.on.value ] try: self.menu_music.stop_audio() except: pass if len(game_moves ) < self.game_mode.minimum_players and self.ns.settings[ 'enforce_minimum']: Audio('audio/Menu/vox/' + self.ns.settings['menu_voice'] + '/notenoughplayers.wav').start_effect() self.reset_controller_game_state() return self.menu.value = 0 self.restart.value = 1 self.update_status('starting') self.sensitivity = self.ns.settings['sensitivity'] self.controller_sensitivity[0] = common.SLOW_MAX[self.sensitivity] self.controller_sensitivity[1] = common.SLOW_WARNING[self.sensitivity] self.controller_sensitivity[2] = common.FAST_MAX[self.sensitivity] self.controller_sensitivity[3] = common.FAST_WARNING[self.sensitivity] self.controller_sensitivity[4] = common.WERE_SLOW_MAX[self.sensitivity] self.controller_sensitivity[5] = common.WERE_SLOW_WARNING[ self.sensitivity] self.controller_sensitivity[6] = common.WERE_FAST_MAX[self.sensitivity] self.controller_sensitivity[7] = common.WERE_FAST_WARNING[ self.sensitivity] self.controller_sensitivity[8] = common.ZOMBIE_MAX[self.sensitivity] self.controller_sensitivity[9] = common.ZOMBIE_WARNING[ self.sensitivity] if random_mode: good_random_modes = [ game for game in common.Games if game.name in self.ns.settings['random_modes'] ] good_random_modes = [ common.Games[game] for game in self.ns.settings['random_modes'] ] if self.ns.settings['enforce_minimum']: good_random_modes = [ game for game in good_random_modes if game.minimum_players <= len(game_moves) ] if len(good_random_modes) == 0: selected_game = common.Games.JoustFFA #force Joust FFA elif len(good_random_modes) == 1: selected_game = good_random_modes[0] else: if len(self.rand_game_list) >= len(good_random_modes): #empty rand game list, append old game, to not play it twice self.rand_game_list = [self.old_game_mode] selected_game = random.choice(good_random_modes) while selected_game in self.rand_game_list: selected_game = random.choice(good_random_modes) self.old_game_mode = selected_game self.rand_game_list.append(selected_game) self.game_mode = selected_game self.controller_game_mode.value = self.game_mode.value if self.ns.settings['play_instructions'] and self.ns.settings[ 'play_audio']: self.play_random_instructions() if self.game_mode == common.Games.Zombies: zombie.Zombie(game_moves, self.command_queue, self.ns, self.zombie_music, self.restart, self.zombie_opts) elif self.game_mode == common.Games.Commander: commander.Commander(game_moves, self.command_queue, self.ns, self.commander_music, self.dead_moves, self.commander_intro, self.commander_move_opts, \ self.commander_powers, self.commander_overdrive, self.music_speed, self.force_color, self.restart, self.controller_teams) elif self.game_mode == common.Games.Ninja: speed_bomb.Bomb(game_moves, self.command_queue, self.ns, self.commander_music, self.bomb_color, self.game_start, self.five_controller_opts, self.dead_moves, self.force_color, self.false_colors, self.was_faked, self.rumble, self.music_speed, self.restart) elif self.game_mode == common.Games.Swapper: swapper.Swapper(game_moves, self.command_queue, self.ns, self.joust_music, \ self.swapper_team_colors, self.dead_moves, self.music_speed, self.force_color, self.five_controller_opts, self.controller_teams, self.restart) elif self.game_mode == common.Games.FightClub: if random.randint(0, 1) == 1: fight_music = self.commander_music else: fight_music = self.joust_music fight_club.Fight_club(game_moves, self.command_queue, self.ns, fight_music, self.show_team_colors, self.music_speed, self.dead_moves, self.force_color, self.invincible_moves, self.fight_club_colors, self.restart) elif self.game_mode == common.Games.Tournament: tournament.Tournament(game_moves, self.command_queue, self.ns, self.joust_music, self.show_team_colors, self.music_speed, self.controller_teams, self.dead_moves, self.force_color, self.invincible_moves, self.num_teams, self.restart) else: if self.game_mode == common.Games.JoustFFA and self.experimental: print("Playing EXPERIMENTAL FFA Mode.") moves = [ common.get_move(serial, num) for num, serial in enumerate(game_moves) ] game = ffa.FreeForAll(moves, self.joust_music) game.run_loop() else: #may need to put in moves that have selected to not be in the game joust.Joust(game_moves, self.command_queue, self.ns, self.joust_music, self.teams, self.game_mode, self.controller_teams, self.controller_colors, self.dead_moves, self.force_color, self.music_speed, self.werewolf_reveal, self.show_team_colors, self.red_on_kill, self.restart) if random_mode: self.game_mode = common.Games.Random if self.ns.settings['play_instructions']: if self.ns.settings['play_audio']: Audio('audio/Menu/vox/' + self.ns.settings['menu_voice'] + '/tradeoff2.wav').start_effect_and_wait() self.play_menu_music = True #reset music self.choose_new_music() #turn off admin mode so someone can't accidentally press a button self.admin_move = None self.random_added = [] self.reset_controller_game_state() self.menu.value = 1 self.restart.value = 0 self.reset_controller_game_state()
def _get_inputs(game_state: GameState) -> (): return (common.get_col(game_state), common.get_move(game_state))
def track_move(move_serial, move_num, team, team_num, score, win_amount, dead_move, force_color, music_speed): #proc = psutil.Process(os.getpid()) #proc.nice(3) #explosion = Audio('audio/Joust/sounds/Explosion34.wav') #explosion.start_effect() move_last_value = None move = common.get_move(move_serial, move_num) team_colors = common.generate_colors(team_num) werewolf = False flash_time = time.time() #keep on looping while move is not dead while True: if sum(force_color) != 0: time.sleep(0.01) move.set_leds(*force_color) move.update_leds() if werewolf: move.set_rumble(80) elif dead_move.value == 1: if move.poll(): ax, ay, az = move.get_accelerometer_frame( psmove.Frame_SecondHalf) total = sum([ax, ay, az]) if move_last_value is not None: change = abs(move_last_value - total) speed_percent = (music_speed.value - SLOW_MUSIC_SPEED) / ( FAST_MUSIC_SPEED - SLOW_MUSIC_SPEED) warning = common.lerp(SLOW_WARNING, FAST_WARNING, speed_percent) threshold = common.lerp(SLOW_MAX, FAST_MAX, speed_percent) if change > threshold: move.set_leds(0, 0, 0) move.set_rumble(90) score.value = -1 dead_move.value = 0 elif change > warning: move.set_leds(20, 50, 100) move.set_rumble(110) else: if score.value >= 1: if time.time() > flash_time: vall = calculate_flash_time( team_colors[team][0], team_colors[team][1], team_colors[team][2], score.value, win_amount) #print vall move.set_leds(*vall) #flash_time = time.time() + calculate_flash_time(score.value, win_amount) else: move.set_leds(*team_colors[team]) move.set_rumble(0) move_last_value = total move.update_leds() elif dead_move.value == 0: if move.poll(): move_button = move.get_buttons() if score.value >= 0 and move_button == common.Buttons.middle: dead_move.value = 1 move_last_value = None
def track_move(serial, move_num, move_opts, force_color, battery, dead_count): move = common.get_move(serial, move_num) move.set_leds(0, 0, 0) move.update_leds() random_color = random.random() while True: time.sleep(0.01) if move.poll(): game_mode = common.Games(move_opts[Opts.game_mode.value]) move_button = common.Button(move.get_buttons()) if move_opts[Opts.alive.value] == Alive.off.value: if move_button == common.Button.SYNC: move_opts[Opts.alive.value] = Alive.on.value dead_count.value = dead_count.value - 1 time.sleep(0.1) else: if move_button == common.Button.SHAPES: move_opts[Opts.alive.value] = Alive.off.value dead_count.value = dead_count.value + 1 move.set_leds(0, 0, 0) move.set_rumble(0) move.update_leds() continue #show battery level if battery.value == 1: battery_level = move.get_battery() #granted a charging move should be dead #so it won't light up anyway if battery_level == psmove.Batt_CHARGING: move.set_leds(*colors.Colors.White20.value) elif battery_level == psmove.Batt_CHARGING_DONE: move.set_leds(*colors.Colors.White.value) elif battery_level == psmove.Batt_MAX: move.set_leds(*colors.Colors.Green.value) elif battery_level == psmove.Batt_80Percent: move.set_leds(*colors.Colors.Turquoise.value) elif battery_level == psmove.Batt_60Percent: move.set_leds(*colors.Colors.Blue.value) elif battery_level == psmove.Batt_40Percent: move.set_leds(*colors.Colors.Yellow.value) else: # under 40% - you should charge it! move.set_leds(*colors.Colors.Red.value) #custom team mode is the only game mode that #can't be added to con mode elif game_mode == common.Games.JoustTeams: if move_opts[Opts.team.value] >= TEAM_NUM: move_opts[Opts.team.value] = 3 move.set_leds(*colors.team_color_list[move_opts[ Opts.team.value]].value) if move_button == common.Button.MIDDLE: #allow players to increase their own team if move_opts[Opts.holding. value] == Holding.not_holding.value: move_opts[Opts.team.value] = ( move_opts[Opts.team.value] + 1) % TEAM_NUM move_opts[ Opts.holding.value] = Holding.holding.value #set leds to forced color elif sum(force_color) != 0: move.set_leds(*force_color) elif game_mode == common.Games.JoustFFA: move.set_leds(*colors.Colors.Orange.value) elif game_mode == common.Games.JoustRandomTeams: color = time.time() / 10 % 1 color = colors.hsv2rgb(color, 1, 1) move.set_leds(*color) elif game_mode == common.Games.Traitor: if move_num % 4 == 2 and time.time() / 3 % 1 < .15: move.set_leds(*colors.Colors.Red80.value) else: color = 1 - time.time() / 10 % 1 color = colors.hsv2rgb(color, 1, 1) move.set_leds(*color) elif game_mode == common.Games.WereJoust: if move_num <= 0: move.set_leds(*colors.Colors.Blue40.value) else: move.set_leds(*colors.Colors.Yellow.value) elif game_mode == common.Games.Zombies: move.set_leds(*colors.Colors.Zombie.value) elif game_mode == common.Games.Commander: if move_num % 2 == 0: move.set_leds(*colors.Colors.Orange.value) else: move.set_leds(*colors.Colors.Blue.value) elif game_mode == common.Games.Swapper: if (time.time() / 5 + random_color) % 1 > 0.5: move.set_leds(*colors.Colors.Magenta.value) else: move.set_leds(*colors.Colors.Green.value) elif game_mode == common.Games.FightClub: move.set_leds(*colors.Colors.Green80.value) elif game_mode == common.Games.NonStop: move.set_leds(*colors.Colors.Turquoise.value) elif game_mode == common.Games.Tournament: if move_num <= 0: color = time.time() / 10 % 1 color = colors.hsv2rgb(color, 1, 1) move.set_leds(*color) else: move.set_leds(*colors.Colors.Blue40.value) elif game_mode == common.Games.Ninja: if move_num <= 0: move.set_leds(random.randrange(100, 200), 0, 0) else: move.set_leds(*colors.Colors.Red60.value) elif game_mode == common.Games.Random: move.set_leds(0, 0, 255) if move.get_trigger() > 100: move_opts[Opts.random_start.value] = Alive.off.value if move_opts[Opts.random_start.value] == Alive.off.value: move.set_leds(255, 255, 255) if move_opts[Opts.holding.value] == Holding.not_holding.value: #Change game mode and become admin controller if move_button == common.Button.SELECT: move_opts[Opts.selection. value] = Selections.change_mode.value move_opts[Opts.holding.value] = Holding.holding.value #start the game if move_button == common.Button.START: move_opts[ Opts.selection.value] = Selections.start_game.value move_opts[Opts.holding.value] = Holding.holding.value #as an admin controller add or remove game from convention mode if move_button == common.Button.CROSS: move_opts[ Opts.selection.value] = Selections.add_game.value move_opts[Opts.holding.value] = Holding.holding.value #as an admin controller change sensitivity of controllers if move_button == common.Button.CIRCLE: move_opts[Opts.selection. value] = Selections.change_sensitivity.value move_opts[Opts.holding.value] = Holding.holding.value #as an admin controller change if instructions play if move_button == common.Button.SQUARE: move_opts[Opts.selection. value] = Selections.change_instructions.value move_opts[Opts.holding.value] = Holding.holding.value #as an admin show battery level of controllers if move_button == common.Button.TRIANGLE: move_opts[Opts.selection. value] = Selections.show_battery.value move_opts[Opts.holding.value] = Holding.holding.value if move_button == common.Button.NONE: move_opts[Opts.holding.value] = Holding.not_holding.value move.update_leds()
def track_move(move_serial, move_num, game_mode, team, team_num, dead_move, force_color, music_speed, werewolf_reveal): #proc = psutil.Process(os.getpid()) #proc.nice(3) #explosion = Audio('audio/Joust/sounds/Explosion34.wav') #explosion.start_effect() start = False no_rumble = time.time() + 1 move_last_value = None move = common.get_move(move_serial, move_num) team_colors = common.generate_colors(team_num) werewolf = False if team < 0: team = (team + 1) * -1 werewolf = True #keep on looping while move is not dead while True: if sum(force_color) != 0: no_rumble_time = time.time() + 5 time.sleep(0.01) move.set_leds(*force_color) if sum(force_color) > 75: if werewolf: move.set_rumble(80) else: if sum(force_color) == 30: if werewolf: move.set_leds(255, 0, 0) else: move.set_leds(0, 0, 0) move.set_rumble(0) move.update_leds() no_rumble = time.time() + 0.5 elif dead_move.value == 1 and werewolf_reveal.value > 0: if move.poll(): ax, ay, az = move.get_accelerometer_frame(psmove.Frame_SecondHalf) total = sum([ax, ay, az]) if move_last_value is not None: change = abs(move_last_value - total) speed_percent = (music_speed.value - SLOW_MUSIC_SPEED)/(FAST_MUSIC_SPEED - SLOW_MUSIC_SPEED) if werewolf: warning = common.lerp(WERE_SLOW_WARNING, WERE_FAST_WARNING, speed_percent) threshold = common.lerp(WERE_SLOW_MAX, WERE_FAST_MAX, speed_percent) else: warning = common.lerp(SLOW_WARNING, FAST_WARNING, speed_percent) threshold = common.lerp(SLOW_MAX, FAST_MAX, speed_percent) if change > threshold: if time.time() > no_rumble: move.set_leds(0,0,0) move.set_rumble(90) dead_move.value = 0 elif change > warning: if time.time() > no_rumble: move.set_leds(20,50,100) move.set_rumble(110) else: if game_mode == common.Games.WereJoust.value: if werewolf_reveal.value == 2 and werewolf: move.set_leds(255,0,0) else: move.set_leds(100,100,100) else: move.set_leds(*team_colors[team]) move.set_rumble(0) move_last_value = total move.update_leds()
def Start(self): running = True moves = [] for move_num in range(len(self.controllers_alive)): moves.append( common.get_move(self.controllers_alive[move_num], move_num)) serials = self.controllers_alive processes = [] for num_try, serial in enumerate(serials): starting_bullets = 0 #starting_bullets = random.choice([0, 1]) opts = Array('i', [0, 0, 0, 1, starting_bullets, 1, 1]) p = Process(target=track_controller, args=(serial, num_try, opts)) p.start() processes.append(p) self.controller_opts[serial] = opts self.humans.append(serial) if self.play_audio: human_victory = Audio( 'audio/Zombie/sound_effects/human_victory.wav') zombie_victory = Audio( 'audio/Zombie/sound_effects/zombie_victory.wav') death = Audio('audio/Zombie/sound_effects/zombie_death.wav') pistol = Audio('audio/Zombie/sound_effects/pistol.wav') shotgun = Audio('audio/Zombie/sound_effects/shotgun.wav') molotov = Audio('audio/Zombie/sound_effects/molotov.wav') try: self.music.start_audio_loop() ## music = Audio('audio/Zombie/music/' + random.choice(os.listdir('audio/Zombie/music/'))) ## music.start_effect_music() except: print('no music in audio/Zombie/music/') start_kill = time.time() + 5 while time.time() < start_kill: pass #kill first humans for random_human in random.sample(set(self.humans), 2): #random_human = random.choice(self.humans) self.controller_opts[random_human][3] = 0 while running: if self.play_audio: self.audio_cue() if time.time() - 0.1 > self.update_time: self.update_time = time.time() self.check_command_queue() self.update_status('in_game') #human update, loop through the different human controllers for serial in self.humans: #human is dead and now a zombie if self.controller_opts[serial][3] == 0: self.controller_opts[serial][0] = 1 self.dead_zombies[serial] = time.time( ) + self.get_kill_time() #pistol fired(1 bullet 1 random alive zombie) elif self.controller_opts[serial][1] == 2: if self.play_audio: pistol.start_effect() self.kill_zombies(1, [0, 0, 0, 0, 1, 1, 1]) self.controller_opts[serial][1] = 0 #molotov fired(5 bullets all alive zombies) elif self.controller_opts[serial][1] == 4: if self.play_audio: molotov.start_effect() self.kill_zombies(50, [0, 0, 1, 1, 2, 3]) self.controller_opts[serial][1] = 0 for serial, spawn_time in self.dead_zombies.items(): if serial in self.humans: self.humans.remove(serial) if spawn_time < time.time(): #set zombie to alive self.controller_opts[serial][3] = 1 self.alive_zombies.append(serial) #loop through dead zombies for serial in self.alive_zombies: if serial in self.dead_zombies: del self.dead_zombies[serial] #melee if self.controller_opts[serial][3] == 0: self.controller_opts[serial][0] = 1 self.dead_zombies[serial] = time.time( ) + self.get_kill_time() self.alive_zombies.remove(serial) self.reward([0, 0, 1, 1, 2]) death.start_effect() #win scenario if len(self.humans) <= 0 or (time.time() - self.start_time ) > self.win_time or self.kill_game: for proc in processes: proc.terminate() proc.join() pause_time = time.time() + 3 HSV = [(x * 1.0 / (50 * len(self.controllers_alive)), 0.9, 1) for x in range(50 * len(self.controllers_alive))] colour_range = [[int(x) for x in colors.hsv2rgb(*colour)] for colour in HSV] win_controllers = [] if len(self.humans) <= 0: if self.play_audio: zombie_victory.start_effect() self.alive_zombies.extend(self.dead_zombies.keys()) self.update_status('ending', 1) win_controllers = self.alive_zombies if (time.time() - self.start_time) > self.win_time: if self.play_audio: human_victory.start_effect() win_controllers = self.humans self.update_status('ending', 0) if self.kill_game: self.alive_zombies.extend(self.dead_zombies.keys()) win_controllers = self.humans + self.alive_zombies self.update_status('killed') #This needs to go in it's own function while time.time() < pause_time: for win_move in moves: if win_move.get_serial() in win_controllers: win_move.set_leds(*colour_range[0]) colour_range.append(colour_range.pop(0)) win_move.update_leds() else: win_move.set_rumble(100) win_move.poll() win_move.set_leds(0, 0, 0) win_move.update_leds() time.sleep(0.01) running = False if self.play_audio: try: self.music.stop_audio() except: print('no audio loaded')
def track_move(move_serial, move_num, game_mode, team, team_num, dead_move, force_color, music_speed, werewolf_reveal): # proc = psutil.Process(os.getpid()) # proc.nice(3) # explosion = Audio('audio/Joust/sounds/Explosion34.wav') # explosion.start_effect() start = False no_rumble = time.time() + 1 move_last_value = None move = common.get_move(move_serial, move_num) team_colors = common.generate_colors(team_num) werewolf = False if team < 0: team = (team + 1) * -1 werewolf = True # keep on looping while move is not dead while True: if sum(force_color) != 0: no_rumble_time = time.time() + 5 time.sleep(0.01) move.set_leds(*force_color) if sum(force_color) > 75: if werewolf: move.set_rumble(80) else: if sum(force_color) == 30: if werewolf: move.set_leds(255, 0, 0) else: move.set_leds(0, 0, 0) move.set_rumble(0) move.update_leds() no_rumble = time.time() + 0.5 elif dead_move.value == 1 and werewolf_reveal.value > 0: if move.poll(): ax, ay, az = move.get_accelerometer_frame(psmove.Frame_SecondHalf) total = sum([ax, ay, az]) if move_last_value is not None: change = abs(move_last_value - total) speed_percent = (music_speed.value - SLOW_MUSIC_SPEED) / (FAST_MUSIC_SPEED - SLOW_MUSIC_SPEED) if werewolf: warning = common.lerp(WERE_SLOW_WARNING, WERE_FAST_WARNING, speed_percent) threshold = common.lerp(WERE_SLOW_MAX, WERE_FAST_MAX, speed_percent) else: warning = common.lerp(SLOW_WARNING, FAST_WARNING, speed_percent) threshold = common.lerp(SLOW_MAX, FAST_MAX, speed_percent) if change > threshold: if time.time() > no_rumble: move.set_leds(0, 0, 0) move.set_rumble(90) dead_move.value = 0 elif change > warning: if time.time() > no_rumble: move.set_leds(20, 50, 100) move.set_rumble(110) else: if game_mode == common.Games.WereJoust.value: if werewolf_reveal.value == 2 and werewolf: move.set_leds(255, 0, 0) else: move.set_leds(100, 100, 100) else: move.set_leds(*team_colors[team]) move.set_rumble(0) move_last_value = total move.update_leds()
def track_move(move_serial, move_num, team, team_num, dead_move, force_color, music_speed, commander_intro, move_opts, power, overdrive): #proc = psutil.Process(os.getpid()) #proc.nice(3) #explosion = Audio('audio/Joust/sounds/Explosion34.wav') #explosion.start_effect() start = False no_rumble = time.time() + 1 move_last_value = None move = common.get_move(move_serial, move_num) team_colors = common.generate_colors(team_num) #keep on looping while move is not dead ready = False move.set_leds(0, 0, 0) move.update_leds() time.sleep(1) death_time = 8 time_of_death = time.time() while commander_intro.value == 1: if move.poll(): button = move.get_buttons() if button == Buttons.middle.value and move_opts[ Opts.holding.value] == Holding.not_holding.value: move_opts[Opts.selection.value] = Selections.a_button.value move_opts[Opts.holding.value] = Holding.holding.value elif button == Buttons.triangle.value and move_opts[ Opts.holding.value] == Holding.not_holding.value: move_opts[Opts.selection.value] = Selections.triangle.value move_opts[Opts.holding.value] = Holding.holding.value elif move_opts[ Opts.is_commander.value] == Bool.no.value and move_opts[ Opts.holding.value] == Holding.holding.value: move.set_leds(200, 200, 200) elif move_opts[ Opts.is_commander.value] == Bool.yes.value and move_opts[ Opts.holding.value] == Holding.holding.value: move.set_leds(*Current_commander_colors[team]) else: #print 'boop' move.set_leds(*Commander_colors[team]) move.update_leds() move_opts[Opts.holding.value] = Holding.not_holding.value move_opts[Opts.selection.value] = Selections.nothing.value while True: if sum(force_color) != 0: no_rumble_time = time.time() + 5 time.sleep(0.01) move.set_leds(*force_color) move.update_leds() move.set_rumble(0) no_rumble = time.time() + 0.5 #if we are not dead elif dead_move.value == 1: if move.poll(): ax, ay, az = move.get_accelerometer_frame( psmove.Frame_SecondHalf) total = sum([ax, ay, az]) if move_last_value is not None: change = abs(move_last_value - total) #speed_percent = (music_speed.value - SLOW_MUSIC_SPEED)/(FAST_MUSIC_SPEED - SLOW_MUSIC_SPEED) #warning = common.lerp(SLOW_WARNING, FAST_WARNING, speed_percent) #threshold = common.lerp(SLOW_MAX, FAST_MAX, speed_percent) if move_opts[Opts.is_commander.value] == Bool.no.value: if overdrive.value == 0: warning = SLOW_WARNING threshold = SLOW_MAX else: warning = FAST_WARNING threshold = FAST_MAX else: #if affected by overdrive, this could make the power better warning = SLOW_WARNING threshold = SLOW_MAX if change > threshold: if time.time() > no_rumble: move.set_leds(0, 0, 0) move.set_rumble(90) dead_move.value = 0 time_of_death = time.time() elif change > warning: if time.time() > no_rumble: move.set_leds(20, 50, 100) move.set_rumble(110) else: if move_opts[Opts.is_commander.value] == Bool.no.value: if overdrive.value == 0: move.set_leds(*Commander_colors[team]) else: move.set_leds(*Overdrive_colors[team]) else: move.set_leds(*calculate_flash_time( Current_commander_colors[team][0], Current_commander_colors[team][1], Current_commander_colors[team][2], power.value)) move.set_rumble(0) if move_opts[Opts.is_commander.value] == Bool.yes.value: if (move.get_buttons() == 0 and move.get_trigger() < 10): move_opts[ Opts.holding.value] = Holding.not_holding.value button = move.get_buttons() #print str(power.value) if power.value >= 1.0: #press trigger for overdrive if (move_opts[Opts.holding.value] == Holding.not_holding.value and move.get_trigger() > 100): move_opts[Opts.selection. value] = Selections.trigger.value move_opts[ Opts.holding.value] = Holding.holding.value #elif (move_opts[Opts.holding.value] == Holding.not_holding.value and button == Buttons.middle.value): # move_opts[Opts.selection.value] = Selections.a_button.value # move_opts[Opts.holding.value] = Holding.holding.value #elif (move_opts[Opts.holding.value] == Holding.not_holding.value and button == Buttons.triangle.value): # move_opts[Opts.selection.value] = Selections.triangle.value # move_opts[Opts.holding.value] = Holding.holding.value move_last_value = total move.update_leds() #if we are dead elif dead_move.value <= 0: if time.time() - time_of_death >= death_time: dead_move.value = 3 elif dead_move.value == 3: move_last_value = None dead_move.value = 1 no_rumble = time.time() + 2 if death_time < 25: death_time += 2
def track_move(serial, move_num, move_opts, force_color, battery, dead_count): move = common.get_move(serial, move_num) move.set_leds(0, 0, 0) move.update_leds() random_color = random.random() while True: time.sleep(0.01) if move.poll(): game_mode = move_opts[Opts.game_mode.value] move_button = move.get_buttons() if move_opts[Opts.alive.value] == Alive.off.value: if move_button == Buttons.sync.value: move_opts[Opts.alive.value] = Alive.on.value dead_count.value = dead_count.value - 1 time.sleep(0.1) else: if move_button == Buttons.all_buttons.value: move_opts[Opts.alive.value] = Alive.off.value dead_count.value = dead_count.value + 1 move.set_leds(0, 0, 0) move.set_rumble(0) move.update_leds() continue #show battery level if battery.value == 1: battery_level = move.get_battery() #granted a charging move should be dead #so it won't light up anyway if battery_level == 238: # charging - dim move.set_leds(10, 10, 10) elif battery_level == 239: # fully charged - white move.set_leds(255, 255, 255) elif battery_level == 5: # full - blue move.set_leds(0, 0, 255) elif battery_level == 4: # 80% - cyan move.set_leds(0, 255, 255) elif battery_level == 5: # 60% - green move.set_leds(0, 255, 0) elif battery_level == 2: # 40% - lime green move.set_leds(191, 255, 0) elif battery_level == 1: # 20% - yellow move.set_leds(255, 255, 0) else: # under 20% - red move.set_leds(255, 0, 0) #custom team mode is the only game mode that #can't be added to con mode elif game_mode == common.Games.JoustTeams.value: if move_opts[Opts.team.value] >= TEAM_NUM: move_opts[Opts.team.value] = 0 move.set_leds(*TEAM_COLORS[move_opts[Opts.team.value]]) if move_button == Buttons.middle.value: #allow players to increase their own team if move_opts[Opts.holding. value] == Holding.not_holding.value: move_opts[Opts.team.value] = ( move_opts[Opts.team.value] + 1) % TEAM_NUM move_opts[ Opts.holding.value] = Holding.holding.value #set leds to forced color elif sum(force_color) != 0: move.set_leds(*force_color) elif game_mode == common.Games.JoustFFA.value: move.set_leds(255, 255, 255) elif game_mode == common.Games.JoustRandomTeams.value: color = time.time() / 10 % 1 color = common.hsv2rgb(color, 1, 1) move.set_leds(*color) elif game_mode == common.Games.Traitor.value: if move_num % 4 == 2 and time.time() / 3 % 1 < .15: move.set_leds(200, 0, 0) else: color = 1 - time.time() / 10 % 1 color = common.hsv2rgb(color, 1, 1) move.set_leds(*color) elif game_mode == common.Games.WereJoust.value: if move_num <= 0: move.set_leds(150, 0, 0) else: move.set_leds(200, 200, 200) elif game_mode == common.Games.Zombies.value: move.set_leds(50, 150, 50) elif game_mode == common.Games.Commander.value: if move_num % 2 == 0: move.set_leds(150, 0, 0) else: move.set_leds(0, 0, 150) elif game_mode == common.Games.Swapper.value: if (time.time() / 5 + random_color) % 1 > 0.5: move.set_leds(150, 0, 0) else: move.set_leds(0, 0, 150) elif game_mode == common.Games.Tournament.value: if move_num <= 0: color = time.time() / 10 % 1 color = common.hsv2rgb(color, 1, 1) move.set_leds(*color) else: move.set_leds(200, 200, 200) elif game_mode == common.Games.Ninja.value: if move_num <= 0: move.set_leds(random.randrange(100, 200), 0, 0) else: move.set_leds(200, 200, 200) elif game_mode == common.Games.Random.value: if move_button == Buttons.middle.value: move_opts[Opts.random_start.value] = Alive.off.value if move_opts[Opts.random_start.value] == Alive.on.value: move.set_leds(0, 0, 255) else: move.set_leds(255, 255, 0) if move_opts[Opts.holding.value] == Holding.not_holding.value: #Change game mode and become admin controller if move_button == Buttons.select.value: move_opts[Opts.selection. value] = Selections.change_mode.value move_opts[Opts.holding.value] = Holding.holding.value #start the game if move_button == Buttons.start.value: move_opts[ Opts.selection.value] = Selections.start_game.value move_opts[Opts.holding.value] = Holding.holding.value #as an admin controller add or remove game from convention mode if move_button == Buttons.cross.value: move_opts[ Opts.selection.value] = Selections.add_game.value move_opts[Opts.holding.value] = Holding.holding.value #as an admin controller change sensitivity of controllers if move_button == Buttons.circle.value: move_opts[Opts.selection. value] = Selections.change_sensitivity.value move_opts[Opts.holding.value] = Holding.holding.value #as an admin controller change if instructions play if move_button == Buttons.square.value: move_opts[Opts.selection. value] = Selections.change_instructions.value move_opts[Opts.holding.value] = Holding.holding.value #as an admin show battery level of controllers if move_button == Buttons.triangle.value: move_opts[Opts.selection. value] = Selections.show_battery.value move_opts[Opts.holding.value] = Holding.holding.value if move_button == Buttons.nothing.value: move_opts[Opts.holding.value] = Holding.not_holding.value move.update_leds()