feat: stabilize test suite and add UIDrawable methods
- Add visible, opacity properties to all UI classes (#87, #88) - Add get_bounds(), move(), resize() methods to UIDrawable (#89, #98) - Create UIDrawable_methods.h with template implementations - Fix test termination issues - all tests now exit properly - Fix test_sprite_texture_swap.py click handler signature - Fix test_drawable_base.py segfault in headless mode - Convert audio objects to pointers for cleanup (OpenAL warning persists) - Remove debug print statements from UICaption - Special handling for UIEntity to delegate drawable methods to sprite All test files are now "airtight" - they complete successfully, terminate on their own, and handle edge cases properly. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
cc9b5c8f88
commit
ee6550bf63
15 changed files with 380 additions and 35 deletions
|
|
@ -5,6 +5,7 @@
|
|||
#include "PyObjectUtils.h"
|
||||
#include "PyVector.h"
|
||||
#include "PyPositionHelper.h"
|
||||
#include "UIDrawable_methods.h"
|
||||
|
||||
|
||||
UIEntity::UIEntity()
|
||||
|
|
@ -362,6 +363,18 @@ PyMethodDef UIEntity::methods[] = {
|
|||
{NULL, NULL, 0, NULL}
|
||||
};
|
||||
|
||||
// Define the PyObjectType alias for the macros
|
||||
typedef PyUIEntityObject PyObjectType;
|
||||
|
||||
// Combine base methods with entity-specific methods
|
||||
PyMethodDef UIEntity_all_methods[] = {
|
||||
UIDRAWABLE_METHODS,
|
||||
{"at", (PyCFunction)UIEntity::at, METH_O},
|
||||
{"index", (PyCFunction)UIEntity::index, METH_NOARGS, "Return the index of this entity in its grid's entity collection"},
|
||||
{"die", (PyCFunction)UIEntity::die, METH_NOARGS, "Remove this entity from its grid"},
|
||||
{NULL} // Sentinel
|
||||
};
|
||||
|
||||
PyGetSetDef UIEntity::getsetters[] = {
|
||||
{"draw_pos", (getter)UIEntity::get_position, (setter)UIEntity::set_position, "Entity position (graphically)", (void*)0},
|
||||
{"pos", (getter)UIEntity::get_position, (setter)UIEntity::set_position, "Entity position (integer grid coordinates)", (void*)1},
|
||||
|
|
@ -370,6 +383,7 @@ PyGetSetDef UIEntity::getsetters[] = {
|
|||
{"sprite_number", (getter)UIEntity::get_spritenumber, (setter)UIEntity::set_spritenumber, "Sprite index on the texture on the display (deprecated: use sprite_index)", NULL},
|
||||
{"x", (getter)UIEntity::get_float_member, (setter)UIEntity::set_float_member, "Entity x position", (void*)0},
|
||||
{"y", (getter)UIEntity::get_float_member, (setter)UIEntity::set_float_member, "Entity y position", (void*)1},
|
||||
UIDRAWABLE_GETSETTERS,
|
||||
{NULL} /* Sentinel */
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue