rwmap 3.1.4__tar.gz → 3.2.4__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.
- {rwmap-3.1.4/src/rwmap.egg-info → rwmap-3.2.4}/PKG-INFO +1 -1
- {rwmap-3.1.4 → rwmap-3.2.4}/pyproject.toml +1 -1
- {rwmap-3.1.4 → rwmap-3.2.4}/src/rwmap/layers.py +5 -2
- {rwmap-3.1.4 → rwmap-3.2.4}/src/rwmap/maps.py +17 -8
- {rwmap-3.1.4 → rwmap-3.2.4}/src/rwmap/objects.py +10 -4
- {rwmap-3.1.4 → rwmap-3.2.4}/src/rwmap/rw/factories.py +0 -2
- {rwmap-3.1.4 → rwmap-3.2.4}/src/rwmap/rw/rwmaps.py +0 -7
- {rwmap-3.1.4 → rwmap-3.2.4}/src/rwmap/tiles.py +5 -2
- {rwmap-3.1.4 → rwmap-3.2.4/src/rwmap.egg-info}/PKG-INFO +1 -1
- {rwmap-3.1.4 → rwmap-3.2.4}/LICENSE.txt +0 -0
- {rwmap-3.1.4 → rwmap-3.2.4}/README.md +0 -0
- {rwmap-3.1.4 → rwmap-3.2.4}/setup.cfg +0 -0
- {rwmap-3.1.4 → rwmap-3.2.4}/src/rwmap/__init__.py +0 -0
- {rwmap-3.1.4 → rwmap-3.2.4}/src/rwmap/properties.py +0 -0
- {rwmap-3.1.4 → rwmap-3.2.4}/src/rwmap/rw/__init__.py +0 -0
- {rwmap-3.1.4 → rwmap-3.2.4}/src/rwmap/rw/triggers.py +0 -0
- {rwmap-3.1.4 → rwmap-3.2.4}/src/rwmap/rw/units.py +0 -0
- {rwmap-3.1.4 → rwmap-3.2.4}/src/rwmap/templates.py +0 -0
- {rwmap-3.1.4 → rwmap-3.2.4}/src/rwmap.egg-info/SOURCES.txt +0 -0
- {rwmap-3.1.4 → rwmap-3.2.4}/src/rwmap.egg-info/dependency_links.txt +0 -0
- {rwmap-3.1.4 → rwmap-3.2.4}/src/rwmap.egg-info/top_level.txt +0 -0
|
@@ -36,8 +36,11 @@ class Layer:
|
|
|
36
36
|
self.properties = properties or []
|
|
37
37
|
self.data = data[:] if data is not None else [0] * (width * height)
|
|
38
38
|
|
|
39
|
-
def property(self, name: str) -> Property
|
|
40
|
-
|
|
39
|
+
def property(self, name: str) -> Property:
|
|
40
|
+
try:
|
|
41
|
+
return next(prop for prop in self.properties if prop.name == name)
|
|
42
|
+
except StopIteration:
|
|
43
|
+
raise KeyError(f"Property '{name}' not found")
|
|
41
44
|
|
|
42
45
|
def get_tile(self, key: Tuple[int, int]) -> int:
|
|
43
46
|
x, y = key
|
|
@@ -84,14 +84,23 @@ class Map:
|
|
|
84
84
|
tree = ET.ElementTree(root)
|
|
85
85
|
tree.write(out_path, encoding=encoding, xml_declaration=True)
|
|
86
86
|
|
|
87
|
-
def property(self, name: str) -> Property
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
def
|
|
94
|
-
|
|
87
|
+
def property(self, name: str) -> Property:
|
|
88
|
+
try:
|
|
89
|
+
return next(prop for prop in self.properties if prop.name == name)
|
|
90
|
+
except StopIteration:
|
|
91
|
+
raise KeyError(f"Property '{name}' not found")
|
|
92
|
+
|
|
93
|
+
def layer(self, name: str) -> Layer:
|
|
94
|
+
try:
|
|
95
|
+
return next((layer for layer in self.layers if layer.name == name))
|
|
96
|
+
except StopIteration:
|
|
97
|
+
raise KeyError(f"Layer '{name}' not found")
|
|
98
|
+
|
|
99
|
+
def objectgroup(self, name: str) -> ObjectGroup:
|
|
100
|
+
try:
|
|
101
|
+
return next((og for og in self.objectgroups if og.name == name))
|
|
102
|
+
except StopIteration:
|
|
103
|
+
raise KeyError(f"ObjectGroup '{name}' not found")
|
|
95
104
|
|
|
96
105
|
|
|
97
106
|
def get_tileset_by_gid(self, gid: int) -> Optional[Tileset]:
|
|
@@ -51,8 +51,11 @@ class Object:
|
|
|
51
51
|
self.text = text
|
|
52
52
|
self.properties = properties or []
|
|
53
53
|
|
|
54
|
-
def property(self, name: str) -> Property
|
|
55
|
-
|
|
54
|
+
def property(self, name: str) -> Property:
|
|
55
|
+
try:
|
|
56
|
+
return next(prop for prop in self.properties if prop.name == name)
|
|
57
|
+
except StopIteration:
|
|
58
|
+
raise KeyError(f"Property '{name}' not found")
|
|
56
59
|
|
|
57
60
|
def set(self, **kwargs: Any) -> 'Object':
|
|
58
61
|
for k, v in kwargs.items():
|
|
@@ -176,8 +179,11 @@ class ObjectGroup:
|
|
|
176
179
|
self.offsety = offsety
|
|
177
180
|
self.properties = properties or []
|
|
178
181
|
|
|
179
|
-
def property(self, name: str) -> Property
|
|
180
|
-
|
|
182
|
+
def property(self, name: str) -> Property:
|
|
183
|
+
try:
|
|
184
|
+
return next(prop for prop in self.properties if prop.name == name)
|
|
185
|
+
except StopIteration:
|
|
186
|
+
raise KeyError(f"Property '{name}' not found")
|
|
181
187
|
|
|
182
188
|
def add(self, obj: Object) -> 'ObjectGroup':
|
|
183
189
|
self.objects.append(obj)
|
|
@@ -105,13 +105,11 @@ def unit_add(
|
|
|
105
105
|
|
|
106
106
|
def unit_remove(
|
|
107
107
|
x: float, y: float, width: float, height: float,
|
|
108
|
-
team: int = 0,
|
|
109
108
|
onlyIfEmpty: bool = False,
|
|
110
109
|
name: Optional[str] = None,
|
|
111
110
|
**kwargs
|
|
112
111
|
) -> Trigger:
|
|
113
112
|
obj = Trigger(name=name or f"remove_{x}_{y}", type="unitRemove", x=x, y=y, width=width, height=height)
|
|
114
|
-
obj.set(team=team)
|
|
115
113
|
if onlyIfEmpty:
|
|
116
114
|
obj.set(onlyIfEmpty=True)
|
|
117
115
|
for k, v in kwargs.items():
|
|
@@ -11,12 +11,10 @@ class RwMap(Map):
|
|
|
11
11
|
def __init__(self, path: Optional[str] = None) -> None:
|
|
12
12
|
super().__init__(path=path)
|
|
13
13
|
|
|
14
|
-
# ---------- 触发器图层 ----------
|
|
15
14
|
@property
|
|
16
15
|
def triggers(self) -> List[Trigger]:
|
|
17
16
|
og = self.objectgroup("Triggers")
|
|
18
17
|
if og is None:
|
|
19
|
-
# 自动创建空的 Triggers 图层并添加到地图
|
|
20
18
|
og = ObjectGroup(name="Triggers", objects=[])
|
|
21
19
|
self.objectgroups.append(og)
|
|
22
20
|
return cast(List[Trigger], og.objects)
|
|
@@ -59,19 +57,14 @@ class RwMap(Map):
|
|
|
59
57
|
tile_size: int = 20,
|
|
60
58
|
layer_names: Optional[List[str]] = None,
|
|
61
59
|
) -> "RwMap":
|
|
62
|
-
"""创建一个空地图,包含指定的图层和默认的 Triggers 图层。"""
|
|
63
60
|
if layer_names is None:
|
|
64
61
|
layer_names = ["Ground", "Items", "Units", "Set"]
|
|
65
|
-
|
|
66
62
|
m = cls()
|
|
67
63
|
m.width = width
|
|
68
64
|
m.height = height
|
|
69
65
|
m.tilewidth = tile_size
|
|
70
66
|
m.tileheight = tile_size
|
|
71
|
-
|
|
72
67
|
for name in layer_names:
|
|
73
68
|
m.layers.append(Layer(name=name, width=width, height=height))
|
|
74
|
-
|
|
75
69
|
_ = m.triggers
|
|
76
|
-
|
|
77
70
|
return m
|
|
@@ -26,8 +26,11 @@ class Tile:
|
|
|
26
26
|
self.image_height = image_height
|
|
27
27
|
self.image_trans = image_trans
|
|
28
28
|
|
|
29
|
-
def property(self, name: str) -> Property
|
|
30
|
-
|
|
29
|
+
def property(self, name: str) -> Property:
|
|
30
|
+
try:
|
|
31
|
+
return next(prop for prop in self.properties if prop.name == name)
|
|
32
|
+
except StopIteration:
|
|
33
|
+
raise KeyError(f"Property '{name}' not found")
|
|
31
34
|
|
|
32
35
|
@classmethod
|
|
33
36
|
def from_xml(cls, elem: ET.Element) -> 'Tile':
|
|
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
|