Skip to content

Commit 0b0200f

Browse files
authored
update Scene to return SpriteList (#2689)
1 parent 65b5662 commit 0b0200f

File tree

1 file changed

+18
-7
lines changed

1 file changed

+18
-7
lines changed

arcade/scene.py

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
"""
1212

1313
from collections.abc import Iterable
14+
from typing import TypeVar
1415
from warnings import warn
1516

1617
from arcade import Sprite, SpriteList
@@ -20,6 +21,8 @@
2021

2122
__all__ = ["Scene", "SceneKeyError"]
2223

24+
_S = TypeVar("_S", bound=Sprite)
25+
2326

2427
class SceneKeyError(KeyError):
2528
"""
@@ -151,7 +154,7 @@ def __getitem__(self, key: str) -> SpriteList:
151154

152155
raise SceneKeyError(key)
153156

154-
def add_sprite(self, name: str, sprite: Sprite) -> None:
157+
def add_sprite(self, name: str, sprite: _S) -> _S:
155158
"""
156159
Add a Sprite to the SpriteList with the specified name.
157160
@@ -177,12 +180,14 @@ def add_sprite(self, name: str, sprite: Sprite) -> None:
177180
new_list.append(sprite)
178181
self.add_sprite_list(name=name, sprite_list=new_list)
179182

183+
return sprite
184+
180185
def add_sprite_list(
181186
self,
182187
name: str,
183188
use_spatial_hash: bool = False,
184189
sprite_list: SpriteList | None = None,
185-
) -> None:
190+
) -> SpriteList:
186191
"""
187192
Add a SpriteList to the scene with the specified name.
188193
@@ -207,14 +212,15 @@ def add_sprite_list(
207212
)
208213
self._name_mapping[name] = sprite_list
209214
self._sprite_lists.append(sprite_list)
215+
return sprite_list
210216

211217
def add_sprite_list_before(
212218
self,
213219
name: str,
214220
before: str,
215221
use_spatial_hash: bool = False,
216222
sprite_list: SpriteList | None = None,
217-
) -> None:
223+
) -> SpriteList:
218224
"""
219225
Add a sprite list to the scene with the specified name before another SpriteList.
220226
@@ -244,6 +250,7 @@ def add_sprite_list_before(
244250
before_list = self._name_mapping[before]
245251
index = self._sprite_lists.index(before_list)
246252
self._sprite_lists.insert(index, sprite_list)
253+
return sprite_list
247254

248255
def move_sprite_list_before(
249256
self,
@@ -279,7 +286,7 @@ def add_sprite_list_after(
279286
after: str,
280287
use_spatial_hash: bool = False,
281288
sprite_list: SpriteList | None = None,
282-
) -> None:
289+
) -> SpriteList:
283290
"""
284291
Add a SpriteList to the scene with the specified name after a specific SpriteList.
285292
@@ -309,6 +316,7 @@ def add_sprite_list_after(
309316
after_list = self._name_mapping[after]
310317
index = self._sprite_lists.index(after_list) + 1
311318
self._sprite_lists.insert(index, sprite_list)
319+
return sprite_list
312320

313321
def move_sprite_list_after(
314322
self,
@@ -338,19 +346,21 @@ def move_sprite_list_after(
338346
old_index = self._sprite_lists.index(name_list)
339347
self._sprite_lists.insert(new_index, self._sprite_lists.pop(old_index))
340348

341-
def remove_sprite_list_by_index(self, index: int) -> None:
349+
def remove_sprite_list_by_index(self, index: int) -> SpriteList:
342350
"""
343351
Remove a layer from the scene by its index in the draw order.
344352
345353
Args:
346354
index: The index of the sprite list to remove.
347355
"""
348-
self.remove_sprite_list_by_object(self._sprite_lists[index])
356+
sprite_list = self._sprite_lists[index]
357+
self.remove_sprite_list_by_object(sprite_list)
358+
return sprite_list
349359

350360
def remove_sprite_list_by_name(
351361
self,
352362
name: str,
353-
) -> None:
363+
) -> SpriteList:
354364
"""
355365
Remove a layer from the scene by its name.
356366
@@ -363,6 +373,7 @@ def remove_sprite_list_by_name(
363373
sprite_list = self._name_mapping[name]
364374
self._sprite_lists.remove(sprite_list)
365375
del self._name_mapping[name]
376+
return sprite_list
366377

367378
def remove_sprite_list_by_object(self, sprite_list: SpriteList) -> None:
368379
"""

0 commit comments

Comments
 (0)