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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rwmap
3
- Version: 3.1.4
3
+ Version: 3.2.4
4
4
  Summary: 一个精简的铁锈战争TMX地图操作工具
5
5
  Author: KEND
6
6
  License-Expression: GPL-3.0-or-later
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "rwmap"
7
- version = "3.1.4"
7
+ version = "3.2.4"
8
8
  description = "一个精简的铁锈战争TMX地图操作工具"
9
9
  readme = "README.md"
10
10
  authors = [
@@ -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 | None:
40
- return next((prop for prop in self.properties if prop.name == name), None)
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 | None:
88
- return next((prop for prop in self.properties if prop.name == name), None)
89
-
90
- def layer(self, name: str) -> Layer | None:
91
- return next((layer for layer in self.layers if layer.name == name), None)
92
-
93
- def objectgroup(self, name: str) -> ObjectGroup | None:
94
- return next((og for og in self.objectgroups if og.name == name), None)
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 | None:
55
- return next((prop for prop in self.properties if prop.name == name), None)
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 | None:
180
- return next((prop for prop in self.properties if prop.name == name), None)
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 | None:
30
- return next((prop for prop in self.properties if prop.name == name), None)
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':
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rwmap
3
- Version: 3.1.4
3
+ Version: 3.2.4
4
4
  Summary: 一个精简的铁锈战争TMX地图操作工具
5
5
  Author: KEND
6
6
  License-Expression: GPL-3.0-or-later
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