From 35b352ec97a762c0dac99d1ce0ccf50275b05d62 Mon Sep 17 00:00:00 2001 From: fheinrich <fheinrich@techfak.uni-bielefeld.de> Date: Wed, 7 Feb 2024 11:15:21 +0100 Subject: [PATCH] ViewRestriction in env config . player config, angle given whole in int --- .../game_content/environment_config.yaml | 3 ++- overcooked_simulator/gui_2d_vis/drawing.py | 6 +++--- overcooked_simulator/overcooked_environment.py | 12 ++++++++++-- overcooked_simulator/player.py | 5 ++++- 4 files changed, 19 insertions(+), 7 deletions(-) diff --git a/overcooked_simulator/game_content/environment_config.yaml b/overcooked_simulator/game_content/environment_config.yaml index 6e58cec4..ef7f8290 100644 --- a/overcooked_simulator/game_content/environment_config.yaml +++ b/overcooked_simulator/game_content/environment_config.yaml @@ -87,7 +87,8 @@ player_config: radius: 0.4 player_speed_units_per_seconds: 6 interaction_range: 1.6 - + restricted_view: True + view_angle: 80 effect_manager: FireManager: diff --git a/overcooked_simulator/gui_2d_vis/drawing.py b/overcooked_simulator/gui_2d_vis/drawing.py index 7730b075..d9e5e8e2 100644 --- a/overcooked_simulator/gui_2d_vis/drawing.py +++ b/overcooked_simulator/gui_2d_vis/drawing.py @@ -152,7 +152,7 @@ class Visualizer: direction = pygame.math.Vector2(state["view_restriction"]["direction"]) pos = pygame.math.Vector2(state["view_restriction"]["position"]) - angle = state["view_restriction"]["angle"] + angle = state["view_restriction"]["angle"] / 2 pos = pos * grid_size + pygame.math.Vector2([grid_size / 2, grid_size / 2]) @@ -166,7 +166,7 @@ class Visualizer: colors["black"], ( pos - (direction * grid_size * 0.6), - left_beam, + left_beam - (direction * grid_size * 0.6), left_beam + (direction.rotate(90) * rect_scale), pos - (direction * rect_scale * 2) @@ -175,7 +175,7 @@ class Visualizer: - (direction * rect_scale * 2) + (direction.rotate(-90) * rect_scale), right_beam + (direction.rotate(-90) * rect_scale), - right_beam, + right_beam - (direction * grid_size * 0.6), ), ) diff --git a/overcooked_simulator/overcooked_environment.py b/overcooked_simulator/overcooked_environment.py index 40aae7a9..3db6ca2f 100644 --- a/overcooked_simulator/overcooked_environment.py +++ b/overcooked_simulator/overcooked_environment.py @@ -160,6 +160,14 @@ class Environment: ) """The config of the environment. All environment specific attributes is configured here.""" + self.player_view_restricted = self.environment_config["player_config"][ + "restricted_view" + ] + if self.player_view_restricted: + self.player_view_angle = self.environment_config["player_config"][ + "view_angle" + ] + self.extra_setup_functions() self.layout_config = layout_config @@ -769,10 +777,10 @@ class Environment: "view_restriction": { "direction": self.players[player_id].facing_direction.tolist(), "position": self.players[player_id].pos.tolist(), - "angle": 35.0, + "angle": self.player_view_angle, "counter_mask": None, } - if FOG_OF_WAR + if self.player_view_restricted else None, } self.hook(STATE_DICT, state=state, player_id=player_id) diff --git a/overcooked_simulator/player.py b/overcooked_simulator/player.py index 5633a491..c367561e 100644 --- a/overcooked_simulator/player.py +++ b/overcooked_simulator/player.py @@ -33,7 +33,10 @@ class PlayerConfig: """The move distance/speed of the player per action call.""" interaction_range: float = 1.6 """How far player can interact with counters.""" - + restricted_view: bool = False + """Whether or not the player can see the entire map at once or just a view frustrum.""" + view_angle: int | None = None + """Angle of the players view if restricted.""" class Player: """Class representing a player in the game environment. A player consists of a name, their position and what -- GitLab