Skip to content

Commit 959d796

Browse files
authored
Finishing work for preemptively closed issue #2399 (#2415)
* Update scale `__init__` argument, and delete floating simple.py file * Adding correct typing to Sprite and AnimatedSprite for scale, and adding validation unit tests * Sprite now makes input scale a 2 length tuple rather than arbitrary in length * removing sprite.simple from quick index generation
1 parent 0444db5 commit 959d796

File tree

6 files changed

+25
-11
lines changed

6 files changed

+25
-11
lines changed

arcade/sprite/animated.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import math
66

77
from arcade import Texture
8+
from arcade.types import Point2
89

910
from .enums import (
1011
FACE_DOWN,
@@ -236,7 +237,7 @@ class AnimatedWalkingSprite(Sprite):
236237

237238
def __init__(
238239
self,
239-
scale: float = 1.0,
240+
scale: float | Point2 = 1.0,
240241
center_x: float = 0.0,
241242
center_y: float = 0.0,
242243
**kwargs,

arcade/sprite/base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ def __init__(
6565
self._depth = 0.0
6666
self._texture = texture
6767
width, height = texture.size
68-
self._scale = (scale, scale) if isinstance(scale, (float, int)) else scale
68+
self._scale = (scale, scale) if isinstance(scale, (float, int)) else (scale[0], scale[1])
6969
self._width = width * self._scale[0]
7070
self._height = height * self._scale[1]
7171
self._visible = bool(visible)

arcade/sprite/simple.py

Lines changed: 0 additions & 7 deletions
This file was deleted.

arcade/sprite/sprite.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ class Sprite(BasicSprite, PymunkMixin):
7070
def __init__(
7171
self,
7272
path_or_texture: PathOrTexture | None = None,
73-
scale: float = 1.0,
73+
scale: float | Point2 = 1.0,
7474
center_x: float = 0.0,
7575
center_y: float = 0.0,
7676
angle: float = 0.0,

tests/unit/sprite/test_sprite.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,27 @@ def test_sprite_rgb_property_basics():
125125
assert sprite.color.a == 15
126126
assert sprite.alpha == 15
127127

128+
def test_sprite_scale_constructor(window):
129+
sprite = arcade.BasicSprite(SPRITE_TEXTURE_GOLD_COIN, scale=2.0)
130+
assert sprite.scale == (2.0, 2.0)
131+
sprite = arcade.BasicSprite(SPRITE_TEXTURE_GOLD_COIN, scale=(2.0, 1.0))
132+
assert sprite.scale == (2.0, 1.0)
133+
sprite = arcade.Sprite(SPRITE_TEXTURE_GOLD_COIN, scale=3.0)
134+
assert sprite.scale == (3.0, 3.0)
135+
sprite = arcade.Sprite(SPRITE_TEXTURE_GOLD_COIN, scale=(3.0, 1.0))
136+
assert sprite.scale == (3.0, 1.0)
137+
sprite = arcade.Sprite(SPRITE_TEXTURE_GOLD_COIN, scale=(1.0, 2.0, 10.0, 100.0))
138+
assert sprite.scale == (1.0, 2.0)
139+
with pytest.raises(TypeError):
140+
sprite = arcade.sprite(SPRITE_TEXTURE_GOLD_COIN, scale = test_sprite_scale_constructor)
141+
142+
sprite = arcade.Sprite(SPRITE_TEXTURE_GOLD_COIN, scale=1.0)
143+
assert isinstance(sprite.scale, tuple)
144+
sprite = arcade.Sprite(SPRITE_TEXTURE_GOLD_COIN, scale=(1.0, 1.0))
145+
assert isinstance(sprite.scale, tuple)
146+
sprite = arcade.Sprite(SPRITE_TEXTURE_GOLD_COIN, scale=[1.0, 1.0])
147+
assert isinstance(sprite.scale, tuple)
148+
128149

129150
def test_sprite_scale_xy(window):
130151
sprite = arcade.SpriteSolidColor(20, 20, color=arcade.color.WHITE)

util/update_quick_index.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,6 @@
9999
"arcade.sprite",
100100
"arcade.sprite.base",
101101
"arcade.sprite.sprite",
102-
"arcade.sprite.simple",
103102
"arcade.sprite.colored",
104103
"arcade.sprite.mixins",
105104
"arcade.sprite.animated",

0 commit comments

Comments
 (0)