diff --git a/overcooked_simulator/game_content/environment_config.yaml b/overcooked_simulator/game_content/environment_config.yaml index 6e58cec45fa0d7c81701afe42a427e8475102447..ef7f829090c2da2f95d5fe978dd717b8af41e6e6 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 7730b07594d87f9af2c2deb2a8d0c7065a1642c1..d9e5e8e22b0c3ad16df665e496c759178cd26262 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 40aae7a9c5dc77d50996c7176b24ebd5de87aeb3..3db6ca2f6a610f1c30cb7415bf3f5a83b094abf0 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 5633a491248ae8b9448d457607b86b8e74121c08..c367561e98862425ecc1590087ef7deb982e608e 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