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