dungeoncoder 0.2.2__tar.gz → 0.2.3__tar.gz

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.
Files changed (82) hide show
  1. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/PKG-INFO +1 -1
  2. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/__init__.py +1 -1
  3. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/dungeoncoder.py +30 -7
  4. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder.egg-info/PKG-INFO +1 -1
  5. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/LICENSE.txt +0 -0
  6. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/README.md +0 -0
  7. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/__main__.py +0 -0
  8. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_api_config.py +0 -0
  9. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/__init__.py +0 -0
  10. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/__init__.py +0 -0
  11. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/game/__init__.py +0 -0
  12. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/game/get_statistics.py +0 -0
  13. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/game/get_version.py +0 -0
  14. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/__init__.py +0 -0
  15. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/ask_oracle.py +0 -0
  16. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/configure.py +0 -0
  17. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/drop.py +0 -0
  18. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/get_inventory.py +0 -0
  19. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/get_items_at_position.py +0 -0
  20. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/interact.py +0 -0
  21. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/is_abyss_in_front.py +0 -0
  22. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/is_at_goal.py +0 -0
  23. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/is_collision_in_front.py +0 -0
  24. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/is_enemy_in_front.py +0 -0
  25. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/is_facing_north.py +0 -0
  26. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/is_switch_in_front.py +0 -0
  27. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/is_torch_in_front.py +0 -0
  28. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/move.py +0 -0
  29. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/peek_item_value.py +0 -0
  30. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/pickup.py +0 -0
  31. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/read_item_value.py +0 -0
  32. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/sense_goal.py +0 -0
  33. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/set_pace.py +0 -0
  34. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/turn_left.py +0 -0
  35. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/level/__init__.py +0 -0
  36. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/level/load_level.py +0 -0
  37. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/level/reset_level.py +0 -0
  38. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/client.py +0 -0
  39. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/errors.py +0 -0
  40. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/__init__.py +0 -0
  41. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/api_error_response.py +0 -0
  42. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/api_error_response_status.py +0 -0
  43. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/boolean_result.py +0 -0
  44. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/boolean_result_status.py +0 -0
  45. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/configure_params.py +0 -0
  46. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/distance_param.py +0 -0
  47. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/name_param.py +0 -0
  48. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/nullable_integer_result.py +0 -0
  49. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/nullable_integer_result_status.py +0 -0
  50. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/nullable_string_result.py +0 -0
  51. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/nullable_string_result_status.py +0 -0
  52. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/pace_params.py +0 -0
  53. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/statistics.py +0 -0
  54. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/statistics_result.py +0 -0
  55. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/statistics_result_status.py +0 -0
  56. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/string_array_result.py +0 -0
  57. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/string_array_result_status.py +0 -0
  58. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/tiled_level.py +0 -0
  59. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/version_result.py +0 -0
  60. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/version_result_result.py +0 -0
  61. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/version_result_status.py +0 -0
  62. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/types.py +0 -0
  63. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/asciimap.py +0 -0
  64. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/generator.py +0 -0
  65. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/packs/gelaende.json +0 -0
  66. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/packs/items.json +0 -0
  67. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/packs/station.json +0 -0
  68. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/packs/studio.json +0 -0
  69. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/packs/tilesets.json +0 -0
  70. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/packs/werkstatt.json +0 -0
  71. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/replay.py +0 -0
  72. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/requirements.txt +0 -0
  73. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/sim.py +0 -0
  74. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/testing.py +0 -0
  75. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/trace.py +0 -0
  76. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/variants.py +0 -0
  77. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder.egg-info/SOURCES.txt +0 -0
  78. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder.egg-info/dependency_links.txt +0 -0
  79. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder.egg-info/requires.txt +0 -0
  80. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder.egg-info/top_level.txt +0 -0
  81. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/pyproject.toml +0 -0
  82. {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dungeoncoder
3
- Version: 0.2.2
3
+ Version: 0.2.3
4
4
  Summary: Python API for Dungeon Coder: steer the hero from a script, in VS Code or in the built-in simulator
5
5
  License-Expression: MIT
6
6
  Project-URL: Homepage, https://github.com/mhobelsb/vsc_hm-dungeon-coder
@@ -1,4 +1,4 @@
1
1
  from .dungeoncoder import Game, Hero, use_simulator
2
2
 
3
3
  # The same as "version" in the extension's package.json (`npm run check:version`).
4
- __version__ = "0.2.2"
4
+ __version__ = "0.2.3"
@@ -339,18 +339,37 @@ class Game:
339
339
  """
340
340
 
341
341
  BASE_URL = DEFAULT_BASE_URL
342
-
343
- def __init__(self, level_file, seed: int | None = None):
342
+ SHOW_CALLS = None
343
+ """True or False: the list of the program's last calls in the game's corner, for every level
344
+ loaded after this (level property show_calls); None: as the level says (off unless it says on)."""
345
+ SHOW_SENSING = None
346
+ """True or False: the frames around the cells a sensor looked at, for every level loaded after
347
+ this (level property show_sensing); None: as the level says (on unless it says off)."""
348
+
349
+ def __init__(self, level_file, seed: int | None = None, show_calls: bool | None = None,
350
+ show_sensing: bool | None = None):
344
351
  """Loads the level. `seed` picks a variant of a level that has some (objects that may
345
- lie anywhere in a region, see variants.py): the same seed, the same variant."""
352
+ lie anywhere in a region, see variants.py): the same seed, the same variant.
353
+ `show_calls` and `show_sensing` (True or False) switch the list of the last calls and the
354
+ sensor frames on or off for this level; without them, Game.SHOW_CALLS and
355
+ Game.SHOW_SENSING decide, and if those are None, the level does."""
346
356
  _check_version(self.BASE_URL)
347
357
  if seed is not None and (type(seed) != int):
348
358
  print("Error: seed must be a whole number.")
349
359
  sys.exit(1)
360
+ display = {}
361
+ for name, value, default in (("show_calls", show_calls, self.SHOW_CALLS),
362
+ ("show_sensing", show_sensing, self.SHOW_SENSING)):
363
+ chosen = value if value is not None else default
364
+ if chosen is not None and type(chosen) != bool:
365
+ print(f"Error: {name} must be True or False (or None: as the level says).")
366
+ sys.exit(1)
367
+ if chosen is not None:
368
+ display[name] = chosen
350
369
  self.__level = self.Level(self.BASE_URL)
351
370
  try:
352
371
  trace.loading(level_file)
353
- loaded = self.__level.load(level_file, seed)
372
+ loaded = self.__level.load(level_file, seed, display)
354
373
  except FileNotFoundError:
355
374
  print(f"Error: Level file '{level_file}' not found. "
356
375
  f"Please check the path and that you opened the right folder in VS Code "
@@ -376,7 +395,8 @@ class Game:
376
395
  """The seed of this level (a generated level or a variant), or None."""
377
396
 
378
397
  @classmethod
379
- def generate(cls, seed: int | None = None, kind: str = "maze", **options) -> "Game":
398
+ def generate(cls, seed: int | None = None, kind: str = "maze", show_calls: bool | None = None,
399
+ show_sensing: bool | None = None, **options) -> "Game":
380
400
  """Loads a generated level; the same seed always gives the same level.
381
401
  Without a seed, a new level each time: its seed is printed and kept in game.seed.
382
402
 
@@ -396,7 +416,7 @@ class Game:
396
416
  path = os.path.join(tempfile.mkdtemp(prefix="dungeoncoder-"), f"{kind}_{seed}.txt")
397
417
  with open(path, "w", encoding="utf-8") as f:
398
418
  f.write(text)
399
- return cls(path)
419
+ return cls(path, show_calls=show_calls, show_sensing=show_sensing)
400
420
 
401
421
  def get_hero(self):
402
422
  return self.__hero
@@ -437,7 +457,7 @@ class Game:
437
457
  self._client = Client(base_url=base_url, timeout=httpx.Timeout(1))
438
458
  self.seed = None
439
459
 
440
- def load(self, filename, seed=None):
460
+ def load(self, filename, seed=None, display=None):
441
461
  """
442
462
  Loads a level from a Tiled JSON file, or builds it from an ASCII map
443
463
  (a file ending in .txt, see asciimap.py for the format).
@@ -469,6 +489,9 @@ class Game:
469
489
  elif chosen:
470
490
  print(f"Level variant {self.seed} (the same again: Game(\"{filename}\", seed={self.seed}))")
471
491
 
492
+ for name, value in (display or {}).items(): # show_calls, show_sensing from the program
493
+ properties = [p for p in level_data.get("properties", []) or [] if p.get("name") != name]
494
+ level_data["properties"] = properties + [{"name": name, "type": "bool", "value": value}]
472
495
  # a refused level (e.g. a missing asset pack) prints the game's explanation
473
496
  return _call(self._client, _load_level_api.sync_detailed, default=False,
474
497
  explain_refusal=True, body=TiledLevel.from_dict(level_data))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dungeoncoder
3
- Version: 0.2.2
3
+ Version: 0.2.3
4
4
  Summary: Python API for Dungeon Coder: steer the hero from a script, in VS Code or in the built-in simulator
5
5
  License-Expression: MIT
6
6
  Project-URL: Homepage, https://github.com/mhobelsb/vsc_hm-dungeon-coder
File without changes
File without changes
File without changes