Remove deprecated sprite_number property from Sprite and Entity, closes #305

sprite_number was a legacy alias for sprite_index. All code should use
sprite_index directly. Removed from getsetters, setProperty/getProperty/
hasProperty in UISprite and UIEntity, animation property handling, and
type stubs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
John McCardle 2026-04-09 22:18:20 -04:00
commit c15d836e79
9 changed files with 20 additions and 26 deletions

View file

@ -154,13 +154,13 @@ void Animation::startEntity(std::shared_ptr<UIEntity> target) {
}
else if constexpr (std::is_same_v<T, int>) {
// For entities, we might need to handle sprite_index differently
if (targetProperty == "sprite_index" || targetProperty == "sprite_number") {
if (targetProperty == "sprite_index") {
startValue = target->sprite.getSpriteIndex();
}
}
else if constexpr (std::is_same_v<T, std::vector<int>>) {
// For sprite animation frame lists, get current sprite index
if (targetProperty == "sprite_index" || targetProperty == "sprite_number") {
if (targetProperty == "sprite_index") {
startValue = target->sprite.getSpriteIndex();
}
}

View file

@ -101,7 +101,7 @@ public:
}
private:
std::string targetProperty; // Property name to animate (e.g., "x", "color.r", "sprite_number")
std::string targetProperty; // Property name to animate (e.g., "x", "color.r", "sprite_index")
AnimationValue startValue; // Starting value (captured when animation starts)
AnimationValue targetValue; // Target value to animate to
float duration; // Animation duration in seconds

View file

@ -56,7 +56,7 @@ namespace mcrfpydef {
" property: Property name to animate. Valid properties depend on target type:\n"
" - Position/Size: 'x', 'y', 'w', 'h', 'pos', 'size'\n"
" - Appearance: 'fill_color', 'outline_color', 'outline', 'opacity'\n"
" - Sprite: 'sprite_index', 'sprite_number', 'scale'\n"
" - Sprite: 'sprite_index', 'scale'\n"
" - Grid: 'center', 'zoom'\n"
" - Caption: 'text'\n"
" - Sub-properties: 'fill_color.r', 'fill_color.g', 'fill_color.b', 'fill_color.a'\n"

View file

@ -1578,7 +1578,6 @@ PyGetSetDef UIEntity::getsetters[] = {
"Get: Returns the Grid or None. "
"Set: Assign a Grid to move entity, or None to remove from grid.", NULL},
{"sprite_index", (getter)UIEntity::get_spritenumber, (setter)UIEntity::set_spritenumber, "Sprite index on the texture on the display", NULL},
{"sprite_number", (getter)UIEntity::get_spritenumber, (setter)UIEntity::set_spritenumber, "Sprite index (DEPRECATED: use sprite_index instead)", NULL},
{"visible", (getter)UIEntity_get_visible, (setter)UIEntity_set_visible, "Visibility flag", NULL},
{"opacity", (getter)UIEntity_get_opacity, (setter)UIEntity_set_opacity, "Opacity (0.0 = transparent, 1.0 = opaque)", NULL},
{"name", (getter)UIEntity_get_name, (setter)UIEntity_set_name, "Name for finding elements", NULL},
@ -1675,7 +1674,7 @@ bool UIEntity::setProperty(const std::string& name, float value) {
}
bool UIEntity::setProperty(const std::string& name, int value) {
if (name == "sprite_index" || name == "sprite_number") {
if (name == "sprite_index") {
sprite.setSpriteIndex(value);
if (grid) grid->markDirty(); // #144 - Content change
return true;
@ -1718,7 +1717,7 @@ bool UIEntity::hasProperty(const std::string& name) const {
return true;
}
// Int properties
if (name == "sprite_index" || name == "sprite_number") {
if (name == "sprite_index") {
return true;
}
// #106: Shader uniform properties - delegate to sprite

View file

@ -406,7 +406,6 @@ PyGetSetDef UISprite::getsetters[] = {
{"scale_x", (getter)UISprite::get_float_member, (setter)UISprite::set_float_member, "Horizontal scale factor", (void*)3},
{"scale_y", (getter)UISprite::get_float_member, (setter)UISprite::set_float_member, "Vertical scale factor", (void*)4},
{"sprite_index", (getter)UISprite::get_int_member, (setter)UISprite::set_int_member, "Which sprite on the texture is shown", NULL},
{"sprite_number", (getter)UISprite::get_int_member, (setter)UISprite::set_int_member, "Sprite index (DEPRECATED: use sprite_index instead)", NULL},
{"texture", (getter)UISprite::get_texture, (setter)UISprite::set_texture, "Texture object", NULL},
{"on_click", (getter)UIDrawable::get_click, (setter)UIDrawable::set_click,
MCRF_PROPERTY(on_click,
@ -683,7 +682,7 @@ bool UISprite::setProperty(const std::string& name, float value) {
}
bool UISprite::setProperty(const std::string& name, int value) {
if (name == "sprite_index" || name == "sprite_number") {
if (name == "sprite_index") {
setSpriteIndex(value);
markDirty(); // #144 - Content change
return true;
@ -745,7 +744,7 @@ bool UISprite::getProperty(const std::string& name, float& value) const {
}
bool UISprite::getProperty(const std::string& name, int& value) const {
if (name == "sprite_index" || name == "sprite_number") {
if (name == "sprite_index") {
value = sprite_index;
return true;
}
@ -765,7 +764,7 @@ bool UISprite::hasProperty(const std::string& name) const {
return true;
}
// Int properties
if (name == "sprite_index" || name == "sprite_number") {
if (name == "sprite_index") {
return true;
}
// Vector2f properties

View file

@ -417,7 +417,6 @@ class Sprite(Drawable):
texture: Texture
sprite_index: int
sprite_number: int # Deprecated alias for sprite_index
scale: float
w: float # Read-only, computed from texture
h: float # Read-only, computed from texture
@ -865,7 +864,6 @@ class Entity(Drawable):
grid_y: float
texture: Texture
sprite_index: int
sprite_number: int # Deprecated alias for sprite_index
grid: Optional[Grid]
def at(self, grid_x: float, grid_y: float) -> None:

View file

@ -594,7 +594,6 @@ class Sprite(Drawable):
texture: Texture
sprite_index: int
sprite_number: int # Deprecated alias for sprite_index
scale: float
w: float # Read-only, computed from texture
h: float # Read-only, computed from texture
@ -1042,7 +1041,6 @@ class Entity(Drawable):
grid_y: float
texture: Texture
sprite_index: int
sprite_number: int # Deprecated alias for sprite_index
grid: Optional[Grid]
def at(self, grid_x: float, grid_y: float) -> None:

View file

@ -35,11 +35,11 @@ def test_Entity():
try:
print(f" Entity1 pos: {entity1.pos}")
print(f" Entity1 draw_pos: {entity1.draw_pos}")
print(f" Entity1 sprite_number: {entity1.sprite_number}")
print(f" Entity1 sprite_index: {entity1.sprite_index}")
# Modify properties
entity1.pos = mcrfpy.Vector(3, 3)
entity1.sprite_number = 5
entity1.sprite_index = 5
print(" Entity properties modified")
except Exception as e:
print(f"X Entity property access failed: {e}")

View file

@ -38,21 +38,21 @@ except AttributeError:
except Exception as e:
print(f"✗ Unexpected error setting texture: {e}")
# Test sprite_number property
# Test sprite_index property
try:
print(f"Sprite2 sprite_number: {sprite2.sprite_number}")
sprite2.sprite_number = 10
print(f"✓ Changed sprite_number to: {sprite2.sprite_number}")
print(f"Sprite2 sprite_index: {sprite2.sprite_index}")
sprite2.sprite_index = 10
print(f"sprite_index set to: {sprite2.sprite_index}")
except Exception as e:
print(f"✗ sprite_number property failed: {e}")
print(f"sprite_index property failed: {e}")
# Test sprite index validation (Issue #33)
try:
# Try to set invalid sprite index
sprite2.sprite_number = 9999
print("Should validate sprite index against texture range (Issue #33)")
sprite2.sprite_index = 9999
print("Should validate sprite index against texture range (Issue #33)")
except Exception as e:
print(f"Sprite index validation works: {e}")
print(f"Sprite index validation works: {e}")
# Create grid of sprites to show different indices
y_offset = 100