From fb060696e8d81d5f12696b542c0fe4215ffc0efa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20Schr=C3=B6der?= <fschroeder@techfak.uni-bielefeld.de> Date: Sat, 10 Feb 2024 13:19:08 +0100 Subject: [PATCH] Add Overcooked 1 layout files and minor code adjustments Several Overcooked 1 layout files have been added along with changes in the counter mappings for the game simulator. This includes serving window character changes and addition of clean plate character mappings. Additionally, `overcooked_simulator/utils.py` has been modified to include a method that creates a basic layout grid. These changes help in enhancing and expanding the game simulator. --- overcooked_simulator/counter_factory.py | 29 +++++++++++++++---- .../game_content/environment_config.yaml | 14 +++++++-- .../game_content/layouts/basic.layout | 2 +- .../game_content/layouts/large.layout | 2 +- .../layouts/overcooked-1/1-1-far-apart.layout | 14 +++++++++ .../overcooked-1/1-2-pedestrians.layout | 12 ++++++++ .../overcooked-1/1-3-moving-counters.layout | 15 ++++++++++ .../overcooked-1/1-4-bottleneck.layout | 14 +++++++++ .../layouts/overcooked-1/1-5-circle.layout | 14 +++++++++ .../overcooked-1/1-6-raising-platforms.layout | 14 +++++++++ .../overcooked-1/2-1-moving-trucks.layout | 17 +++++++++++ .../layouts/overcooked-1/2-2-rats.layout | 17 +++++++++++ .../2-3-separated-conveyors.layout | 15 ++++++++++ .../overcooked-1/2-4-separated-2.layout | 16 ++++++++++ .../layouts/overcooked-1/3-1-ice.layout | 19 ++++++++++++ .../3-2-separated-moving-counters.layout | 16 ++++++++++ .../overcooked-1/3-3-moving-trucks-2.layout | 15 ++++++++++ .../3-4-ice-moving-platforms.layout | 14 +++++++++ .../overcooked-1/4-1-moving-counters.layout | 17 +++++++++++ .../layouts/overcooked-1/4-2-dark.layout | 19 ++++++++++++ .../overcooked-1/4-3-moving-counters.layout | 18 ++++++++++++ .../4-4-moving-counters-separated.layout | 16 ++++++++++ .../game_content/layouts/split.layout | 2 +- .../gui_2d_vis/overcooked_gui.py | 8 +++++ .../overcooked_environment.py | 12 ++++---- overcooked_simulator/utils.py | 10 +++++++ 26 files changed, 346 insertions(+), 15 deletions(-) create mode 100644 overcooked_simulator/game_content/layouts/overcooked-1/1-1-far-apart.layout create mode 100644 overcooked_simulator/game_content/layouts/overcooked-1/1-2-pedestrians.layout create mode 100644 overcooked_simulator/game_content/layouts/overcooked-1/1-3-moving-counters.layout create mode 100644 overcooked_simulator/game_content/layouts/overcooked-1/1-4-bottleneck.layout create mode 100644 overcooked_simulator/game_content/layouts/overcooked-1/1-5-circle.layout create mode 100644 overcooked_simulator/game_content/layouts/overcooked-1/1-6-raising-platforms.layout create mode 100644 overcooked_simulator/game_content/layouts/overcooked-1/2-1-moving-trucks.layout create mode 100644 overcooked_simulator/game_content/layouts/overcooked-1/2-2-rats.layout create mode 100644 overcooked_simulator/game_content/layouts/overcooked-1/2-3-separated-conveyors.layout create mode 100644 overcooked_simulator/game_content/layouts/overcooked-1/2-4-separated-2.layout create mode 100644 overcooked_simulator/game_content/layouts/overcooked-1/3-1-ice.layout create mode 100644 overcooked_simulator/game_content/layouts/overcooked-1/3-2-separated-moving-counters.layout create mode 100644 overcooked_simulator/game_content/layouts/overcooked-1/3-3-moving-trucks-2.layout create mode 100644 overcooked_simulator/game_content/layouts/overcooked-1/3-4-ice-moving-platforms.layout create mode 100644 overcooked_simulator/game_content/layouts/overcooked-1/4-1-moving-counters.layout create mode 100644 overcooked_simulator/game_content/layouts/overcooked-1/4-2-dark.layout create mode 100644 overcooked_simulator/game_content/layouts/overcooked-1/4-3-moving-counters.layout create mode 100644 overcooked_simulator/game_content/layouts/overcooked-1/4-4-moving-counters-separated.layout diff --git a/overcooked_simulator/counter_factory.py b/overcooked_simulator/counter_factory.py index 9b1487c3..639459a5 100644 --- a/overcooked_simulator/counter_factory.py +++ b/overcooked_simulator/counter_factory.py @@ -81,10 +81,10 @@ def convert_words_to_chars(layout_chars_config: dict[str, str]) -> dict[str, str """ word_refs = { "hash": "#", - "space": " ", + # "space": " ", "dot": ".", "comma": ",", - "semicolon": ";", + # "semicolon": ";", "colon": ":", "minus": "-", "exclamation": "!", @@ -98,6 +98,7 @@ def convert_words_to_chars(layout_chars_config: dict[str, str]) -> dict[str, str "left": "<", "pipe": "|", "at": "@", + "wave": "~", # ~ is None / null in yaml "ocurlybracket": "{", "ccurlybracket": "}", "osquarebracket": "[", @@ -163,8 +164,11 @@ class CounterFactory: """A set of characters that represent counters for agents or free spaces.""" self.counter_classes: dict[str, Type] = dict( - inspect.getmembers( - sys.modules["overcooked_simulator.counters"], inspect.isclass + filter( + lambda k: issubclass(k[1], Counter), + inspect.getmembers( + sys.modules["overcooked_simulator.counters"], inspect.isclass + ), ) ) """A dictionary of counter classes imported from the 'overcooked_simulator.counters' module.""" @@ -191,6 +195,8 @@ class CounterFactory: assert self.can_map(c), f"Can't map counter char {c}" counter_class = None + if c == "@": + print("-") if self.layout_chars_config[c] in self.item_info: item_info = self.item_info[self.layout_chars_config[c]] if item_info.type == ItemType.Equipment and item_info.equipment: @@ -221,7 +227,20 @@ class CounterFactory: ) if counter_class is None: - counter_class = self.counter_classes[self.layout_chars_config[c]] + if self.layout_chars_config[c] in self.counter_classes: + counter_class = self.counter_classes[self.layout_chars_config[c]] + elif self.layout_chars_config[c] == "Plate": + return Counter( + pos=pos, + hook=self.hook, + occupied_by=Plate( + transitions=self.filter_item_info( + by_item_type=ItemType.Meal, add_effects=True + ), + clean=True, + item_info=self.item_info[Plate.__name__], + ), + ) kwargs = { "pos": pos, "hook": self.hook, diff --git a/overcooked_simulator/game_content/environment_config.yaml b/overcooked_simulator/game_content/environment_config.yaml index fdbe1db2..a81f9f98 100644 --- a/overcooked_simulator/game_content/environment_config.yaml +++ b/overcooked_simulator/game_content/environment_config.yaml @@ -18,15 +18,16 @@ meals: layout_chars: _: Free - hash: Counter + hash: Counter # # A: Agent pipe: Extinguisher P: PlateDispenser C: CuttingBoard X: Trashcan - W: ServingWindow + $: ServingWindow S: Sink +: SinkAddon + at: Plate # @ just a clean plate on a counter U: Pot # with Stove Q: Pan # with Stove O: Peel # with Oven @@ -41,6 +42,15 @@ layout_chars: G: Sausage # sausaGe B: Bun M: Meat + question: Counter # ? mushroom + ↓: Counter + ^: Counter + right: Counter + left: Counter + wave: Free # ~ Water + minus: Free # - Ice + dquote: Counter # " wall/truck + p: Counter # second plate return ?? orders: diff --git a/overcooked_simulator/game_content/layouts/basic.layout b/overcooked_simulator/game_content/layouts/basic.layout index 94e5fb1d..5238c21f 100644 --- a/overcooked_simulator/game_content/layouts/basic.layout +++ b/overcooked_simulator/game_content/layouts/basic.layout @@ -1,7 +1,7 @@ #QU#FO#TNLB# #__________M |__________K -W__________I +$__________I #__A_____A_D C__________E C__________G diff --git a/overcooked_simulator/game_content/layouts/large.layout b/overcooked_simulator/game_content/layouts/large.layout index 69335678..460244ca 100644 --- a/overcooked_simulator/game_content/layouts/large.layout +++ b/overcooked_simulator/game_content/layouts/large.layout @@ -4,7 +4,7 @@ #____________________________________# #____________________________________# #____________________________________K -W____________________________________I +$____________________________________I #____________________________________# #____________________________________# #__A_____A___________________________D diff --git a/overcooked_simulator/game_content/layouts/overcooked-1/1-1-far-apart.layout b/overcooked_simulator/game_content/layouts/overcooked-1/1-1-far-apart.layout new file mode 100644 index 00000000..0fa1d52d --- /dev/null +++ b/overcooked_simulator/game_content/layouts/overcooked-1/1-1-far-apart.layout @@ -0,0 +1,14 @@ +###N####U#### +#___________| +#___A___A___# +#___________S +##########__+ +P___________# +$___________# +$___________X +###C#C###@@## + +; seconds=150 +; plates={c:0, d:0} +; dirty_plates=true +; link: https://overcooked.fandom.com/wiki/1-1_(Overcooked!) \ No newline at end of file diff --git a/overcooked_simulator/game_content/layouts/overcooked-1/1-2-pedestrians.layout b/overcooked_simulator/game_content/layouts/overcooked-1/1-2-pedestrians.layout new file mode 100644 index 00000000..e9ac2fb0 --- /dev/null +++ b/overcooked_simulator/game_content/layouts/overcooked-1/1-2-pedestrians.layout @@ -0,0 +1,12 @@ +_##U#U#__###|X_# +______#____A___$ ++_____@__@_____$ +S________#_____P +____A____#______ +_##C#C#__#T#N##_ + +; seconds=240 +; plates={c:0, d:0} +; dirty_plates=true +; link: https://overcooked.fandom.com/wiki/1-2_(Overcooked!) +; pedestrians: down the middle road diff --git a/overcooked_simulator/game_content/layouts/overcooked-1/1-3-moving-counters.layout b/overcooked_simulator/game_content/layouts/overcooked-1/1-3-moving-counters.layout new file mode 100644 index 00000000..3dfb4177 --- /dev/null +++ b/overcooked_simulator/game_content/layouts/overcooked-1/1-3-moving-counters.layout @@ -0,0 +1,15 @@ +_____________ +___U#U##$$P|_ +_#____#______ +_@__A_#___A__ +_@____#______ +_@____#______ +_X____#______ +_#C#C##NT?___ +_____________ + +; seconds=240 +; plates={c:0, d:0} +; dirty_plates=false +; link: https://overcooked.fandom.com/wiki/1-3_(Overcooked!) +; moving counters \ No newline at end of file diff --git a/overcooked_simulator/game_content/layouts/overcooked-1/1-4-bottleneck.layout b/overcooked_simulator/game_content/layouts/overcooked-1/1-4-bottleneck.layout new file mode 100644 index 00000000..1eac27c1 --- /dev/null +++ b/overcooked_simulator/game_content/layouts/overcooked-1/1-4-bottleneck.layout @@ -0,0 +1,14 @@ +##S+####QQQQ# +T____###____| +M_A__###__A_# +B___________# +L____###____$ +#____###____$ +#____###____P +X____###____@ +##C#C###@@@@# + +; seconds=240 +; plates={c:0, d:0} +; dirty_plates=true +; link: https://overcooked.fandom.com/wiki/1-4_(Overcooked!) \ No newline at end of file diff --git a/overcooked_simulator/game_content/layouts/overcooked-1/1-5-circle.layout b/overcooked_simulator/game_content/layouts/overcooked-1/1-5-circle.layout new file mode 100644 index 00000000..a278d9ab --- /dev/null +++ b/overcooked_simulator/game_content/layouts/overcooked-1/1-5-circle.layout @@ -0,0 +1,14 @@ +#####P$$|##### +#?NT#A_A_#S+## +#____________X +#_##########_# +#_##########_# +#_##########_# +#_#######@@@_# +#____________# +#C#C####U#U#U# + +; seconds=240 +; plates={c:0, d:0} +; dirty_plates=true +; link: https://overcooked.fandom.com/wiki/1-5_(Overcooked!) \ No newline at end of file diff --git a/overcooked_simulator/game_content/layouts/overcooked-1/1-6-raising-platforms.layout b/overcooked_simulator/game_content/layouts/overcooked-1/1-6-raising-platforms.layout new file mode 100644 index 00000000..5af323f1 --- /dev/null +++ b/overcooked_simulator/game_content/layouts/overcooked-1/1-6-raising-platforms.layout @@ -0,0 +1,14 @@ +##S+###@Q@Q@# +M___________# +T___________| +L___________$ +#___________$ +#___________P +X___________# +##C#C##Q#Q#B# + +; seconds=240 +; plates={c:0, d:0} +; dirty_plates=true +; link: https://overcooked.fandom.com/wiki/1-6_(Overcooked!) +; raising platforms based on earthquakes \ No newline at end of file diff --git a/overcooked_simulator/game_content/layouts/overcooked-1/2-1-moving-trucks.layout b/overcooked_simulator/game_content/layouts/overcooked-1/2-1-moving-trucks.layout new file mode 100644 index 00000000..b7a4745a --- /dev/null +++ b/overcooked_simulator/game_content/layouts/overcooked-1/2-1-moving-trucks.layout @@ -0,0 +1,17 @@ +_______________ +__#QQQ#@@@#____ +__#_______$____ +__B_______$____ +__#_______P____ +_______________ +__M__A____X____ +__L_______#____ +__T__A____C____ +__#|###C###____ +_______________ + +; seconds=240 +; plates={c:0, d:0} +; dirty_plates=false +; link: https://overcooked.fandom.com/wiki/2-1_(Overcooked!) +; moving trucks: counters and ground are moving \ No newline at end of file diff --git a/overcooked_simulator/game_content/layouts/overcooked-1/2-2-rats.layout b/overcooked_simulator/game_content/layouts/overcooked-1/2-2-rats.layout new file mode 100644 index 00000000..4543c03b --- /dev/null +++ b/overcooked_simulator/game_content/layouts/overcooked-1/2-2-rats.layout @@ -0,0 +1,17 @@ +#####P$$|##### +#####____##### +##S+#____#S+## +X____________X +#____________# +U___@__A_@___# +#___@____@___# +#___#_A__#___# +U___#____#___# +#___#____#___# +#?N##C##C##NT# + +; seconds=240 +; plates={c:0, d:0} +; dirty_plates=true +; link: https://overcooked.fandom.com/wiki/2-2_(Overcooked!) +; rats: steal ingredients + meals \ No newline at end of file diff --git a/overcooked_simulator/game_content/layouts/overcooked-1/2-3-separated-conveyors.layout b/overcooked_simulator/game_content/layouts/overcooked-1/2-3-separated-conveyors.layout new file mode 100644 index 00000000..6980844c --- /dev/null +++ b/overcooked_simulator/game_content/layouts/overcooked-1/2-3-separated-conveyors.layout @@ -0,0 +1,15 @@ +>>>>>>>>>>>>>>>↓ +^#_____##@____#↓ +^+A____|#@_A__#↓ +^S_____Q#C____$↓ +^M_____###____$↓ +^L_____Q#C____P↓ +^B_____###____#↓ +^T_____X#@____X↓ +^<<<<<<<<<<<<<<< + +; seconds=240 +; plates={c:0, d:0} +; dirty_plates=true +; link: https://overcooked.fandom.com/wiki/2-3_(Overcooked!) +; conveyors \ No newline at end of file diff --git a/overcooked_simulator/game_content/layouts/overcooked-1/2-4-separated-2.layout b/overcooked_simulator/game_content/layouts/overcooked-1/2-4-separated-2.layout new file mode 100644 index 00000000..d0416de5 --- /dev/null +++ b/overcooked_simulator/game_content/layouts/overcooked-1/2-4-separated-2.layout @@ -0,0 +1,16 @@ +#@@@##C#C###### +#_____________$ +#___A_________$ +#_____________P +####____###___# +X<<<<<<X>>>>>>X +#___###____#### +Q_____________# +#________A____# +Q_____________# +##Q#+S#|##BTLM# + +; seconds=240 +; plates={c:0, d:0} +; dirty_plates=true +; link: https://overcooked.fandom.com/wiki/2-4_(Overcooked!) \ No newline at end of file diff --git a/overcooked_simulator/game_content/layouts/overcooked-1/3-1-ice.layout b/overcooked_simulator/game_content/layouts/overcooked-1/3-1-ice.layout new file mode 100644 index 00000000..4d47b65b --- /dev/null +++ b/overcooked_simulator/game_content/layouts/overcooked-1/3-1-ice.layout @@ -0,0 +1,19 @@ +~~~~~~~~~~~~~~~~ +~~~~~~P$$~~~~~~~ +~~~---------~~~~ +~~~-----------~~ +~~--#C#C|##----~ +~---S#####IA---~ +~---+#####K---~~ +~---#FFF##F---~~ +~~-A----@@@--~~~ +~~-----------~~~ +~~~~--------~~~~ +~~~~~~~----~~~~~ +~~~~~~~~~~~~~~~~ + +; seconds=240 +; plates={c:0, d:0} +; dirty_plates=true +; link: https://overcooked.fandom.com/wiki/3-1_(Overcooked!) +; ice: accelerating \ No newline at end of file diff --git a/overcooked_simulator/game_content/layouts/overcooked-1/3-2-separated-moving-counters.layout b/overcooked_simulator/game_content/layouts/overcooked-1/3-2-separated-moving-counters.layout new file mode 100644 index 00000000..dc8aefbc --- /dev/null +++ b/overcooked_simulator/game_content/layouts/overcooked-1/3-2-separated-moving-counters.layout @@ -0,0 +1,16 @@ +##$$####$$### +####P##______ +______?______ +______N______ +U_____T_____U +X#####X______ +U_____#_____U +______#______ +__A___#__A___ +@@@C#C#______ + +; seconds=240 +; plates={c:0, d:0} +; dirty_plates=false +; link: https://overcooked.fandom.com/wiki/3-2_(Overcooked!) +; moving counters \ No newline at end of file diff --git a/overcooked_simulator/game_content/layouts/overcooked-1/3-3-moving-trucks-2.layout b/overcooked_simulator/game_content/layouts/overcooked-1/3-3-moving-trucks-2.layout new file mode 100644 index 00000000..f5385f60 --- /dev/null +++ b/overcooked_simulator/game_content/layouts/overcooked-1/3-3-moving-trucks-2.layout @@ -0,0 +1,15 @@ +__________""#NIK?TX## +__________""#__A____$ +__________""#_______$ +__________""#__A____P +__________""_________ +C_________""________C +#_________""________# +C_________""________C +#|U#U#U@@####F@F@F|## + +; seconds=240 +; plates={c:0, d:0} +; dirty_plates=false +; link: https://overcooked.fandom.com/wiki/3-3_(Overcooked!) +; moving trucks: counters and ground are moving \ No newline at end of file diff --git a/overcooked_simulator/game_content/layouts/overcooked-1/3-4-ice-moving-platforms.layout b/overcooked_simulator/game_content/layouts/overcooked-1/3-4-ice-moving-platforms.layout new file mode 100644 index 00000000..389caab9 --- /dev/null +++ b/overcooked_simulator/game_content/layouts/overcooked-1/3-4-ice-moving-platforms.layout @@ -0,0 +1,14 @@ +##F#F#~~~~@@F## +X-----~~~-----# +#-A---~~~-----# +I-----~~~-----$ +#-----~~~-----$ +K-----~~~-----P +|--A----------- +#+S##~---#C#C## + +; seconds=240 +; plates={c:0, d:0} +; dirty_plates=true +; link: https://overcooked.fandom.com/wiki/3-4_(Overcooked!) +; ice, moving platforms, water \ No newline at end of file diff --git a/overcooked_simulator/game_content/layouts/overcooked-1/4-1-moving-counters.layout b/overcooked_simulator/game_content/layouts/overcooked-1/4-1-moving-counters.layout new file mode 100644 index 00000000..4b6fcaec --- /dev/null +++ b/overcooked_simulator/game_content/layouts/overcooked-1/4-1-moving-counters.layout @@ -0,0 +1,17 @@ +"""""#|#O#O#O#X#""" +_____#_________#""" +__#____________#""" +__####____##@@@#### +__+_______#_______$ +__S___A___#___A___$ +__#_______#_______P +__#####C#C#____#### +__#____________#""" +____"#_________#""" +"""""###DTE?G###""" + +; seconds=240 +; plates={c:0, d:0} +; dirty_plates=true +; link: https://overcooked.fandom.com/wiki/4-1_(Overcooked!) +; moving counters \ No newline at end of file diff --git a/overcooked_simulator/game_content/layouts/overcooked-1/4-2-dark.layout b/overcooked_simulator/game_content/layouts/overcooked-1/4-2-dark.layout new file mode 100644 index 00000000..a591aa97 --- /dev/null +++ b/overcooked_simulator/game_content/layouts/overcooked-1/4-2-dark.layout @@ -0,0 +1,19 @@ +#########|U#@@@# +##S+##C##______$ +#______________$ +C______________P +#______________# +#______###X##### +U______#######T# +#__A___________# +#___________A__# +N______________# +#########______? +################ + +; seconds=240 +; plates={c:0, d:0} +; dirty_plates=true +; link: https://overcooked.fandom.com/wiki/4-2_(Overcooked!) +; link: https://www.trueachievements.com/game/Overcooked/walkthrough/6 +; dark: only flashlight fov \ No newline at end of file diff --git a/overcooked_simulator/game_content/layouts/overcooked-1/4-3-moving-counters.layout b/overcooked_simulator/game_content/layouts/overcooked-1/4-3-moving-counters.layout new file mode 100644 index 00000000..eb704056 --- /dev/null +++ b/overcooked_simulator/game_content/layouts/overcooked-1/4-3-moving-counters.layout @@ -0,0 +1,18 @@ +###S+#####P$$##X# +#_______|_______# +C_______________Q +#_______#_______# +#_______#_______# +###_######@@@_### +B_______#_______# +T__A____#___A___# +M_______________Q +L_______#_______# +#_______#_______# +################# + +; seconds=240 +; plates={c:0, d:0} +; dirty_plates=true +; link: https://overcooked.fandom.com/wiki/4-3_(Overcooked!) +; moving counters \ No newline at end of file diff --git a/overcooked_simulator/game_content/layouts/overcooked-1/4-4-moving-counters-separated.layout b/overcooked_simulator/game_content/layouts/overcooked-1/4-4-moving-counters-separated.layout new file mode 100644 index 00000000..88bc660a --- /dev/null +++ b/overcooked_simulator/game_content/layouts/overcooked-1/4-4-moving-counters-separated.layout @@ -0,0 +1,16 @@ +#________↓C#O##O### ++________↓________S +S________↓________+ +#________↓________# +#________↓#MBLT#@@# +#|#Q##Q#C↓________p +P________↓________$ +$_____A__↓________$ +$________↓________# +#@@#G?DE#X_________ + +; seconds=240 +; plates={c:0, d:0} +; dirty_plates=true +; link: https://overcooked.fandom.com/wiki/4-4_(Overcooked!) +; moving counters \ No newline at end of file diff --git a/overcooked_simulator/game_content/layouts/split.layout b/overcooked_simulator/game_content/layouts/split.layout index 39bace3e..3f29e313 100644 --- a/overcooked_simulator/game_content/layouts/split.layout +++ b/overcooked_simulator/game_content/layouts/split.layout @@ -1,7 +1,7 @@ #QU#T###NLB# #__________M #____A_____# -W__________# +$__________# ############ C__________# C_____A____# diff --git a/overcooked_simulator/gui_2d_vis/overcooked_gui.py b/overcooked_simulator/gui_2d_vis/overcooked_gui.py index 8808d1db..2ab2e900 100644 --- a/overcooked_simulator/gui_2d_vis/overcooked_gui.py +++ b/overcooked_simulator/gui_2d_vis/overcooked_gui.py @@ -359,6 +359,14 @@ class PyGameGUI: str(p.name): p for p in (ROOT_DIR / "game_content" / "layouts").glob("*.layout") } + self.layout_file_paths.update( + { + str(p.name): p + for p in (ROOT_DIR / "game_content" / "layouts" / "overcooked-1").glob( + "*.layout" + ) + } + ) assert len(self.layout_file_paths) != 0, "No layout files." dropdown_width, dropdown_height = 200, 40 self.layout_selection = pygame_gui.elements.UIDropDownMenu( diff --git a/overcooked_simulator/overcooked_environment.py b/overcooked_simulator/overcooked_environment.py index 5302f55a..1ea734db 100644 --- a/overcooked_simulator/overcooked_environment.py +++ b/overcooked_simulator/overcooked_environment.py @@ -403,11 +403,13 @@ class Environment: lines = list(filter(lambda l: l != "", lines)) for line in lines: - line = line.replace("\n", "").replace(" ", "") # remove newline char + line = line.replace(" ", "") + if not line or line.startswith(";"): + break current_x: float = starting_at grid_line = [] for character in line: - character = character.capitalize() + # character = character.capitalize() pos = np.array([current_x, current_y]) assert self.counter_factory.can_map( @@ -432,7 +434,7 @@ class Environment: current_y += 1 self.kitchen_width: float = len(lines[0]) + starting_at - self.kitchen_height = len(lines) + starting_at + self.kitchen_height = current_y self.determine_counter_orientations( counters, grid, np.array([self.kitchen_width / 2, self.kitchen_height / 2]) @@ -478,7 +480,7 @@ class Environment: c.set_orientation(nearest_vec) elif grid_idx[0] == 0: - if grid_idx[1] == 0: + if grid_idx[1] == 0 or fst_counter_in_row is None: # counter top left c.set_orientation(np.array([1, 0])) else: @@ -663,8 +665,8 @@ class Environment: for idx, p in enumerate(self.players.values()): if not (new_positions[idx] == player_positions[idx]).all(): - p.turn(player_movement_vectors[idx]) p.move_abs(new_positions[idx]) + p.turn(player_movement_vectors[idx]) def add_player(self, player_name: str, pos: npt.NDArray = None): """Add a player to the environment. diff --git a/overcooked_simulator/utils.py b/overcooked_simulator/utils.py index b78d44af..5859e5c1 100644 --- a/overcooked_simulator/utils.py +++ b/overcooked_simulator/utils.py @@ -168,3 +168,13 @@ class NumpyAndDataclassEncoder(json.JSONEncoder): # return getattr(obj, "__name__", "Unknown") return json.JSONEncoder.default(self, obj) + + +def create_layout(w, h): + for y in range(h): + for x in range(w): + if x == 0 or y == 0 or x == w - 1 or y == h - 1: + print("#", end="") + else: + print("_", end="") + print("") -- GitLab