From 214384349e2c1159aeaa91593a52a45bd23873ad Mon Sep 17 00:00:00 2001
From: fheinrich <fheinrich@techfak.uni-bielefeld.de>
Date: Fri, 15 Dec 2023 15:16:30 +0100
Subject: [PATCH] Fixes in Serving window

---
 overcooked_simulator/counters.py              |  6 +++--
 .../game_content/item_info.yaml               |  2 +-
 .../game_content/layouts/basic.layout         | 22 +++++++++----------
 overcooked_simulator/main.py                  |  2 +-
 overcooked_simulator/pygame_gui/pygame_gui.py | 16 +++++++-------
 5 files changed, 25 insertions(+), 23 deletions(-)

diff --git a/overcooked_simulator/counters.py b/overcooked_simulator/counters.py
index 243f3588..3f2c5382 100644
--- a/overcooked_simulator/counters.py
+++ b/overcooked_simulator/counters.py
@@ -129,9 +129,11 @@ class ServingWindow(Counter):
             and "Plate" in item.name
             and item.content is not None
         ):
-            if isinstance(item.content, Meal):
+            if isinstance(item.content, Meal) and item.content.progressed_steps:
                 return item.content.finished
-            elif item.content.name == "Salad":
+
+            # TODO: Salad can be always be served. Check, if all needed parts are present.
+            if item.content.name in ["Salad"]:
                 return True
         return False
 
diff --git a/overcooked_simulator/game_content/item_info.yaml b/overcooked_simulator/game_content/item_info.yaml
index a2df2608..568929c1 100644
--- a/overcooked_simulator/game_content/item_info.yaml
+++ b/overcooked_simulator/game_content/item_info.yaml
@@ -20,7 +20,7 @@ Burger:
 
 Salad:
   type: Meal
-  needs: [ Lettuce, Tomato ]
+  needs: [ ChoppedLettuce, ChoppedTomato ]
   equipment: Plate
 
 TomatoSoup:
diff --git a/overcooked_simulator/game_content/layouts/basic.layout b/overcooked_simulator/game_content/layouts/basic.layout
index da7352dd..285f5a54 100644
--- a/overcooked_simulator/game_content/layouts/basic.layout
+++ b/overcooked_simulator/game_content/layouts/basic.layout
@@ -1,11 +1,11 @@
-__________________
-_CCUCTCLCC________
-_C_______C________
-_C_______C________
-_W________________
-_C________________
-_P________________
-_C_______C________
-_C_______X________
-_CCBBCCCCC________
-__________________
+_________________
+_CCUCTCLCC_______
+_C_______C_______
+_C_______C_______
+_W_______________
+_C___A___________
+_P_______________
+_C_______C_______
+_C_______X_______
+_CCBBCCCCC_______
+_________________
diff --git a/overcooked_simulator/main.py b/overcooked_simulator/main.py
index 6b1de7e3..d3cca5d8 100644
--- a/overcooked_simulator/main.py
+++ b/overcooked_simulator/main.py
@@ -12,7 +12,7 @@ def main():
     simulator = Simulator(ROOT_DIR / "game_content" / "layouts" / "basic.layout", 600)
     # simulator.register_player(Player(player_one_name, np.array([350.0, 200.0])))
     # simulator.register_player(Player(player_two_name, np.array([100.0, 200.0])))
-    number_player = 2
+    number_player = 90
     for i in range(number_player):
         simulator.register_player(Player(f"p{i}"))
 
diff --git a/overcooked_simulator/pygame_gui/pygame_gui.py b/overcooked_simulator/pygame_gui/pygame_gui.py
index e76c5b72..e72c4b40 100644
--- a/overcooked_simulator/pygame_gui/pygame_gui.py
+++ b/overcooked_simulator/pygame_gui/pygame_gui.py
@@ -69,13 +69,12 @@ class PyGameGUI:
 
         self.player_names = player_names
         self.player_keys = player_keys
-        assert len(self.player_names) == len(
-            self.player_keys
-        ), "Number of players and key sets should match."
 
         self.player_key_sets: list[PlayerKeySet] = [
             PlayerKeySet(player_name, keys)
-            for player_name, keys in zip(self.player_names, self.player_keys)
+            for player_name, keys in zip(
+                self.player_names, self.player_keys[: len(self.player_names)]
+            )
         ]
 
         # TODO cache loaded images?
@@ -181,10 +180,6 @@ class PyGameGUI:
 
                 pygame.draw.circle(self.screen, color2, pos, size)
                 pygame.draw.circle(self.screen, BLUE, pos, size, width=1)
-                if SHOW_INTERACTION_RANGE:
-                    pygame.draw.circle(
-                        self.screen, BLUE, pos, player.interaction_range, width=1
-                    )
                 pygame.draw.circle(self.screen, colors[color1], pos, size // 2)
 
                 pos = player.pos
@@ -213,6 +208,11 @@ class PyGameGUI:
                 rect.center = player.pos
                 self.screen.blit(image, rect)
 
+            if SHOW_INTERACTION_RANGE:
+                pygame.draw.circle(
+                    self.screen, BLUE, player.pos, player.interaction_range, width=1
+                )
+
             if player.holding is not None:
                 holding_item_pos = player.pos + (20 * player.facing_direction)
                 self.draw_item(holding_item_pos, player.holding)
-- 
GitLab