8
8
from arcade import (
9
9
BasicSprite ,
10
10
Sprite ,
11
- SpriteList ,
11
+ SpriteSequence ,
12
12
SpriteType ,
13
13
check_for_collision ,
14
14
check_for_collision_with_lists ,
20
20
from arcade .utils import Chain , copy_dunders_unimplemented
21
21
22
22
23
- def _wiggle_until_free (colliding : Sprite , walls : Iterable [SpriteList ]) -> None :
23
+ def _wiggle_until_free (colliding : Sprite , walls : Iterable [SpriteSequence [ BasicSprite ] ]) -> None :
24
24
"""Kludge to 'guess' a colliding sprite out of a collision.
25
25
26
26
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:
80
80
81
81
82
82
def _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
84
84
) -> list [SpriteType ]:
85
85
"""Update a sprite's angle and position, returning a list of collisions.
86
86
@@ -273,11 +273,14 @@ def _move_sprite(
273
273
return complete_hit_list
274
274
275
275
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."""
278
281
if not source :
279
282
return
280
- elif isinstance (source , SpriteList ):
283
+ elif isinstance (source , SpriteSequence ):
281
284
dest .append (source )
282
285
else :
283
286
dest .extend (source )
@@ -310,17 +313,17 @@ class PhysicsEngineSimple:
310
313
def __init__ (
311
314
self ,
312
315
player_sprite : Sprite ,
313
- walls : SpriteList | Iterable [SpriteList ] | None = None ,
316
+ walls : SpriteSequence [ BasicSprite ] | Iterable [SpriteSequence [ BasicSprite ] ] | None = None ,
314
317
) -> None :
315
318
self .player_sprite : Sprite = player_sprite
316
319
"""The player-controlled :py:class:`.Sprite`."""
317
- self ._walls : list [SpriteList ] = []
320
+ self ._walls : list [SpriteSequence [ BasicSprite ] ] = []
318
321
319
322
if walls :
320
323
_add_to_list (self ._walls , walls )
321
324
322
325
@property
323
- def walls (self ) -> list [SpriteList ]:
326
+ def walls (self ) -> list [SpriteSequence [ BasicSprite ] ]:
324
327
"""Which :py:class:`.SpriteList` instances block player movement.
325
328
326
329
.. important:: Avoid moving sprites in these lists!
@@ -334,7 +337,10 @@ def walls(self) -> list[SpriteList]:
334
337
return self ._walls
335
338
336
339
@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 :
338
344
if walls :
339
345
_add_to_list (self ._walls , walls )
340
346
else :
@@ -429,17 +435,17 @@ class PhysicsEnginePlatformer:
429
435
def __init__ (
430
436
self ,
431
437
player_sprite : Sprite ,
432
- platforms : SpriteList | Iterable [SpriteList ] | None = None ,
438
+ platforms : SpriteSequence [ Sprite ] | Iterable [SpriteSequence [ Sprite ] ] | None = None ,
433
439
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 ,
436
442
) -> None :
437
443
if not isinstance (player_sprite , Sprite ):
438
444
raise TypeError ("player_sprite must be a Sprite, not a basic_sprite!" )
439
445
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 ] ] = []
443
449
self ._all_obstacles = Chain (self ._walls , self ._platforms )
444
450
445
451
_add_to_list (self ._ladders , ladders )
@@ -517,7 +523,7 @@ def __init__(
517
523
# TODO: figure out what do do with 15_ladders_moving_platforms.py
518
524
# It's no longer used by any example or tutorial file
519
525
@property
520
- def ladders (self ) -> list [SpriteList ]:
526
+ def ladders (self ) -> list [SpriteSequence [ BasicSprite ] ]:
521
527
"""Ladders turn off gravity while touched by the player.
522
528
523
529
This means that whenever the :py:attr:`player_sprite` collides
@@ -533,7 +539,10 @@ def ladders(self) -> list[SpriteList]:
533
539
return self ._ladders
534
540
535
541
@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 :
537
546
if ladders :
538
547
_add_to_list (self ._ladders , ladders )
539
548
else :
@@ -544,7 +553,7 @@ def ladders(self) -> None:
544
553
self ._ladders .clear ()
545
554
546
555
@property
547
- def platforms (self ) -> list [SpriteList ]:
556
+ def platforms (self ) -> list [SpriteSequence [ Sprite ] ]:
548
557
""":py:class:`~arcade.sprite_list.sprite_list.SpriteList` instances containing platforms.
549
558
550
559
.. important:: For best performance, put non-moving terrain in
@@ -575,7 +584,9 @@ def platforms(self) -> list[SpriteList]:
575
584
return self ._platforms
576
585
577
586
@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 :
579
590
if platforms :
580
591
_add_to_list (self ._platforms , platforms )
581
592
else :
@@ -586,7 +597,7 @@ def platforms(self) -> None:
586
597
self ._platforms .clear ()
587
598
588
599
@property
589
- def walls (self ) -> list [SpriteList ]:
600
+ def walls (self ) -> list [SpriteSequence [ BasicSprite ] ]:
590
601
"""Exposes the :py:class:`SpriteList` instances use as terrain.
591
602
592
603
.. important:: For best performance, only add non-moving sprites!
@@ -611,7 +622,10 @@ def walls(self) -> list[SpriteList]:
611
622
return self ._walls
612
623
613
624
@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 :
615
629
if walls :
616
630
_add_to_list (self ._walls , walls )
617
631
else :
0 commit comments