mettagrid 0.2.0.15__cp311-cp311-manylinux_2_34_x86_64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of mettagrid might be problematic. Click here for more details.

Files changed (411) hide show
  1. mettagrid/__init__.py +146 -0
  2. mettagrid/builder/__init__.py +7 -0
  3. mettagrid/builder/building.py +205 -0
  4. mettagrid/builder/empty_converters.py +85 -0
  5. mettagrid/builder/envs.py +307 -0
  6. mettagrid/config/__init__.py +35 -0
  7. mettagrid/config/config.py +106 -0
  8. mettagrid/config/mettagrid_c_config.py +454 -0
  9. mettagrid/config/mettagrid_config.py +312 -0
  10. mettagrid/core.py +358 -0
  11. mettagrid/demo.py +35 -0
  12. mettagrid/envs/__init__.py +13 -0
  13. mettagrid/envs/gym_env.py +127 -0
  14. mettagrid/envs/gym_wrapper.py +63 -0
  15. mettagrid/envs/mettagrid_env.py +309 -0
  16. mettagrid/envs/pettingzoo_env.py +213 -0
  17. mettagrid/envs/puffer_base.py +143 -0
  18. mettagrid/map_builder/__init__.py +10 -0
  19. mettagrid/map_builder/ascii.py +46 -0
  20. mettagrid/map_builder/assembler_map_builder.py +267 -0
  21. mettagrid/map_builder/map_builder.py +148 -0
  22. mettagrid/map_builder/maze.py +122 -0
  23. mettagrid/map_builder/perimeter_incontext.py +312 -0
  24. mettagrid/map_builder/random.py +95 -0
  25. mettagrid/map_builder/utils.py +94 -0
  26. mettagrid/mapgen/__init__.py +0 -0
  27. mettagrid/mapgen/load.py +35 -0
  28. mettagrid/mapgen/mapgen.py +375 -0
  29. mettagrid/mapgen/mapgen_ascii.py +51 -0
  30. mettagrid/mapgen/random/float.py +99 -0
  31. mettagrid/mapgen/random/int.py +50 -0
  32. mettagrid/mapgen/scene.py +312 -0
  33. mettagrid/mapgen/scenes/ascii.py +39 -0
  34. mettagrid/mapgen/scenes/auto.py +155 -0
  35. mettagrid/mapgen/scenes/bsp.py +416 -0
  36. mettagrid/mapgen/scenes/convchain.py +187 -0
  37. mettagrid/mapgen/scenes/copy_grid.py +35 -0
  38. mettagrid/mapgen/scenes/dcss/README.md +7 -0
  39. mettagrid/mapgen/scenes/dcss/convchain/amcnicky_arrival_choice.yaml +13 -0
  40. mettagrid/mapgen/scenes/dcss/convchain/amcnicky_arrival_double_pillar.yaml +33 -0
  41. mettagrid/mapgen/scenes/dcss/convchain/amcnicky_arrival_feature_with_door.yaml +17 -0
  42. mettagrid/mapgen/scenes/dcss/convchain/amcnicky_arrival_flooded_fountain.yaml +33 -0
  43. mettagrid/mapgen/scenes/dcss/convchain/amcnicky_arrival_single_pillar.yaml +23 -0
  44. mettagrid/mapgen/scenes/dcss/convchain/amcnicky_arrival_underground_garden.yaml +21 -0
  45. mettagrid/mapgen/scenes/dcss/convchain/angelslayer_arrival_pentagon.yaml +31 -0
  46. mettagrid/mapgen/scenes/dcss/convchain/co_arrival_square_in_a_square_in_a_square.yaml +41 -0
  47. mettagrid/mapgen/scenes/dcss/convchain/co_arrival_two_rings.yaml +39 -0
  48. mettagrid/mapgen/scenes/dcss/convchain/denvon_arrival_hothouse.yaml +41 -0
  49. mettagrid/mapgen/scenes/dcss/convchain/denvon_arrival_planthouse.yaml +39 -0
  50. mettagrid/mapgen/scenes/dcss/convchain/denvon_arrival_waterhouse.yaml +43 -0
  51. mettagrid/mapgen/scenes/dcss/convchain/doesnt_arrival_eight_statues.yaml +21 -0
  52. mettagrid/mapgen/scenes/dcss/convchain/dolorous_arrival_somebody's_watching_me.yaml +23 -0
  53. mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_boxes_within_box.yaml +35 -0
  54. mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_boxorama.yaml +35 -0
  55. mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_line_fractal.yaml +17 -0
  56. mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_long_road.yaml +25 -0
  57. mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_radiant.yaml +21 -0
  58. mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_rooms_a.yaml +25 -0
  59. mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_rooms_with_view.yaml +29 -0
  60. mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_shelter.yaml +21 -0
  61. mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_snail.yaml +41 -0
  62. mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_ternary.yaml +23 -0
  63. mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_three_bigger_balls.yaml +47 -0
  64. mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_three_smaller_balls.yaml +39 -0
  65. mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_tiny_a.yaml +5 -0
  66. mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_tiny_b.yaml +9 -0
  67. mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_tiny_c.yaml +11 -0
  68. mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_tiny_d.yaml +13 -0
  69. mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_tiny_e.yaml +13 -0
  70. mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_tiny_f.yaml +15 -0
  71. mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_tiny_g.yaml +15 -0
  72. mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_tiny_h.yaml +15 -0
  73. mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_tiny_i.yaml +9 -0
  74. mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_tiny_j.yaml +13 -0
  75. mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_tiny_k.yaml +9 -0
  76. mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_triangle_fractal.yaml +29 -0
  77. mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_windows_large_door.yaml +19 -0
  78. mettagrid/mapgen/scenes/dcss/convchain/dpeg_chamrin_arrival_tetris.yaml +43 -0
  79. mettagrid/mapgen/scenes/dcss/convchain/dysonsfear_arrival_angles.yaml +29 -0
  80. mettagrid/mapgen/scenes/dcss/convchain/dysonsfear_arrival_boulevard.yaml +35 -0
  81. mettagrid/mapgen/scenes/dcss/convchain/dysonsfear_arrival_nine_rooms.yaml +29 -0
  82. mettagrid/mapgen/scenes/dcss/convchain/ebering_hopf_link.yaml +27 -0
  83. mettagrid/mapgen/scenes/dcss/convchain/ebering_trefoil_3fold.yaml +27 -0
  84. mettagrid/mapgen/scenes/dcss/convchain/ebering_trefoil_twist.yaml +25 -0
  85. mettagrid/mapgen/scenes/dcss/convchain/eino_arrival_druids_welcome.yaml +25 -0
  86. mettagrid/mapgen/scenes/dcss/convchain/eino_arrival_tree_alley.yaml +13 -0
  87. mettagrid/mapgen/scenes/dcss/convchain/eino_arrival_water_cross.yaml +17 -0
  88. mettagrid/mapgen/scenes/dcss/convchain/eino_arrival_water_star.yaml +33 -0
  89. mettagrid/mapgen/scenes/dcss/convchain/erik_arrival_blinker_ship.yaml +41 -0
  90. mettagrid/mapgen/scenes/dcss/convchain/erik_arrival_triangle_huge.yaml +29 -0
  91. mettagrid/mapgen/scenes/dcss/convchain/erik_arrival_triangle_large.yaml +25 -0
  92. mettagrid/mapgen/scenes/dcss/convchain/erik_arrival_triangle_medium.yaml +21 -0
  93. mettagrid/mapgen/scenes/dcss/convchain/erik_arrival_triangle_small.yaml +17 -0
  94. mettagrid/mapgen/scenes/dcss/convchain/giann_bridges.yaml +25 -0
  95. mettagrid/mapgen/scenes/dcss/convchain/giann_forest_graveyard.yaml +29 -0
  96. mettagrid/mapgen/scenes/dcss/convchain/giann_horns.yaml +19 -0
  97. mettagrid/mapgen/scenes/dcss/convchain/giann_wishing_wells.yaml +19 -0
  98. mettagrid/mapgen/scenes/dcss/convchain/grunt_arrival_crossed_arrows.yaml +29 -0
  99. mettagrid/mapgen/scenes/dcss/convchain/grunt_arrival_lava_bath.yaml +21 -0
  100. mettagrid/mapgen/scenes/dcss/convchain/ldierk_walled_garden.yaml +29 -0
  101. mettagrid/mapgen/scenes/dcss/convchain/ldierk_walled_garden_2.yaml +23 -0
  102. mettagrid/mapgen/scenes/dcss/convchain/lemuel_arrival_cross.yaml +35 -0
  103. mettagrid/mapgen/scenes/dcss/convchain/lemuel_arrival_funnel.yaml +35 -0
  104. mettagrid/mapgen/scenes/dcss/convchain/lemuel_arrival_lava_pool.yaml +35 -0
  105. mettagrid/mapgen/scenes/dcss/convchain/lightli_arrival_chessboard.yaml +19 -0
  106. mettagrid/mapgen/scenes/dcss/convchain/lightli_arrival_flooded_house.yaml +21 -0
  107. mettagrid/mapgen/scenes/dcss/convchain/lightli_arrival_lavapool.yaml +23 -0
  108. mettagrid/mapgen/scenes/dcss/convchain/lightli_arrival_maybe_door_vault.yaml +19 -0
  109. mettagrid/mapgen/scenes/dcss/convchain/lightli_arrival_statue_moat.yaml +23 -0
  110. mettagrid/mapgen/scenes/dcss/convchain/lightli_iron_boxes.yaml +23 -0
  111. mettagrid/mapgen/scenes/dcss/convchain/lightli_molten_gateway.yaml +35 -0
  112. mettagrid/mapgen/scenes/dcss/convchain/matt_arrival_grand_opening.yaml +37 -0
  113. mettagrid/mapgen/scenes/dcss/convchain/matt_arrival_los_fun.yaml +49 -0
  114. mettagrid/mapgen/scenes/dcss/convchain/matt_arrival_refuge.yaml +37 -0
  115. mettagrid/mapgen/scenes/dcss/convchain/matt_arrival_spirals.yaml +33 -0
  116. mettagrid/mapgen/scenes/dcss/convchain/minmay_arrival_diagonal_passages.yaml +29 -0
  117. mettagrid/mapgen/scenes/dcss/convchain/minmay_arrival_doors.yaml +29 -0
  118. mettagrid/mapgen/scenes/dcss/convchain/minmay_arrival_four_houses.yaml +29 -0
  119. mettagrid/mapgen/scenes/dcss/convchain/minmay_arrival_open_corners.yaml +33 -0
  120. mettagrid/mapgen/scenes/dcss/convchain/minmay_arrival_plants_in_alcoves.yaml +17 -0
  121. mettagrid/mapgen/scenes/dcss/convchain/minmay_arrival_pointy.yaml +31 -0
  122. mettagrid/mapgen/scenes/dcss/convchain/minmay_arrival_radiant_lines.yaml +45 -0
  123. mettagrid/mapgen/scenes/dcss/convchain/minmay_arrival_three_doors.yaml +11 -0
  124. mettagrid/mapgen/scenes/dcss/convchain/minmay_arrival_up_and_down.yaml +21 -0
  125. mettagrid/mapgen/scenes/dcss/convchain/minmay_arrival_wavy_path.yaml +27 -0
  126. mettagrid/mapgen/scenes/dcss/convchain/mrwooster_arrival_arrow.yaml +29 -0
  127. mettagrid/mapgen/scenes/dcss/convchain/mrwooster_arrival_statue.yaml +15 -0
  128. mettagrid/mapgen/scenes/dcss/convchain/mrwooster_arrival_statue_2.yaml +19 -0
  129. mettagrid/mapgen/scenes/dcss/convchain/mrwooster_arrival_statue_3.yaml +21 -0
  130. mettagrid/mapgen/scenes/dcss/convchain/ms813_arrival_door_cone_large.yaml +21 -0
  131. mettagrid/mapgen/scenes/dcss/convchain/ms813_arrival_door_cone_med.yaml +19 -0
  132. mettagrid/mapgen/scenes/dcss/convchain/ms813_arrival_door_cone_small.yaml +17 -0
  133. mettagrid/mapgen/scenes/dcss/convchain/ms813_arrival_square_statues.yaml +17 -0
  134. mettagrid/mapgen/scenes/dcss/convchain/mushboom_english_gardens.yaml +25 -0
  135. mettagrid/mapgen/scenes/dcss/convchain/ncdulo_halloftheorcs.yaml +25 -0
  136. mettagrid/mapgen/scenes/dcss/convchain/ncdulo_lavacross.yaml +21 -0
  137. mettagrid/mapgen/scenes/dcss/convchain/ncdulo_smallfort.yaml +19 -0
  138. mettagrid/mapgen/scenes/dcss/convchain/ncdulo_watergridlock.yaml +21 -0
  139. mettagrid/mapgen/scenes/dcss/convchain/ncdulo_wetmaze.yaml +23 -0
  140. mettagrid/mapgen/scenes/dcss/convchain/nzn_arrival_crosshair.yaml +29 -0
  141. mettagrid/mapgen/scenes/dcss/convchain/nzn_arrival_depleted_hourglass.yaml +33 -0
  142. mettagrid/mapgen/scenes/dcss/convchain/nzn_arrival_water_spiral.yaml +39 -0
  143. mettagrid/mapgen/scenes/dcss/convchain/onia_arrival_mini_spirals.yaml +19 -0
  144. mettagrid/mapgen/scenes/dcss/convchain/onia_arrival_pyramid.yaml +31 -0
  145. mettagrid/mapgen/scenes/dcss/convchain/pf_arrival_petrified_forest.yaml +21 -0
  146. mettagrid/mapgen/scenes/dcss/convchain/psy_arrival_basics.yaml +21 -0
  147. mettagrid/mapgen/scenes/dcss/convchain/psy_arrival_conway.yaml +31 -0
  148. mettagrid/mapgen/scenes/dcss/convchain/psy_arrival_dodecagon.yaml +53 -0
  149. mettagrid/mapgen/scenes/dcss/convchain/psy_arrival_heroes.yaml +41 -0
  150. mettagrid/mapgen/scenes/dcss/convchain/psy_arrival_radial01.yaml +37 -0
  151. mettagrid/mapgen/scenes/dcss/convchain/psy_arrival_radial02.yaml +45 -0
  152. mettagrid/mapgen/scenes/dcss/convchain/psy_arrival_whirlpool.yaml +29 -0
  153. mettagrid/mapgen/scenes/dcss/convchain/reono_arrival_forest_river.yaml +29 -0
  154. mettagrid/mapgen/scenes/dcss/convchain/reono_arrival_mine.yaml +29 -0
  155. mettagrid/mapgen/scenes/dcss/convchain/roderic_chinese_lattice_arrival.yaml +33 -0
  156. mettagrid/mapgen/scenes/dcss/convchain/roderic_crossed_star.yaml +33 -0
  157. mettagrid/mapgen/scenes/dcss/convchain/roderic_dead_forest.yaml +39 -0
  158. mettagrid/mapgen/scenes/dcss/convchain/saegor_arrival_simple_a.yaml +9 -0
  159. mettagrid/mapgen/scenes/dcss/convchain/saegor_arrival_simple_b.yaml +13 -0
  160. mettagrid/mapgen/scenes/dcss/convchain/saegor_arrival_simple_c.yaml +15 -0
  161. mettagrid/mapgen/scenes/dcss/convchain/saegor_arrival_simple_d.yaml +21 -0
  162. mettagrid/mapgen/scenes/dcss/convchain/saegor_arrival_simple_e.yaml +19 -0
  163. mettagrid/mapgen/scenes/dcss/convchain/scummos_arrival_checkerplants.yaml +27 -0
  164. mettagrid/mapgen/scenes/dcss/convchain/scummos_arrival_forest.yaml +21 -0
  165. mettagrid/mapgen/scenes/dcss/convchain/scummos_arrival_gate.yaml +25 -0
  166. mettagrid/mapgen/scenes/dcss/convchain/scummos_arrival_hexagon.yaml +21 -0
  167. mettagrid/mapgen/scenes/dcss/convchain/scummos_arrival_simple_crosswalls.yaml +25 -0
  168. mettagrid/mapgen/scenes/dcss/convchain/scummos_arrival_simple_fountains.yaml +17 -0
  169. mettagrid/mapgen/scenes/dcss/convchain/scummos_arrival_star.yaml +31 -0
  170. mettagrid/mapgen/scenes/dcss/convchain/spicycebolla_green_bress_n_ham.yaml +31 -0
  171. mettagrid/mapgen/scenes/dcss/convchain/spicycebolla_green_bress_n_ham_2.yaml +31 -0
  172. mettagrid/mapgen/scenes/dcss/convchain/tarquinn_simple_flora_water_a.yaml +21 -0
  173. mettagrid/mapgen/scenes/dcss/convchain/tarquinn_simple_flora_water_b.yaml +33 -0
  174. mettagrid/mapgen/scenes/dcss/convchain/tarquinn_simple_flora_water_c.yaml +19 -0
  175. mettagrid/mapgen/scenes/dcss/convchain/tarquinn_simple_flora_water_d.yaml +17 -0
  176. mettagrid/mapgen/scenes/dcss/convchain/tarquinn_simple_flora_water_e.yaml +17 -0
  177. mettagrid/mapgen/scenes/dcss/convchain/tarquinn_simple_flora_water_f.yaml +15 -0
  178. mettagrid/mapgen/scenes/dcss/convchain/wander_arrival_chamber.yaml +17 -0
  179. mettagrid/mapgen/scenes/dcss/convchain/wander_arrival_desolate.yaml +21 -0
  180. mettagrid/mapgen/scenes/dcss/convchain/wheals_arrival_linesprint.yaml +17 -0
  181. mettagrid/mapgen/scenes/dcss/convchain/wheals_arrival_shading.yaml +13 -0
  182. mettagrid/mapgen/scenes/dcss/convchain/zelgadis_glass_arrival_small.yaml +23 -0
  183. mettagrid/mapgen/scenes/dcss/wfc/amcnicky_arrival_choice.yaml +10 -0
  184. mettagrid/mapgen/scenes/dcss/wfc/amcnicky_arrival_double_pillar.yaml +30 -0
  185. mettagrid/mapgen/scenes/dcss/wfc/amcnicky_arrival_feature_with_door.yaml +14 -0
  186. mettagrid/mapgen/scenes/dcss/wfc/amcnicky_arrival_flooded_fountain.yaml +30 -0
  187. mettagrid/mapgen/scenes/dcss/wfc/amcnicky_arrival_single_pillar.yaml +20 -0
  188. mettagrid/mapgen/scenes/dcss/wfc/amcnicky_arrival_underground_garden.yaml +18 -0
  189. mettagrid/mapgen/scenes/dcss/wfc/co_arrival_square_in_a_square_in_a_square.yaml +38 -0
  190. mettagrid/mapgen/scenes/dcss/wfc/co_arrival_two_rings.yaml +36 -0
  191. mettagrid/mapgen/scenes/dcss/wfc/denvon_arrival_hothouse.yaml +38 -0
  192. mettagrid/mapgen/scenes/dcss/wfc/denvon_arrival_planthouse.yaml +36 -0
  193. mettagrid/mapgen/scenes/dcss/wfc/denvon_arrival_waterhouse.yaml +40 -0
  194. mettagrid/mapgen/scenes/dcss/wfc/doesnt_arrival_eight_statues.yaml +18 -0
  195. mettagrid/mapgen/scenes/dcss/wfc/dolorous_arrival_somebody's_watching_me.yaml +20 -0
  196. mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_boxes_within_box.yaml +32 -0
  197. mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_boxorama.yaml +32 -0
  198. mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_line_fractal.yaml +14 -0
  199. mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_long_road.yaml +22 -0
  200. mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_radiant.yaml +18 -0
  201. mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_rooms_a.yaml +22 -0
  202. mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_rooms_with_view.yaml +26 -0
  203. mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_shelter.yaml +18 -0
  204. mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_snail.yaml +38 -0
  205. mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_ternary.yaml +20 -0
  206. mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_three_bigger_balls.yaml +44 -0
  207. mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_three_smaller_balls.yaml +36 -0
  208. mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_tiny_a.yaml +2 -0
  209. mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_tiny_b.yaml +6 -0
  210. mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_tiny_c.yaml +8 -0
  211. mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_tiny_d.yaml +10 -0
  212. mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_tiny_e.yaml +10 -0
  213. mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_tiny_f.yaml +12 -0
  214. mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_tiny_g.yaml +12 -0
  215. mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_tiny_h.yaml +12 -0
  216. mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_tiny_i.yaml +6 -0
  217. mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_tiny_j.yaml +10 -0
  218. mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_tiny_k.yaml +6 -0
  219. mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_triangle_fractal.yaml +26 -0
  220. mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_windows_large_door.yaml +16 -0
  221. mettagrid/mapgen/scenes/dcss/wfc/dpeg_chamrin_arrival_tetris.yaml +40 -0
  222. mettagrid/mapgen/scenes/dcss/wfc/dysonsfear_arrival_angles.yaml +26 -0
  223. mettagrid/mapgen/scenes/dcss/wfc/dysonsfear_arrival_boulevard.yaml +32 -0
  224. mettagrid/mapgen/scenes/dcss/wfc/dysonsfear_arrival_nine_rooms.yaml +26 -0
  225. mettagrid/mapgen/scenes/dcss/wfc/ebering_hopf_link.yaml +24 -0
  226. mettagrid/mapgen/scenes/dcss/wfc/ebering_trefoil_3fold.yaml +24 -0
  227. mettagrid/mapgen/scenes/dcss/wfc/ebering_trefoil_twist.yaml +22 -0
  228. mettagrid/mapgen/scenes/dcss/wfc/eino_arrival_druids_welcome.yaml +22 -0
  229. mettagrid/mapgen/scenes/dcss/wfc/eino_arrival_tree_alley.yaml +10 -0
  230. mettagrid/mapgen/scenes/dcss/wfc/eino_arrival_water_cross.yaml +14 -0
  231. mettagrid/mapgen/scenes/dcss/wfc/eino_arrival_water_star.yaml +30 -0
  232. mettagrid/mapgen/scenes/dcss/wfc/erik_arrival_blinker_ship.yaml +38 -0
  233. mettagrid/mapgen/scenes/dcss/wfc/erik_arrival_triangle_huge.yaml +26 -0
  234. mettagrid/mapgen/scenes/dcss/wfc/erik_arrival_triangle_large.yaml +22 -0
  235. mettagrid/mapgen/scenes/dcss/wfc/erik_arrival_triangle_medium.yaml +18 -0
  236. mettagrid/mapgen/scenes/dcss/wfc/erik_arrival_triangle_small.yaml +14 -0
  237. mettagrid/mapgen/scenes/dcss/wfc/giann_bridges.yaml +22 -0
  238. mettagrid/mapgen/scenes/dcss/wfc/giann_forest_graveyard.yaml +26 -0
  239. mettagrid/mapgen/scenes/dcss/wfc/giann_horns.yaml +16 -0
  240. mettagrid/mapgen/scenes/dcss/wfc/giann_wishing_wells.yaml +16 -0
  241. mettagrid/mapgen/scenes/dcss/wfc/grunt_arrival_crossed_arrows.yaml +26 -0
  242. mettagrid/mapgen/scenes/dcss/wfc/grunt_arrival_lava_bath.yaml +18 -0
  243. mettagrid/mapgen/scenes/dcss/wfc/ldierk_walled_garden.yaml +26 -0
  244. mettagrid/mapgen/scenes/dcss/wfc/ldierk_walled_garden_2.yaml +20 -0
  245. mettagrid/mapgen/scenes/dcss/wfc/lemuel_arrival_cross.yaml +32 -0
  246. mettagrid/mapgen/scenes/dcss/wfc/lemuel_arrival_funnel.yaml +32 -0
  247. mettagrid/mapgen/scenes/dcss/wfc/lemuel_arrival_lava_pool.yaml +32 -0
  248. mettagrid/mapgen/scenes/dcss/wfc/lightli_arrival_chessboard.yaml +16 -0
  249. mettagrid/mapgen/scenes/dcss/wfc/lightli_arrival_flooded_house.yaml +18 -0
  250. mettagrid/mapgen/scenes/dcss/wfc/lightli_arrival_lavapool.yaml +20 -0
  251. mettagrid/mapgen/scenes/dcss/wfc/lightli_arrival_maybe_door_vault.yaml +16 -0
  252. mettagrid/mapgen/scenes/dcss/wfc/lightli_arrival_statue_moat.yaml +20 -0
  253. mettagrid/mapgen/scenes/dcss/wfc/lightli_iron_boxes.yaml +20 -0
  254. mettagrid/mapgen/scenes/dcss/wfc/lightli_molten_gateway.yaml +32 -0
  255. mettagrid/mapgen/scenes/dcss/wfc/matt_arrival_grand_opening.yaml +34 -0
  256. mettagrid/mapgen/scenes/dcss/wfc/matt_arrival_refuge.yaml +34 -0
  257. mettagrid/mapgen/scenes/dcss/wfc/matt_arrival_spirals.yaml +30 -0
  258. mettagrid/mapgen/scenes/dcss/wfc/minmay_arrival_diagonal_passages.yaml +26 -0
  259. mettagrid/mapgen/scenes/dcss/wfc/minmay_arrival_doors.yaml +26 -0
  260. mettagrid/mapgen/scenes/dcss/wfc/minmay_arrival_four_houses.yaml +26 -0
  261. mettagrid/mapgen/scenes/dcss/wfc/minmay_arrival_open_corners.yaml +30 -0
  262. mettagrid/mapgen/scenes/dcss/wfc/minmay_arrival_plants_in_alcoves.yaml +14 -0
  263. mettagrid/mapgen/scenes/dcss/wfc/minmay_arrival_pointy.yaml +28 -0
  264. mettagrid/mapgen/scenes/dcss/wfc/minmay_arrival_radiant_lines.yaml +42 -0
  265. mettagrid/mapgen/scenes/dcss/wfc/minmay_arrival_three_doors.yaml +8 -0
  266. mettagrid/mapgen/scenes/dcss/wfc/minmay_arrival_up_and_down.yaml +18 -0
  267. mettagrid/mapgen/scenes/dcss/wfc/minmay_arrival_wavy_path.yaml +24 -0
  268. mettagrid/mapgen/scenes/dcss/wfc/mrwooster_arrival_arrow.yaml +26 -0
  269. mettagrid/mapgen/scenes/dcss/wfc/mrwooster_arrival_statue.yaml +12 -0
  270. mettagrid/mapgen/scenes/dcss/wfc/mrwooster_arrival_statue_2.yaml +16 -0
  271. mettagrid/mapgen/scenes/dcss/wfc/mrwooster_arrival_statue_3.yaml +18 -0
  272. mettagrid/mapgen/scenes/dcss/wfc/ms813_arrival_door_cone_large.yaml +18 -0
  273. mettagrid/mapgen/scenes/dcss/wfc/ms813_arrival_door_cone_med.yaml +16 -0
  274. mettagrid/mapgen/scenes/dcss/wfc/ms813_arrival_door_cone_small.yaml +14 -0
  275. mettagrid/mapgen/scenes/dcss/wfc/ms813_arrival_square_statues.yaml +14 -0
  276. mettagrid/mapgen/scenes/dcss/wfc/mushboom_english_gardens.yaml +22 -0
  277. mettagrid/mapgen/scenes/dcss/wfc/ncdulo_halloftheorcs.yaml +22 -0
  278. mettagrid/mapgen/scenes/dcss/wfc/ncdulo_lavacross.yaml +18 -0
  279. mettagrid/mapgen/scenes/dcss/wfc/ncdulo_smallfort.yaml +16 -0
  280. mettagrid/mapgen/scenes/dcss/wfc/ncdulo_watergridlock.yaml +18 -0
  281. mettagrid/mapgen/scenes/dcss/wfc/ncdulo_wetmaze.yaml +20 -0
  282. mettagrid/mapgen/scenes/dcss/wfc/nzn_arrival_crosshair.yaml +26 -0
  283. mettagrid/mapgen/scenes/dcss/wfc/nzn_arrival_depleted_hourglass.yaml +30 -0
  284. mettagrid/mapgen/scenes/dcss/wfc/nzn_arrival_water_spiral.yaml +36 -0
  285. mettagrid/mapgen/scenes/dcss/wfc/onia_arrival_mini_spirals.yaml +16 -0
  286. mettagrid/mapgen/scenes/dcss/wfc/onia_arrival_pyramid.yaml +28 -0
  287. mettagrid/mapgen/scenes/dcss/wfc/pf_arrival_petrified_forest.yaml +18 -0
  288. mettagrid/mapgen/scenes/dcss/wfc/psy_arrival_basics.yaml +18 -0
  289. mettagrid/mapgen/scenes/dcss/wfc/psy_arrival_conway.yaml +28 -0
  290. mettagrid/mapgen/scenes/dcss/wfc/psy_arrival_dodecagon.yaml +50 -0
  291. mettagrid/mapgen/scenes/dcss/wfc/psy_arrival_heroes.yaml +38 -0
  292. mettagrid/mapgen/scenes/dcss/wfc/psy_arrival_radial01.yaml +34 -0
  293. mettagrid/mapgen/scenes/dcss/wfc/psy_arrival_radial02.yaml +42 -0
  294. mettagrid/mapgen/scenes/dcss/wfc/psy_arrival_whirlpool.yaml +26 -0
  295. mettagrid/mapgen/scenes/dcss/wfc/reono_arrival_forest_river.yaml +26 -0
  296. mettagrid/mapgen/scenes/dcss/wfc/reono_arrival_mine.yaml +26 -0
  297. mettagrid/mapgen/scenes/dcss/wfc/roderic_chinese_lattice_arrival.yaml +30 -0
  298. mettagrid/mapgen/scenes/dcss/wfc/roderic_crossed_star.yaml +30 -0
  299. mettagrid/mapgen/scenes/dcss/wfc/roderic_dead_forest.yaml +36 -0
  300. mettagrid/mapgen/scenes/dcss/wfc/saegor_arrival_simple_a.yaml +6 -0
  301. mettagrid/mapgen/scenes/dcss/wfc/saegor_arrival_simple_b.yaml +10 -0
  302. mettagrid/mapgen/scenes/dcss/wfc/saegor_arrival_simple_c.yaml +12 -0
  303. mettagrid/mapgen/scenes/dcss/wfc/saegor_arrival_simple_d.yaml +18 -0
  304. mettagrid/mapgen/scenes/dcss/wfc/saegor_arrival_simple_e.yaml +16 -0
  305. mettagrid/mapgen/scenes/dcss/wfc/scummos_arrival_checkerplants.yaml +24 -0
  306. mettagrid/mapgen/scenes/dcss/wfc/scummos_arrival_forest.yaml +18 -0
  307. mettagrid/mapgen/scenes/dcss/wfc/scummos_arrival_gate.yaml +22 -0
  308. mettagrid/mapgen/scenes/dcss/wfc/scummos_arrival_hexagon.yaml +18 -0
  309. mettagrid/mapgen/scenes/dcss/wfc/scummos_arrival_simple_crosswalls.yaml +22 -0
  310. mettagrid/mapgen/scenes/dcss/wfc/scummos_arrival_simple_fountains.yaml +14 -0
  311. mettagrid/mapgen/scenes/dcss/wfc/scummos_arrival_star.yaml +28 -0
  312. mettagrid/mapgen/scenes/dcss/wfc/spicycebolla_green_bress_n_ham.yaml +28 -0
  313. mettagrid/mapgen/scenes/dcss/wfc/spicycebolla_green_bress_n_ham_2.yaml +28 -0
  314. mettagrid/mapgen/scenes/dcss/wfc/tarquinn_simple_flora_water_a.yaml +18 -0
  315. mettagrid/mapgen/scenes/dcss/wfc/tarquinn_simple_flora_water_b.yaml +30 -0
  316. mettagrid/mapgen/scenes/dcss/wfc/tarquinn_simple_flora_water_c.yaml +16 -0
  317. mettagrid/mapgen/scenes/dcss/wfc/tarquinn_simple_flora_water_d.yaml +14 -0
  318. mettagrid/mapgen/scenes/dcss/wfc/tarquinn_simple_flora_water_e.yaml +14 -0
  319. mettagrid/mapgen/scenes/dcss/wfc/tarquinn_simple_flora_water_f.yaml +12 -0
  320. mettagrid/mapgen/scenes/dcss/wfc/wander_arrival_chamber.yaml +14 -0
  321. mettagrid/mapgen/scenes/dcss/wfc/wander_arrival_desolate.yaml +18 -0
  322. mettagrid/mapgen/scenes/dcss/wfc/wheals_arrival_linesprint.yaml +14 -0
  323. mettagrid/mapgen/scenes/dcss/wfc/wheals_arrival_shading.yaml +10 -0
  324. mettagrid/mapgen/scenes/dcss/wfc/zelgadis_glass_arrival_small.yaml +20 -0
  325. mettagrid/mapgen/scenes/grid_altars.py +117 -0
  326. mettagrid/mapgen/scenes/inline_ascii.py +41 -0
  327. mettagrid/mapgen/scenes/layout.py +30 -0
  328. mettagrid/mapgen/scenes/make_connected.py +162 -0
  329. mettagrid/mapgen/scenes/maze.py +211 -0
  330. mettagrid/mapgen/scenes/mean_distance.py +47 -0
  331. mettagrid/mapgen/scenes/mirror.py +130 -0
  332. mettagrid/mapgen/scenes/multi_left_and_right.py +105 -0
  333. mettagrid/mapgen/scenes/nop.py +14 -0
  334. mettagrid/mapgen/scenes/radial_maze.py +49 -0
  335. mettagrid/mapgen/scenes/random.py +64 -0
  336. mettagrid/mapgen/scenes/random_dcss_scene.py +46 -0
  337. mettagrid/mapgen/scenes/random_objects.py +33 -0
  338. mettagrid/mapgen/scenes/random_scene.py +30 -0
  339. mettagrid/mapgen/scenes/random_yaml_scene.py +30 -0
  340. mettagrid/mapgen/scenes/remove_agents.py +25 -0
  341. mettagrid/mapgen/scenes/room_grid.py +76 -0
  342. mettagrid/mapgen/scenes/spiral.py +103 -0
  343. mettagrid/mapgen/scenes/transplant_scene.py +41 -0
  344. mettagrid/mapgen/scenes/varied_terrain.py +373 -0
  345. mettagrid/mapgen/scenes/wfc.py +268 -0
  346. mettagrid/mapgen/scenes/yaml.py +20 -0
  347. mettagrid/mapgen/tools/dcss_import.py +123 -0
  348. mettagrid/mapgen/tools/gen.py +94 -0
  349. mettagrid/mapgen/tools/gen_scene.py +51 -0
  350. mettagrid/mapgen/tools/view.py +25 -0
  351. mettagrid/mapgen/types.py +81 -0
  352. mettagrid/mapgen/utils/ascii_grid.py +55 -0
  353. mettagrid/mapgen/utils/draw.py +32 -0
  354. mettagrid/mapgen/utils/make_scene_config.py +32 -0
  355. mettagrid/mapgen/utils/pattern.py +181 -0
  356. mettagrid/mapgen/utils/show.py +21 -0
  357. mettagrid/mapgen/utils/storable_map.py +122 -0
  358. mettagrid/mapgen/utils/thumbnail.py +360 -0
  359. mettagrid/mettagrid_c.pyi +254 -0
  360. mettagrid/mettagrid_c.so +0 -0
  361. mettagrid/mettascope.py +73 -0
  362. mettagrid/profiling/__init__.py +1 -0
  363. mettagrid/profiling/memory_monitor.py +242 -0
  364. mettagrid/profiling/stopwatch.py +711 -0
  365. mettagrid/profiling/system_monitor.py +355 -0
  366. mettagrid/py.typed +0 -0
  367. mettagrid/renderer/assets/Inter-Regular.ttf +0 -0
  368. mettagrid/renderer/assets/altar.png +0 -0
  369. mettagrid/renderer/assets/atlas.json +920 -0
  370. mettagrid/renderer/assets/atlas.png +0 -0
  371. mettagrid/renderer/assets/converter.png +0 -0
  372. mettagrid/renderer/assets/generator.png +0 -0
  373. mettagrid/renderer/assets/items.png +0 -0
  374. mettagrid/renderer/assets/monsters.png +0 -0
  375. mettagrid/renderer/assets/ore-0.png +0 -0
  376. mettagrid/renderer/assets/ore-1.png +0 -0
  377. mettagrid/renderer/assets/ore-2.png +0 -0
  378. mettagrid/renderer/assets/ore-3.png +0 -0
  379. mettagrid/renderer/assets/ore-4.png +0 -0
  380. mettagrid/renderer/assets/ore-5.png +0 -0
  381. mettagrid/renderer/assets/ore-6.png +0 -0
  382. mettagrid/renderer/assets/puffer_chars.png +0 -0
  383. mettagrid/renderer/assets/wall.png +0 -0
  384. mettagrid/renderer/miniscope/__init__.py +5 -0
  385. mettagrid/renderer/miniscope/buffer.py +144 -0
  386. mettagrid/renderer/miniscope/info_panels.py +157 -0
  387. mettagrid/renderer/miniscope/interactive.py +394 -0
  388. mettagrid/renderer/miniscope/renderer.py +172 -0
  389. mettagrid/renderer/miniscope/symbols.py +86 -0
  390. mettagrid/test_support/__init__.py +7 -0
  391. mettagrid/test_support/actions.py +426 -0
  392. mettagrid/test_support/mapgen.py +77 -0
  393. mettagrid/test_support/observation_helper.py +50 -0
  394. mettagrid/test_support/orientation.py +100 -0
  395. mettagrid/test_support/token_types.py +18 -0
  396. mettagrid/types.py +38 -0
  397. mettagrid/util/__init__.py +0 -0
  398. mettagrid/util/char_encoder.py +67 -0
  399. mettagrid/util/debug.py +501 -0
  400. mettagrid/util/dict_utils.py +10 -0
  401. mettagrid/util/diversity.py +71 -0
  402. mettagrid/util/grid_object_formatter.py +95 -0
  403. mettagrid/util/module.py +12 -0
  404. mettagrid/util/replay_writer.py +50 -0
  405. mettagrid/util/stats_writer.py +47 -0
  406. mettagrid-0.2.0.15.dist-info/METADATA +247 -0
  407. mettagrid-0.2.0.15.dist-info/RECORD +411 -0
  408. mettagrid-0.2.0.15.dist-info/WHEEL +5 -0
  409. mettagrid-0.2.0.15.dist-info/entry_points.txt +2 -0
  410. mettagrid-0.2.0.15.dist-info/licenses/LICENSE +21 -0
  411. mettagrid-0.2.0.15.dist-info/top_level.txt +1 -0
