diff --git a/overcooked_simulator/layouts/empty.layout b/overcooked_simulator/layouts/empty.layout new file mode 100644 index 0000000000000000000000000000000000000000..9fb75b8d4f4c7faa7ba59d138746231ada07c7b0 --- /dev/null +++ b/overcooked_simulator/layouts/empty.layout @@ -0,0 +1 @@ +E \ No newline at end of file diff --git a/overcooked_simulator/main.py b/overcooked_simulator/main.py index 975657704561d7ca1b5c2fd215f816571afd2b74..e7765a91eb06c3568131d6d6ceeee8d2699ce634 100644 --- a/overcooked_simulator/main.py +++ b/overcooked_simulator/main.py @@ -1,12 +1,13 @@ from overcooked_simulator.player import Player import sys -from overcooked_simulator.simulation_runner import Simulator -from overcooked_simulator.overcooked_environment import Environment +from pathlib import Path + +from overcooked_simulator.player import Player from overcooked_simulator.pygame_gui import PyGameGUI def main(): - simulator = Simulator(Environment, 300) + simulator = Simulator(Path("overcooked_simulator/layouts/basic.layout"), 300) simulator.register_player(Player("p1", [100, 200])) simulator.register_player(Player("p2", [200, 100])) diff --git a/overcooked_simulator/overcooked_environment.py b/overcooked_simulator/overcooked_environment.py index 4545c4f3c3157d71a2550445f9687439e70d23fe..8d64bbf76a128a8dfccd026d05cb3462d3110dfb 100644 --- a/overcooked_simulator/overcooked_environment.py +++ b/overcooked_simulator/overcooked_environment.py @@ -22,17 +22,18 @@ class Action: class Environment: """Environment class which handles the game logic for the overcooked-inspired environment. - Handles player movement, collision-detection, counters, cooking processes, recipes, incoming orders, time. - # TODO Abstract base class for different environments - """ - def __init__(self): - self.players = {} - self.counter_side_length = 40 - self.layout_path = Path("overcooked_simulator/layouts/basic.layout") - self.counters = self.create_counters(self.layout_path) - self.score = 0 - self.world_width = 800 - self.world_height = 600 + Handles player movement, collision-detection, counters, cooking processes, recipes, incoming orders, time. + # TODO Abstract base class for different environments + """ + + def __init__(self, layout_path): + self.players: dict[str, Player] = {} + self.counter_side_length: float = 40 + self.layout_path: Path = layout_path + self.counters: list[Counter] = self.create_counters(self.layout_path) + self.score: int = 0 + self.world_width: int = 800 + self.world_height: int = 600 def create_counters(self, layout_file: Path): """Creates layout of kitchen counters in the environment based on layout file. diff --git a/overcooked_simulator/simulation_runner.py b/overcooked_simulator/simulation_runner.py index 461724c1ece3c45bb3c0bcb4fed163a94030507f..df168a27fa700896401c90596d3e9475b8ea96a4 100644 --- a/overcooked_simulator/simulation_runner.py +++ b/overcooked_simulator/simulation_runner.py @@ -17,13 +17,12 @@ class Simulator(Thread): sim.start() """ - def __init__(self, env_class: type, frequency: int): + def __init__(self, env_layout_path, frequency: int): self.finished: bool = False self.step_frequency: int = frequency self.prefered_sleeptime_ns: float = 1e9 / self.step_frequency - - self.env: Environment = env_class() + self.env: Environment = Environment(env_layout_path) super().__init__() diff --git a/tests/test_start.py b/tests/test_start.py index d37a7e87b9945ee6316df5399b8013fd93581454..5c465bd5588ac5349b082a42eec99baa9bf345d0 100644 --- a/tests/test_start.py +++ b/tests/test_start.py @@ -3,11 +3,15 @@ from overcooked_simulator.player import Player from overcooked_simulator.overcooked_environment import Environment, Action import numpy as np import time +from pathlib import Path + +import numpy as np + from overcooked_simulator.counters import Counter def test_player_registration(): - sim = Simulator(Environment, 200) + sim = Simulator(Path("../overcooked_simulator/layouts/basic.layout"), 200) p1 = Player("player1", np.array([0, 0])) sim.register_player(p1) @@ -38,7 +42,8 @@ def test_simulator_frequency(): frequency = 2000 running_time_seconds = 4 - sim = Simulator(TestEnv, frequency) + sim = Simulator(Path("../overcooked_simulator/layouts/basic.layout"), frequency) + sim.env = TestEnv() # Overwrite environment with a simple counting env sim.start() time.sleep(running_time_seconds) @@ -52,7 +57,7 @@ def test_simulator_frequency(): def test_collision_detection(): - sim = Simulator(Environment, 200) + sim = Simulator(Path("../overcooked_simulator/layouts/empty.layout.layout"), 200) counter_pos = np.array([50, 100]) counter = Counter(counter_pos) sim.env.counters = [counter]