From 8ede781a32db15903630a412a2a4a7dec2a115c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20Schr=C3=B6der?= <fschroeder@techfak.uni-bielefeld.de> Date: Fri, 26 Jan 2024 18:19:00 +0100 Subject: [PATCH] Add CookingCounter progress and raise exception for undefined counter types The CookingCounter is now included in the list of counters for which we calculate progress. Additionally, if a counter type is not defined in the configuration, a ValueError will be raised. Unnecessary imports were also removed from 'overcooked_gui.py', and a 'to_dict' method was added in 'counters.py'. Fixing errors from merge. --- overcooked_simulator/counters.py | 5 +++++ overcooked_simulator/gui_2d_vis/drawing.py | 8 +++++++- overcooked_simulator/gui_2d_vis/overcooked_gui.py | 9 +-------- overcooked_simulator/overcooked_environment.py | 4 +++- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/overcooked_simulator/counters.py b/overcooked_simulator/counters.py index 49716e66..f63d77aa 100644 --- a/overcooked_simulator/counters.py +++ b/overcooked_simulator/counters.py @@ -543,6 +543,11 @@ class CookingCounter(Counter): def __repr__(self): return f"{self.name}(pos={self.pos},occupied_by={self.occupied_by})" + def to_dict(self) -> dict: + d = super().to_dict() + d.update((("type", self.name),)) + return d + class Sink(Counter): """The counter in which the dirty plates can be washed to clean plates. diff --git a/overcooked_simulator/gui_2d_vis/drawing.py b/overcooked_simulator/gui_2d_vis/drawing.py index 11ee0c93..415e0ce3 100644 --- a/overcooked_simulator/gui_2d_vis/drawing.py +++ b/overcooked_simulator/gui_2d_vis/drawing.py @@ -373,10 +373,16 @@ class Visualizer: if counter_type in self.config: self.draw_thing(screen, pos, grid_size, self.config[counter_type]["parts"]) else: + if counter_type in self.config: + parts = self.config[counter_type]["parts"] + elif counter_type.endswith("Dispenser"): + parts = self.config["Dispenser"]["parts"] + else: + raise ValueError(f"Can not draw counter type {counter_type}") self.draw_thing( screen=screen, pos=pos, - parts=self.config[counter_type]["parts"], + parts=parts, grid_size=grid_size, ) diff --git a/overcooked_simulator/gui_2d_vis/overcooked_gui.py b/overcooked_simulator/gui_2d_vis/overcooked_gui.py index e1f5a559..1370d847 100644 --- a/overcooked_simulator/gui_2d_vis/overcooked_gui.py +++ b/overcooked_simulator/gui_2d_vis/overcooked_gui.py @@ -15,14 +15,7 @@ from websockets.sync.client import connect from overcooked_simulator import ROOT_DIR from overcooked_simulator.game_server import CreateEnvironmentConfig from overcooked_simulator.gui_2d_vis.drawing import Visualizer -from overcooked_simulator.gui_2d_vis.game_colors import BLUE, colors, Color -from overcooked_simulator.counters import Counter, CookingCounter -from overcooked_simulator.game_items import ( - Item, - CookingEquipment, - Plate, -) -from overcooked_simulator.order import Order +from overcooked_simulator.gui_2d_vis.game_colors import colors from overcooked_simulator.overcooked_environment import ( Action, ActionType, diff --git a/overcooked_simulator/overcooked_environment.py b/overcooked_simulator/overcooked_environment.py index 0f4214af..ce79e280 100644 --- a/overcooked_simulator/overcooked_environment.py +++ b/overcooked_simulator/overcooked_environment.py @@ -714,7 +714,9 @@ class Environment: self.perform_movement(player, passed_time) for counter in self.counters: - if isinstance(counter, (CuttingBoard, Stove, Sink, PlateDispenser)): + if isinstance( + counter, (CuttingBoard, CookingCounter, Sink, PlateDispenser) + ): counter.progress(passed_time=passed_time, now=self.env_time) self.order_and_score.progress(passed_time=passed_time, now=self.env_time) -- GitLab