diff --git a/cooperative_cuisine/environment.py b/cooperative_cuisine/environment.py index 4d562582f3522680bc3e588ffe58d93e174c87c3..4c25ef30f04835a5e7e25cead92d186eb27c2a58 100644 --- a/cooperative_cuisine/environment.py +++ b/cooperative_cuisine/environment.py @@ -93,8 +93,6 @@ class Environment: Handles player movement, collision-detection, counters, cooking processes, recipes, incoming orders, time. """ - PAUSED = None - def __init__( self, env_config: Path | str, @@ -136,9 +134,10 @@ class Environment: ) """The config of the environment. All environment specific attributes is configured here.""" - self.player_view_restricted = self.environment_config["player_config"][ + self.player_view_restricted: bool = self.environment_config["player_config"][ "restricted_view" ] + """If field-of-view of players is restricted in this environment.""" if self.player_view_restricted: self.player_view_angle = self.environment_config["player_config"][ "view_angle" @@ -202,6 +201,7 @@ class Environment: hook=self.hook, random=self.random, ) + """Handles the creation of counters based on their config.""" ( self.counters, @@ -220,6 +220,7 @@ class Environment: dtype=float, ), ) + """Does the movement of players in each step.""" self.progressing_counters = [] """Counters that needs to be called in the step function via the `progress` method.""" @@ -227,6 +228,7 @@ class Environment: self.effect_manager: dict[ str, EffectManager ] = self.counter_factory.setup_effect_manger(self.counters) + """Dict of effect managers. Currently only the fire effect manager.""" self.overwrite_counters(self.counters) @@ -248,6 +250,7 @@ class Environment: order_manager=self.order_manager, do_validation=do_validation, ) + """Validates configs and creates recipe graphs.""" meals_to_be_ordered = self.recipe_validation.validate_environment(self.counters) assert meals_to_be_ordered, "Need possible meals for order generation." @@ -264,6 +267,7 @@ class Environment: log.debug(f"End time: {self.env_time_end}") self.info_msgs_per_player: dict[str, list[InfoMsg]] = defaultdict(list) + """Cache of info messages per player which should be showed in the visualization of each player.""" self.hook( ENV_INITIALIZED, @@ -274,6 +278,24 @@ class Environment: ) def overwrite_counters(self, counters): + """Resets counters. + + Args: + counters: A list of counter objects representing the counters in the system. + + This method takes a list of counter objects representing the counters in the system and updates the counters + attribute of the current object to the provided list. It also updates the counter_positions attribute of the + movement object with the positions of the counters. + + Additionally, it assigns the counter classes with a "progress" attribute to the variable + progress_counter_classes. It does this by filtering the classes in the cooperative_cuisine.counters module + using the inspect module to only keep the classes that have a "progress" attribute. + + Next, it filters the counters based on whether their class is in the progress_counter_classes list and + assigns the filtered counters to the progressing_counters attribute of the current object. + + Finally, it sets the counters for each effect manager in the effect_manager dictionary to the provided counters. + """ self.counters = counters self.movement.counter_positions = np.array([c.pos for c in self.counters]) @@ -496,9 +518,17 @@ class Environment: log.debug(f"Reset env time to {self.env_time}") def register_callback_for_hook(self, hook_ref: str | list[str], callback: Callable): + """Registers a callback function for a given hook reference. + + Args: + hook_ref (str | list[str]): The reference to the hook or hooks for which the callback should be registered. It can be a single string or a list of strings. + callback (Callable): The callback function to be registered for the specified hook(s). The function should accept the necessary parameters and perform the desired actions. + + """ self.hook.register_callback(hook_ref, callback) def extra_setup_functions(self): + """Executes extra setup functions specified in the environment configuration.""" if self.environment_config["extra_setup_functions"]: for function_name, function_def in self.environment_config[ "extra_setup_functions"