mettagrid/__init__.py ADDED
@@ -0,0 +1,146 @@
1
+ """
2
+ MettaGrid - Multi-agent reinforcement learning grid environments.
3
+
4
+ This module provides various environment adapters for different RL frameworks:
5
+ - MettaGridCore: Core C++ wrapper (no training features)
6
+ - MettaGridEnv: Training environment (PufferLib-based with stats/replay)
7
+ - MettaGridGymEnv: Gymnasium adapter
8
+ - MettaGridPettingZooEnv: PettingZoo adapter
9
+
10
+ All adapters inherit from MettaGridCore and provide framework-specific interfaces.
11
+ For PufferLib integration, use PufferLib's MettaPuff wrapper directly.
12
+ """
13
+
14
+ from __future__ import annotations
15
+
16
+ import importlib
17
+ from typing import TYPE_CHECKING, Any, Dict, Tuple
18
+
19
+ # Map attribute names to (module, attribute) for lazy loading.
20
+ _LAZY_ATTRS: Dict[str, Tuple[str, str]] = {
21
+ # Config
22
+ "MettaGridConfig": ("mettagrid.config.mettagrid_config", "MettaGridConfig"),
23
+ # Core classes
24
+ "MettaGridCore": ("mettagrid.core", "MettaGridCore"),
25
+ "MettaGridAction": ("mettagrid.core", "MettaGridAction"),
26
+ "MettaGridObservation": ("mettagrid.core", "MettaGridObservation"),
27
+ # Main environment (backward compatible)
28
+ "MettaGridEnv": ("mettagrid.envs.mettagrid_env", "MettaGridEnv"),
29
+ # Environment adapters
30
+ "MettaGridGymEnv": ("mettagrid.envs.gym_env", "MettaGridGymEnv"),
31
+ "MettaGridPettingZooEnv": (
32
+ "mettagrid.envs.pettingzoo_env",
33
+ "MettaGridPettingZooEnv",
34
+ ),
35
+ # Data types (from C++)
36
+ "dtype_actions": ("mettagrid.mettagrid_c", "dtype_actions"),
37
+ "dtype_observations": ("mettagrid.mettagrid_c", "dtype_observations"),
38
+ "dtype_rewards": ("mettagrid.mettagrid_c", "dtype_rewards"),
39
+ "dtype_terminals": ("mettagrid.mettagrid_c", "dtype_terminals"),
40
+ "dtype_truncations": ("mettagrid.mettagrid_c", "dtype_truncations"),
41
+ "dtype_masks": ("mettagrid.mettagrid_c", "dtype_masks"),
42
+ "dtype_success": ("mettagrid.mettagrid_c", "dtype_success"),
43
+ # Type definitions
44
+ "validate_observation_space": (
45
+ "mettagrid.types",
46
+ "validate_observation_space",
47
+ ),
48
+ "validate_action_space": ("mettagrid.types", "validate_action_space"),
49
+ "get_observation_shape": ("mettagrid.types", "get_observation_shape"),
50
+ "get_action_nvec": ("mettagrid.types", "get_action_nvec"),
51
+ # Supporting classes
52
+ "GameMap": ("mettagrid.map_builder.map_builder", "GameMap"),
53
+ "ReplayWriter": ("mettagrid.util.replay_writer", "ReplayWriter"),
54
+ "StatsWriter": ("mettagrid.util.stats_writer", "StatsWriter"),
55
+ }
56
+
57
+ if TYPE_CHECKING:
58
+ from mettagrid.config.mettagrid_config import MettaGridConfig
59
+ from mettagrid.core import MettaGridAction, MettaGridCore, MettaGridObservation
60
+ from mettagrid.envs.gym_env import MettaGridGymEnv
61
+ from mettagrid.envs.mettagrid_env import MettaGridEnv
62
+ from mettagrid.envs.pettingzoo_env import MettaGridPettingZooEnv
63
+ from mettagrid.map_builder.map_builder import GameMap
64
+ from mettagrid.mettagrid_c import (
65
+ dtype_actions,
66
+ dtype_masks,
67
+ dtype_observations,
68
+ dtype_rewards,
69
+ dtype_success,
70
+ dtype_terminals,
71
+ dtype_truncations,
72
+ )
73
+ from mettagrid.types import (
74
+ get_action_nvec,
75
+ get_observation_shape,
76
+ validate_action_space,
77
+ validate_observation_space,
78
+ )
79
+ from mettagrid.util.replay_writer import ReplayWriter
80
+ from mettagrid.util.stats_writer import StatsWriter
81
+
82
+ try:
83
+ from mettagrid import mettascope
84
+ except (ImportError, OSError):
85
+ mettascope = None
86
+
87
+ __all__ = [
88
+ # Config
89
+ "MettaGridConfig",
90
+ # Core classes
91
+ "MettaGridCore",
92
+ # Main environment (backward compatible)
93
+ "MettaGridEnv",
94
+ # Environment adapters
95
+ "MettaGridGymEnv",
96
+ "MettaGridPettingZooEnv",
97
+ # Data types (from C++)
98
+ "dtype_actions",
99
+ "dtype_observations",
100
+ "dtype_rewards",
101
+ "dtype_terminals",
102
+ "dtype_truncations",
103
+ "dtype_masks",
104
+ "dtype_success",
105
+ # Type definitions
106
+ "MettaGridObservation",
107
+ "MettaGridAction",
108
+ "validate_observation_space",
109
+ "validate_action_space",
110
+ "get_observation_shape",
111
+ "get_action_nvec",
112
+ # Supporting classes
113
+ "GameMap",
114
+ "ReplayWriter",
115
+ "StatsWriter",
116
+ # Optional visualization module
117
+ "mettascope",
118
+ ]
119
+
120
+
121
+ def __getattr__(name: str) -> Any: # pragma: no cover - thin import wrapper
122
+ """Dynamically import public attributes on first access."""
123
+
124
+ if name == "mettascope":
125
+ try:
126
+ module = importlib.import_module("mettagrid.mettascope")
127
+ except (ImportError, OSError):
128
+ module = None
129
+ globals()[name] = module
130
+ return module
131
+
132
+ try:
133
+ module_name, attribute_name = _LAZY_ATTRS[name]
134
+ except KeyError as exc: # pragma: no cover - mirrors built-in behaviour
135
+ raise AttributeError(f"module {__name__!r} has no attribute {name!r}") from exc
136
+
137
+ module = importlib.import_module(module_name)
138
+ attr = getattr(module, attribute_name)
139
+ globals()[name] = attr
140
+ return attr
141
+
142
+
143
+ def __dir__() -> list[str]:
144
+ """Expose lazy attributes in dir() results."""
145
+
146
+ return sorted({*__all__, *globals().keys()})
@@ -0,0 +1,7 @@
1
+ """
2
+ Configuration builders for Metta environments.
3
+ """
4
+
5
+ from . import building, empty_converters, envs
6
+
7
+ __all__ = ["building", "envs", "empty_converters"]
@@ -0,0 +1,205 @@
1
+ from typing import Literal
2
+
3
+ from mettagrid.config.mettagrid_config import AssemblerConfig, ChestConfig, ConverterConfig, RecipeConfig, WallConfig
4
+
5
+ wall = WallConfig(type_id=1)
6
+ block = WallConfig(type_id=14, swappable=True)
7
+
8
+ altar = ConverterConfig(
9
+ type_id=8,
10
+ input_resources={"battery_red": 3},
11
+ output_resources={"heart": 1},
12
+ cooldown=10,
13
+ )
14
+
15
+
16
+ def make_mine(color: str, type_id: int) -> ConverterConfig:
17
+ return ConverterConfig(
18
+ type_id=type_id,
19
+ output_resources={f"ore_{color}": 1},
20
+ cooldown=50,
21
+ )
22
+
23
+
24
+ mine_red = make_mine("red", 2)
25
+ mine_blue = make_mine("blue", 3)
26
+ mine_green = make_mine("green", 4)
27
+
28
+
29
+ def make_generator(color: str, type_id: int) -> ConverterConfig:
30
+ return ConverterConfig(
31
+ type_id=type_id,
32
+ input_resources={f"ore_{color}": 1},
33
+ output_resources={f"battery_{color}": 1},
34
+ cooldown=25,
35
+ )
36
+
37
+
38
+ generator_red = make_generator("red", 5)
39
+ generator_blue = make_generator("blue", 6)
40
+ generator_green = make_generator("green", 7)
41
+
42
+ lasery = ConverterConfig(
43
+ type_id=15,
44
+ input_resources={"battery_red": 1, "ore_red": 2},
45
+ output_resources={"laser": 1},
46
+ cooldown=10,
47
+ )
48
+
49
+ armory = ConverterConfig(
50
+ type_id=16,
51
+ input_resources={"ore_red": 3},
52
+ output_resources={"armor": 1},
53
+ cooldown=10,
54
+ )
55
+
56
+ # Assembler building definitions
57
+ assembler_altar = AssemblerConfig(
58
+ type_id=8,
59
+ recipes=[
60
+ (
61
+ ["Any"],
62
+ RecipeConfig(
63
+ input_resources={"battery_red": 3},
64
+ output_resources={"heart": 1},
65
+ cooldown=10,
66
+ ),
67
+ )
68
+ ],
69
+ )
70
+
71
+
72
+ def make_assembler_mine(color: str, type_id: int) -> AssemblerConfig:
73
+ return AssemblerConfig(
74
+ type_id=type_id,
75
+ recipes=[
76
+ (
77
+ ["Any"],
78
+ RecipeConfig(
79
+ output_resources={f"ore_{color}": 1},
80
+ cooldown=50,
81
+ ),
82
+ )
83
+ ],
84
+ )
85
+
86
+
87
+ assembler_mine_red = make_assembler_mine("red", 2)
88
+ assembler_mine_blue = make_assembler_mine("blue", 3)
89
+ assembler_mine_green = make_assembler_mine("green", 4)
90
+
91
+
92
+ def make_assembler_generator(color: str, type_id: int) -> AssemblerConfig:
93
+ return AssemblerConfig(
94
+ type_id=type_id,
95
+ recipes=[
96
+ (
97
+ ["Any"],
98
+ RecipeConfig(
99
+ input_resources={f"ore_{color}": 1},
100
+ output_resources={f"battery_{color}": 1},
101
+ cooldown=25,
102
+ ),
103
+ )
104
+ ],
105
+ )
106
+
107
+
108
+ assembler_generator_red = make_assembler_generator("red", 5)
109
+ assembler_generator_blue = make_assembler_generator("blue", 6)
110
+ assembler_generator_green = make_assembler_generator("green", 7)
111
+
112
+ assembler_lasery = AssemblerConfig(
113
+ type_id=15,
114
+ recipes=[
115
+ (
116
+ ["Any"],
117
+ RecipeConfig(
118
+ input_resources={"battery_red": 1, "ore_red": 2},
119
+ output_resources={"laser": 1},
120
+ cooldown=10,
121
+ ),
122
+ )
123
+ ],
124
+ )
125
+
126
+ assembler_armory = AssemblerConfig(
127
+ type_id=16,
128
+ recipes=[
129
+ (
130
+ ["Any"],
131
+ RecipeConfig(
132
+ input_resources={"ore_red": 3},
133
+ output_resources={"armor": 1},
134
+ cooldown=10,
135
+ ),
136
+ )
137
+ ],
138
+ )
139
+
140
+ assembler_lab = AssemblerConfig(
141
+ type_id=17,
142
+ recipes=[
143
+ (
144
+ ["Any"],
145
+ RecipeConfig(
146
+ input_resources={"battery_red": 1, "ore_red": 2},
147
+ output_resources={"laser": 1},
148
+ cooldown=10,
149
+ ),
150
+ )
151
+ ],
152
+ )
153
+
154
+ assembler_factory = AssemblerConfig(
155
+ type_id=18,
156
+ recipes=[
157
+ (
158
+ ["Any"],
159
+ RecipeConfig(
160
+ input_resources={"battery_red": 1, "ore_red": 2},
161
+ output_resources={"laser": 1},
162
+ cooldown=10,
163
+ ),
164
+ )
165
+ ],
166
+ )
167
+
168
+ assembler_temple = AssemblerConfig(
169
+ type_id=19,
170
+ recipes=[
171
+ (
172
+ ["Any"],
173
+ RecipeConfig(
174
+ input_resources={"battery_red": 1, "ore_red": 2},
175
+ output_resources={"laser": 1},
176
+ cooldown=10,
177
+ ),
178
+ )
179
+ ],
180
+ )
181
+
182
+
183
+ # Chest building definitions. Maybe not needed beyond the raw config?
184
+ def make_chest(
185
+ resource_type: str,
186
+ type_id: int,
187
+ deposit_positions: list[Literal["NW", "N", "NE", "W", "E", "SW", "S", "SE"]] | None = None,
188
+ withdrawal_positions: list[Literal["NW", "N", "NE", "W", "E", "SW", "S", "SE"]] | None = None,
189
+ ) -> ChestConfig:
190
+ """Create a chest configuration for a specific resource type."""
191
+ if deposit_positions is None:
192
+ deposit_positions = [] # Default to no deposit positions
193
+ if withdrawal_positions is None:
194
+ withdrawal_positions = [] # Default to no withdrawal positions
195
+
196
+ return ChestConfig(
197
+ type_id=type_id,
198
+ resource_type=resource_type,
199
+ deposit_positions=deposit_positions,
200
+ withdrawal_positions=withdrawal_positions,
201
+ )
202
+
203
+
204
+ # Example chest configurations
205
+ chest_heart = make_chest("heart", 20, deposit_positions=["N"], withdrawal_positions=["S"])
@@ -0,0 +1,85 @@
1
+ from mettagrid.config.mettagrid_config import ConverterConfig, WallConfig
2
+
3
+ wall = WallConfig(type_id=1)
4
+ block = WallConfig(type_id=14, swappable=True)
5
+
6
+ mine_red = ConverterConfig(
7
+ type_id=2,
8
+ input_resources={},
9
+ output_resources={},
10
+ cooldown=5,
11
+ )
12
+
13
+ mine_blue = ConverterConfig(
14
+ type_id=3,
15
+ input_resources={},
16
+ output_resources={},
17
+ cooldown=5,
18
+ )
19
+
20
+ mine_green = ConverterConfig(
21
+ type_id=4,
22
+ input_resources={},
23
+ output_resources={},
24
+ cooldown=5,
25
+ )
26
+
27
+ generator_red = ConverterConfig(
28
+ type_id=5,
29
+ input_resources={},
30
+ output_resources={},
31
+ cooldown=5,
32
+ )
33
+
34
+ generator_blue = ConverterConfig(
35
+ type_id=6,
36
+ input_resources={},
37
+ output_resources={},
38
+ cooldown=5,
39
+ )
40
+
41
+ generator_green = ConverterConfig(
42
+ type_id=7,
43
+ input_resources={},
44
+ output_resources={},
45
+ cooldown=5,
46
+ )
47
+
48
+ altar = ConverterConfig(
49
+ type_id=8,
50
+ input_resources={},
51
+ output_resources={},
52
+ cooldown=5,
53
+ )
54
+
55
+
56
+ lasery = ConverterConfig(
57
+ type_id=15,
58
+ input_resources={},
59
+ output_resources={},
60
+ cooldown=5,
61
+ )
62
+ armory = ConverterConfig(
63
+ type_id=16,
64
+ input_resources={},
65
+ output_resources={},
66
+ cooldown=5,
67
+ )
68
+ lab = ConverterConfig(
69
+ type_id=17,
70
+ input_resources={},
71
+ output_resources={},
72
+ cooldown=5,
73
+ )
74
+ factory = ConverterConfig(
75
+ type_id=18,
76
+ input_resources={},
77
+ output_resources={},
78
+ cooldown=5,
79
+ )
80
+ temple = ConverterConfig(
81
+ type_id=19,
82
+ input_resources={},
83
+ output_resources={},
84
+ cooldown=5,
85
+ )