Example #1
0
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
Example #2
0
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
Example #3
0
  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)
Example #4
0
    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)
Example #5
0
 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)
Example #6
0
 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)
Example #8
0
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()
Example #9
0
 def get_move(self, view):
   self.calls += 1
   return common.get_move(view)
Example #10
0
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
Example #11
0
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
Example #12
0
    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 = []
Example #13
0
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)
Example #14
0
def get_move(view):
  return common.get_move(view)
Example #15
0
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()
Example #16
0
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
Example #17
0
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
Example #18
0
def get_move(view, network):
  global image1
  (move, eat) = common.get_move(view, network)
  # image1 = image
  return (move, eat)
Example #19
0
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
Example #20
0
def get_move(view):
  #return common.get_move(view)
  return common.get_move(view,"images2.txt","value2.txt")
Example #21
0
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()
Example #22
0
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()
Example #23
0
    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()
Example #24
0
def _get_inputs(game_state: GameState) -> ():
    return (common.get_col(game_state), common.get_move(game_state))
Example #25
0
 def get_move(self, view):
     self.calls += 1
     return common.get_move(view)
Example #26
0
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
Example #27
0
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()
Example #28
0
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()
Example #29
0
    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')
Example #30
0
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()
Example #31
0
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
Example #32
0
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()