def goal_rewards()

in gym-compete/gym_compete/new_envs/you_shall_not_pass.py [0:0]


    def goal_rewards(self, infos=None, agent_dones=None):
        self._elapsed_steps += 1
        goal_rews = [0. for _ in range(self.n_agents)]
        touchdowns = [self.agents[i].reached_goal()
                      for i in range(self.n_agents)]

        walkers_fallen = [not self._is_standing(i)
                          for i in range(self.n_agents)
                          if self.agents[i].team == 'walker']

        # print(self._elapsed_steps, touchdowns, walkers_fallen)

        done = self._past_limit() or all(walkers_fallen)
        # print(self._elapsed_steps,touchdowns, walkers_fallen)
        if not any(touchdowns):
            all_walkers_fallen = all(walkers_fallen)
            # game_over = all_walkers_fallen
            for j in range(self.n_agents):
                if self.agents[j].team == 'blocker':
                    # goal_rews[j] += -infos[1-j]['reward_goal_dist']
                    infos[j]['reward_move'] += -infos[1-j]['reward_goal_dist']
                if all_walkers_fallen and self.agents[j].team == 'blocker':
                    if self._is_standing(j):
                        goal_rews[j] += self.GOAL_REWARD
                    infos[j]['winner'] = True
                elif done:
                    if self.agents[j].team == 'walker':
                        goal_rews[j] -= self.GOAL_REWARD
                    else:
                        infos[j]['winner'] = True
        else:
            # some walker touched-down
            done = True
            for i in range(self.n_agents):
                if self.agents[i].team == 'walker':
                    if touchdowns[i]:
                        goal_rews[i] += self.GOAL_REWARD
                        infos[i]['winner'] = True
                else:
                    goal_rews[i] -= self.GOAL_REWARD

        # print(done, self._elapsed_steps, self._past_limit())
        return goal_rews, done