88from arcade import (
99 BasicSprite ,
1010 Sprite ,
11- SpriteList ,
11+ SpriteSequence ,
1212 SpriteType ,
1313 check_for_collision ,
1414 check_for_collision_with_lists ,
2020from arcade .utils import Chain , copy_dunders_unimplemented
2121
2222
23- def _wiggle_until_free (colliding : Sprite , walls : Iterable [SpriteList ]) -> None :
23+ def _wiggle_until_free (colliding : Sprite , walls : Iterable [SpriteSequence [ BasicSprite ] ]) -> None :
2424 """Kludge to 'guess' a colliding sprite out of a collision.
2525
2626 It works by iterating over increasing wiggle sizes of 8 points
@@ -80,7 +80,7 @@ def _wiggle_until_free(colliding: Sprite, walls: Iterable[SpriteList]) -> None:
8080
8181
8282def _move_sprite (
83- moving_sprite : Sprite , can_collide : Iterable [SpriteList [SpriteType ]], ramp_up : bool
83+ moving_sprite : Sprite , can_collide : Iterable [SpriteSequence [SpriteType ]], ramp_up : bool
8484) -> list [SpriteType ]:
8585 """Update a sprite's angle and position, returning a list of collisions.
8686
@@ -273,11 +273,14 @@ def _move_sprite(
273273 return complete_hit_list
274274
275275
276- def _add_to_list (dest : list [SpriteList ], source : SpriteList | Iterable [SpriteList ] | None ) -> None :
277- """Helper function to add a SpriteList or list of SpriteLists to a list."""
276+ def _add_to_list (
277+ dest : list [SpriteSequence [SpriteType ]],
278+ source : SpriteSequence [SpriteType ] | Iterable [SpriteSequence [SpriteType ]] | None ,
279+ ) -> None :
280+ """Helper function to add a SpriteSequence or list of SpriteSequences to a list."""
278281 if not source :
279282 return
280- elif isinstance (source , SpriteList ):
283+ elif isinstance (source , SpriteSequence ):
281284 dest .append (source )
282285 else :
283286 dest .extend (source )
@@ -310,17 +313,17 @@ class PhysicsEngineSimple:
310313 def __init__ (
311314 self ,
312315 player_sprite : Sprite ,
313- walls : SpriteList | Iterable [SpriteList ] | None = None ,
316+ walls : SpriteSequence [ BasicSprite ] | Iterable [SpriteSequence [ BasicSprite ] ] | None = None ,
314317 ) -> None :
315318 self .player_sprite : Sprite = player_sprite
316319 """The player-controlled :py:class:`.Sprite`."""
317- self ._walls : list [SpriteList ] = []
320+ self ._walls : list [SpriteSequence [ BasicSprite ] ] = []
318321
319322 if walls :
320323 _add_to_list (self ._walls , walls )
321324
322325 @property
323- def walls (self ) -> list [SpriteList ]:
326+ def walls (self ) -> list [SpriteSequence [ BasicSprite ] ]:
324327 """Which :py:class:`.SpriteList` instances block player movement.
325328
326329 .. important:: Avoid moving sprites in these lists!
@@ -334,7 +337,10 @@ def walls(self) -> list[SpriteList]:
334337 return self ._walls
335338
336339 @walls .setter
337- def walls (self , walls : SpriteList | Iterable [SpriteList ] | None = None ) -> None :
340+ def walls (
341+ self ,
342+ walls : SpriteSequence [BasicSprite ] | Iterable [SpriteSequence [BasicSprite ]] | None = None ,
343+ ) -> None :
338344 if walls :
339345 _add_to_list (self ._walls , walls )
340346 else :
@@ -429,17 +435,17 @@ class PhysicsEnginePlatformer:
429435 def __init__ (
430436 self ,
431437 player_sprite : Sprite ,
432- platforms : SpriteList | Iterable [SpriteList ] | None = None ,
438+ platforms : SpriteSequence [ Sprite ] | Iterable [SpriteSequence [ Sprite ] ] | None = None ,
433439 gravity_constant : float = 0.5 ,
434- ladders : SpriteList | Iterable [SpriteList ] | None = None ,
435- walls : SpriteList | Iterable [SpriteList ] | None = None ,
440+ ladders : SpriteSequence [ BasicSprite ] | Iterable [SpriteSequence [ BasicSprite ] ] | None = None ,
441+ walls : SpriteSequence [ BasicSprite ] | Iterable [SpriteSequence [ BasicSprite ] ] | None = None ,
436442 ) -> None :
437443 if not isinstance (player_sprite , Sprite ):
438444 raise TypeError ("player_sprite must be a Sprite, not a basic_sprite!" )
439445
440- self ._ladders : list [SpriteList ] = []
441- self ._platforms : list [SpriteList ] = []
442- self ._walls : list [SpriteList ] = []
446+ self ._ladders : list [SpriteSequence [ BasicSprite ] ] = []
447+ self ._platforms : list [SpriteSequence [ Sprite ] ] = []
448+ self ._walls : list [SpriteSequence [ BasicSprite ] ] = []
443449 self ._all_obstacles = Chain (self ._walls , self ._platforms )
444450
445451 _add_to_list (self ._ladders , ladders )
@@ -517,7 +523,7 @@ def __init__(
517523 # TODO: figure out what do do with 15_ladders_moving_platforms.py
518524 # It's no longer used by any example or tutorial file
519525 @property
520- def ladders (self ) -> list [SpriteList ]:
526+ def ladders (self ) -> list [SpriteSequence [ BasicSprite ] ]:
521527 """Ladders turn off gravity while touched by the player.
522528
523529 This means that whenever the :py:attr:`player_sprite` collides
@@ -533,7 +539,10 @@ def ladders(self) -> list[SpriteList]:
533539 return self ._ladders
534540
535541 @ladders .setter
536- def ladders (self , ladders : SpriteList | Iterable [SpriteList ] | None = None ) -> None :
542+ def ladders (
543+ self ,
544+ ladders : SpriteSequence [BasicSprite ] | Iterable [SpriteSequence [BasicSprite ]] | None = None ,
545+ ) -> None :
537546 if ladders :
538547 _add_to_list (self ._ladders , ladders )
539548 else :
@@ -544,7 +553,7 @@ def ladders(self) -> None:
544553 self ._ladders .clear ()
545554
546555 @property
547- def platforms (self ) -> list [SpriteList ]:
556+ def platforms (self ) -> list [SpriteSequence [ Sprite ] ]:
548557 """:py:class:`~arcade.sprite_list.sprite_list.SpriteList` instances containing platforms.
549558
550559 .. important:: For best performance, put non-moving terrain in
@@ -575,7 +584,9 @@ def platforms(self) -> list[SpriteList]:
575584 return self ._platforms
576585
577586 @platforms .setter
578- def platforms (self , platforms : SpriteList | Iterable [SpriteList ] | None = None ) -> None :
587+ def platforms (
588+ self , platforms : SpriteSequence [Sprite ] | Iterable [SpriteSequence [Sprite ]] | None = None
589+ ) -> None :
579590 if platforms :
580591 _add_to_list (self ._platforms , platforms )
581592 else :
@@ -586,7 +597,7 @@ def platforms(self) -> None:
586597 self ._platforms .clear ()
587598
588599 @property
589- def walls (self ) -> list [SpriteList ]:
600+ def walls (self ) -> list [SpriteSequence [ BasicSprite ] ]:
590601 """Exposes the :py:class:`SpriteList` instances use as terrain.
591602
592603 .. important:: For best performance, only add non-moving sprites!
@@ -611,7 +622,10 @@ def walls(self) -> list[SpriteList]:
611622 return self ._walls
612623
613624 @walls .setter
614- def walls (self , walls : SpriteList | Iterable [SpriteList ] | None = None ) -> None :
625+ def walls (
626+ self ,
627+ walls : SpriteSequence [BasicSprite ] | Iterable [SpriteSequence [BasicSprite ]] | None = None ,
628+ ) -> None :
615629 if walls :
616630 _add_to_list (self ._walls , walls )
617631 else :
0 commit comments