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.
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/PKG-INFO +1 -1
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/__init__.py +1 -1
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/dungeoncoder.py +30 -7
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder.egg-info/PKG-INFO +1 -1
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/LICENSE.txt +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/README.md +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/__main__.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_api_config.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/__init__.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/__init__.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/game/__init__.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/game/get_statistics.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/game/get_version.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/__init__.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/ask_oracle.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/configure.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/drop.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/get_inventory.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/get_items_at_position.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/interact.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/is_abyss_in_front.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/is_at_goal.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/is_collision_in_front.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/is_enemy_in_front.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/is_facing_north.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/is_switch_in_front.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/is_torch_in_front.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/move.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/peek_item_value.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/pickup.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/read_item_value.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/sense_goal.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/set_pace.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/turn_left.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/level/__init__.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/level/load_level.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/level/reset_level.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/client.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/errors.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/__init__.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/api_error_response.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/api_error_response_status.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/boolean_result.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/boolean_result_status.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/configure_params.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/distance_param.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/name_param.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/nullable_integer_result.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/nullable_integer_result_status.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/nullable_string_result.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/nullable_string_result_status.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/pace_params.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/statistics.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/statistics_result.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/statistics_result_status.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/string_array_result.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/string_array_result_status.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/tiled_level.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/version_result.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/version_result_result.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/version_result_status.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/types.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/asciimap.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/generator.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/packs/gelaende.json +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/packs/items.json +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/packs/station.json +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/packs/studio.json +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/packs/tilesets.json +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/packs/werkstatt.json +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/replay.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/requirements.txt +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/sim.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/testing.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/trace.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/variants.py +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder.egg-info/SOURCES.txt +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder.egg-info/dependency_links.txt +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder.egg-info/requires.txt +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder.egg-info/top_level.txt +0 -0
- {dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/pyproject.toml +0 -0
- {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.
|
|
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
|
|
@@ -339,18 +339,37 @@ class Game:
|
|
|
339
339
|
"""
|
|
340
340
|
|
|
341
341
|
BASE_URL = DEFAULT_BASE_URL
|
|
342
|
-
|
|
343
|
-
|
|
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",
|
|
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.
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/game/get_statistics.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/get_items_at_position.py
RENAMED
|
File without changes
|
|
File without changes
|
{dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/is_abyss_in_front.py
RENAMED
|
File without changes
|
|
File without changes
|
{dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/is_collision_in_front.py
RENAMED
|
File without changes
|
{dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/is_enemy_in_front.py
RENAMED
|
File without changes
|
{dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/is_facing_north.py
RENAMED
|
File without changes
|
{dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/is_switch_in_front.py
RENAMED
|
File without changes
|
{dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/is_torch_in_front.py
RENAMED
|
File without changes
|
|
File without changes
|
{dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/peek_item_value.py
RENAMED
|
File without changes
|
|
File without changes
|
{dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/api/hero/read_item_value.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/api_error_response.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/boolean_result_status.py
RENAMED
|
File without changes
|
{dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/configure_params.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/nullable_integer_result.py
RENAMED
|
File without changes
|
|
File without changes
|
{dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/nullable_string_result.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/statistics_result.py
RENAMED
|
File without changes
|
{dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/statistics_result_status.py
RENAMED
|
File without changes
|
{dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/string_array_result.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/version_result_result.py
RENAMED
|
File without changes
|
{dungeoncoder-0.2.2 → dungeoncoder-0.2.3}/dungeoncoder/_generated/models/version_result_status.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|