tilemap-parser 4.2.2__tar.gz → 4.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.
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/PKG-INFO +1 -1
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/pyproject.toml +1 -1
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/src/tilemap_parser/__init__.py +1 -0
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/src/tilemap_parser/runtime/__init__.py +2 -0
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/src/tilemap_parser/runtime/object_collision.py +3 -10
- tilemap_parser-4.2.3/src/tilemap_parser/runtime/protocols.py +28 -0
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/src/tilemap_parser/runtime/tile_collision.py +12 -11
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/src/tilemap_parser.egg-info/PKG-INFO +1 -1
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/src/tilemap_parser.egg-info/SOURCES.txt +1 -0
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/LICENSE +0 -0
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/README.md +0 -0
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/setup.cfg +0 -0
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/src/tilemap_parser/parser/__init__.py +0 -0
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/src/tilemap_parser/parser/animation.py +0 -0
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/src/tilemap_parser/parser/collision.py +0 -0
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/src/tilemap_parser/parser/collision_loader.py +0 -0
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/src/tilemap_parser/parser/map_parse.py +0 -0
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/src/tilemap_parser/parser/node_parse.py +0 -0
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/src/tilemap_parser/parser/particle.py +0 -0
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/src/tilemap_parser/parser/tmx_converter.py +0 -0
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/src/tilemap_parser/runtime/animation_player.py +0 -0
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/src/tilemap_parser/runtime/area_node.py +0 -0
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/src/tilemap_parser/runtime/camera.py +0 -0
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/src/tilemap_parser/runtime/collision_cache.py +0 -0
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/src/tilemap_parser/runtime/map_loader.py +0 -0
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/src/tilemap_parser/runtime/map_object.py +0 -0
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/src/tilemap_parser/runtime/particles.py +0 -0
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/src/tilemap_parser/runtime/renderer.py +0 -0
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/src/tilemap_parser/utils/__init__.py +0 -0
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/src/tilemap_parser/utils/geometry.py +0 -0
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/src/tilemap_parser.egg-info/dependency_links.txt +0 -0
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/src/tilemap_parser.egg-info/requires.txt +0 -0
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/src/tilemap_parser.egg-info/top_level.txt +0 -0
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/tests/test_camera.py +0 -0
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/tests/test_collision.py +0 -0
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/tests/test_geometry.py +0 -0
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/tests/test_gid_collision.py +0 -0
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/tests/test_integration_animation.py +0 -0
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/tests/test_integration_collision.py +0 -0
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/tests/test_integration_map_loader.py +0 -0
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/tests/test_map_loader.py +0 -0
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/tests/test_map_object.py +0 -0
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/tests/test_move_grounded.py +0 -0
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/tests/test_object_collision.py +0 -0
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/tests/test_object_surfaces.py +0 -0
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/tests/test_particle_emitter.py +0 -0
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/tests/test_render_scale.py +0 -0
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/tests/test_tile_collision.py +0 -0
- {tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/tests/test_tmx_converter.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tilemap-parser
|
|
3
|
-
Version: 4.2.
|
|
3
|
+
Version: 4.2.3
|
|
4
4
|
Summary: Standalone parser/loader for tilemap-editor JSON maps, sprite animations, and collision detection runtime.
|
|
5
5
|
Author: tilemap parser contributors
|
|
6
6
|
License: GNU GENERAL PUBLIC LICENSE
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "tilemap-parser"
|
|
7
|
-
version = "4.2.
|
|
7
|
+
version = "4.2.3"
|
|
8
8
|
description = "Standalone parser/loader for tilemap-editor JSON maps, sprite animations, and collision detection runtime."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -18,6 +18,7 @@ from .tile_collision import (
|
|
|
18
18
|
MovementMode,
|
|
19
19
|
rect_vs_tilemap,
|
|
20
20
|
)
|
|
21
|
+
from .protocols import ICollidable
|
|
21
22
|
from .map_loader import TilemapData, load_map
|
|
22
23
|
from .object_collision import (
|
|
23
24
|
CollisionHit,
|
|
@@ -45,6 +46,7 @@ __all__ = [
|
|
|
45
46
|
"CollisionHit",
|
|
46
47
|
"CollisionResult",
|
|
47
48
|
"CollisionRunner",
|
|
49
|
+
"ICollidable",
|
|
48
50
|
"ICollidableObject",
|
|
49
51
|
"ICollidableSprite",
|
|
50
52
|
"LayerRenderStats",
|
{tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/src/tilemap_parser/runtime/object_collision.py
RENAMED
|
@@ -33,27 +33,20 @@ from ..utils.geometry import (
|
|
|
33
33
|
rect_vs_circle,
|
|
34
34
|
rect_vs_rect,
|
|
35
35
|
)
|
|
36
|
+
from .protocols import ICollidable
|
|
36
37
|
|
|
37
38
|
|
|
38
|
-
class ICollidableObject(Protocol):
|
|
39
|
+
class ICollidableObject(ICollidable, Protocol):
|
|
39
40
|
"""
|
|
40
41
|
Protocol for objects that can collide.
|
|
41
42
|
|
|
42
|
-
|
|
43
|
-
x: World X position
|
|
44
|
-
y: World Y position
|
|
45
|
-
collision_shape: Shape for collision
|
|
46
|
-
(RectangleShape, CircleShape, CapsuleShape, or CollisionPolygon)
|
|
43
|
+
All required attributes (x, y, collision_shape) are inherited from ICollidable.
|
|
47
44
|
|
|
48
45
|
Optional attributes (with defaults):
|
|
49
46
|
collision_layer: Layer this object is on (default: 1)
|
|
50
47
|
collision_mask: Layers to collide with (default: 0xFFFFFFFF)
|
|
51
48
|
"""
|
|
52
49
|
|
|
53
|
-
x: float
|
|
54
|
-
y: float
|
|
55
|
-
collision_shape: Union[RectangleShape, CircleShape, CapsuleShape, CollisionPolygon]
|
|
56
|
-
|
|
57
50
|
|
|
58
51
|
@dataclass(slots=True)
|
|
59
52
|
class CollisionHit:
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import Protocol, Union
|
|
4
|
+
|
|
5
|
+
from ..parser.collision import (
|
|
6
|
+
CapsuleShape,
|
|
7
|
+
CircleShape,
|
|
8
|
+
CollisionPolygon,
|
|
9
|
+
RectangleShape,
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class ICollidable(Protocol):
|
|
14
|
+
"""Base protocol for anything with a world position and collision shape.
|
|
15
|
+
|
|
16
|
+
This is the minimal interface for participating in collision detection.
|
|
17
|
+
All collidable protocols (ICollidableSprite, ICollidableObject) extend this.
|
|
18
|
+
|
|
19
|
+
Required attributes:
|
|
20
|
+
x (float): World X position
|
|
21
|
+
y (float): World Y position
|
|
22
|
+
collision_shape: Shape used for collision detection
|
|
23
|
+
(RectangleShape, CircleShape, CapsuleShape, or CollisionPolygon)
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
x: float
|
|
27
|
+
y: float
|
|
28
|
+
collision_shape: Union[RectangleShape, CircleShape, CapsuleShape, CollisionPolygon]
|
|
@@ -23,12 +23,13 @@ from ..parser.collision import (
|
|
|
23
23
|
RectangleShape,
|
|
24
24
|
TilesetCollision,
|
|
25
25
|
)
|
|
26
|
+
from .protocols import ICollidable
|
|
26
27
|
|
|
27
28
|
Point = Tuple[float, float]
|
|
28
29
|
Vector2 = Tuple[float, float]
|
|
29
30
|
|
|
30
31
|
|
|
31
|
-
class ICollidableSprite(Protocol):
|
|
32
|
+
class ICollidableSprite(ICollidable, Protocol):
|
|
32
33
|
"""
|
|
33
34
|
Interface that any sprite/character class must implement to use collision runners.
|
|
34
35
|
|
|
@@ -303,7 +304,7 @@ def _circle_polygon_collision_offset(
|
|
|
303
304
|
return False
|
|
304
305
|
|
|
305
306
|
|
|
306
|
-
def get_shape_bounds(sprite:
|
|
307
|
+
def get_shape_bounds(sprite: ICollidable) -> Tuple[float, float, float, float]:
|
|
307
308
|
"""Get AABB bounds for sprite (left, top, right, bottom)"""
|
|
308
309
|
shape = sprite.collision_shape
|
|
309
310
|
if isinstance(shape, RectangleShape):
|
|
@@ -328,7 +329,7 @@ def get_shape_bounds(sprite: ICollidableSprite) -> Tuple[float, float, float, fl
|
|
|
328
329
|
|
|
329
330
|
|
|
330
331
|
def check_sprite_polygon_collision(
|
|
331
|
-
sprite:
|
|
332
|
+
sprite: ICollidable, polygon: CollisionPolygon
|
|
332
333
|
) -> bool:
|
|
333
334
|
"""Check if sprite collides with a world-space polygon (legacy / public API)."""
|
|
334
335
|
shape = sprite.collision_shape
|
|
@@ -349,7 +350,7 @@ def check_sprite_polygon_collision(
|
|
|
349
350
|
|
|
350
351
|
|
|
351
352
|
def _check_sprite_polygon_offset(
|
|
352
|
-
sprite:
|
|
353
|
+
sprite: ICollidable,
|
|
353
354
|
polygon: CollisionPolygon,
|
|
354
355
|
ox: float,
|
|
355
356
|
oy: float,
|
|
@@ -489,7 +490,7 @@ class CollisionRunner:
|
|
|
489
490
|
self,
|
|
490
491
|
tileset_collision: TilesetCollision,
|
|
491
492
|
tile_map: dict,
|
|
492
|
-
sprite:
|
|
493
|
+
sprite: ICollidable,
|
|
493
494
|
margin: int = 1,
|
|
494
495
|
) -> List[CollisionPolygon]:
|
|
495
496
|
"""
|
|
@@ -529,7 +530,7 @@ class CollisionRunner:
|
|
|
529
530
|
|
|
530
531
|
def _collides_at(
|
|
531
532
|
self,
|
|
532
|
-
sprite:
|
|
533
|
+
sprite: ICollidable,
|
|
533
534
|
tileset_collision: TilesetCollision,
|
|
534
535
|
tile_map: dict,
|
|
535
536
|
margin: int = 1,
|
|
@@ -567,7 +568,7 @@ class CollisionRunner:
|
|
|
567
568
|
|
|
568
569
|
def _first_colliding_shape(
|
|
569
570
|
self,
|
|
570
|
-
sprite:
|
|
571
|
+
sprite: ICollidable,
|
|
571
572
|
tileset_collision: TilesetCollision,
|
|
572
573
|
tile_map: dict,
|
|
573
574
|
margin: int = 1,
|
|
@@ -603,7 +604,7 @@ class CollisionRunner:
|
|
|
603
604
|
|
|
604
605
|
def move_and_slide(
|
|
605
606
|
self,
|
|
606
|
-
sprite:
|
|
607
|
+
sprite: ICollidable,
|
|
607
608
|
tileset_collision: TilesetCollision,
|
|
608
609
|
tile_map: dict,
|
|
609
610
|
delta_x: float,
|
|
@@ -729,7 +730,7 @@ class CollisionRunner:
|
|
|
729
730
|
|
|
730
731
|
def _get_collision_normal_from_motion(
|
|
731
732
|
self,
|
|
732
|
-
sprite:
|
|
733
|
+
sprite: ICollidable,
|
|
733
734
|
polygon: CollisionPolygon,
|
|
734
735
|
ox: float,
|
|
735
736
|
oy: float,
|
|
@@ -1745,7 +1746,7 @@ class CollisionRunner:
|
|
|
1745
1746
|
|
|
1746
1747
|
def move_rpg(
|
|
1747
1748
|
self,
|
|
1748
|
-
sprite:
|
|
1749
|
+
sprite: ICollidable,
|
|
1749
1750
|
tileset_collision: TilesetCollision,
|
|
1750
1751
|
tile_map: dict,
|
|
1751
1752
|
delta_x: float,
|
|
@@ -1814,7 +1815,7 @@ class CollisionRunner:
|
|
|
1814
1815
|
|
|
1815
1816
|
def move(
|
|
1816
1817
|
self,
|
|
1817
|
-
sprite:
|
|
1818
|
+
sprite: ICollidable,
|
|
1818
1819
|
tileset_collision: TilesetCollision,
|
|
1819
1820
|
tile_map: dict,
|
|
1820
1821
|
delta_x: float = 0.0,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tilemap-parser
|
|
3
|
-
Version: 4.2.
|
|
3
|
+
Version: 4.2.3
|
|
4
4
|
Summary: Standalone parser/loader for tilemap-editor JSON maps, sprite animations, and collision detection runtime.
|
|
5
5
|
Author: tilemap parser contributors
|
|
6
6
|
License: GNU GENERAL PUBLIC LICENSE
|
|
@@ -24,6 +24,7 @@ src/tilemap_parser/runtime/map_loader.py
|
|
|
24
24
|
src/tilemap_parser/runtime/map_object.py
|
|
25
25
|
src/tilemap_parser/runtime/object_collision.py
|
|
26
26
|
src/tilemap_parser/runtime/particles.py
|
|
27
|
+
src/tilemap_parser/runtime/protocols.py
|
|
27
28
|
src/tilemap_parser/runtime/renderer.py
|
|
28
29
|
src/tilemap_parser/runtime/tile_collision.py
|
|
29
30
|
src/tilemap_parser/utils/__init__.py
|
|
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
|
{tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/src/tilemap_parser/runtime/animation_player.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
|
{tilemap_parser-4.2.2 → tilemap_parser-4.2.3}/src/tilemap_parser.egg-info/dependency_links.txt
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
|