the low-hanging fruit of pre-existing issues and standardizing the
Python interfaces
Special thanks to Claude Code, ~100k output tokens for this merge
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
commit 99f301e3a0
Author: John McCardle <mccardle.john@gmail.com>
Date: Sat Jul 5 16:25:32 2025 -0400
Add position tuple support and pos property to UI elements
closes#83, closes#84
- Issue #83: Add position tuple support to constructors
- Frame and Sprite now accept both (x, y) and ((x, y)) forms
- Also accept Vector objects as position arguments
- Caption and Entity already supported tuple/Vector forms
- Uses PyVector::from_arg for flexible position parsing
- Issue #84: Add pos property to Frame and Sprite
- Added pos getter that returns a Vector
- Added pos setter that accepts Vector or tuple
- Provides consistency with Caption and Entity which already had pos properties
- All UI elements now have a uniform way to get/set positions as Vectors
Both features improve API consistency and make it easier to work with positions.
commit 2f2b488fb5
Author: John McCardle <mccardle.john@gmail.com>
Date: Sat Jul 5 16:18:10 2025 -0400
Standardize sprite_index property and add scale_x/scale_y to UISprite
closes#81, closes#82
- Issue #81: Standardized property name to sprite_index across UISprite and UIEntity
- Added sprite_index as the primary property name
- Kept sprite_number as a deprecated alias for backward compatibility
- Updated repr() methods to use sprite_index
- Updated animation system to recognize both names
- Issue #82: Added scale_x and scale_y properties to UISprite
- Enables non-uniform scaling of sprites
- scale property still works for uniform scaling
- Both properties work with the animation system
All existing code using sprite_number continues to work due to backward compatibility.
commit 5a003a9aa5
Author: John McCardle <mccardle.john@gmail.com>
Date: Sat Jul 5 16:09:52 2025 -0400
Fix multiple low priority issues
closes#12, closes#80, closes#95, closes#96, closes#99
- Issue #12: Set tp_new to NULL for GridPoint and GridPointState to prevent instantiation from Python
- Issue #80: Renamed Caption.size to Caption.font_size for semantic clarity
- Issue #95: Fixed UICollection repr to show actual derived types instead of generic UIDrawable
- Issue #96: Added extend() method to UICollection for API consistency with UIEntityCollection
- Issue #99: Exposed read-only properties for Texture (sprite_width, sprite_height, sheet_width, sheet_height, sprite_count, source) and Font (family, source)
All issues have corresponding tests that verify the fixes work correctly.
commit e5affaf317
Author: John McCardle <mccardle.john@gmail.com>
Date: Sat Jul 5 15:50:09 2025 -0400
Fix critical issues: script loading, entity types, and color properties
- Issue #37: Fix Windows scripts subdirectory not checked
- Updated executeScript() to use executable_path() from platform.h
- Scripts now load correctly when working directory differs from executable
- Issue #76: Fix UIEntityCollection returns wrong type
- Updated UIEntityCollectionIter::next() to check for stored Python object
- Derived Entity classes now preserve their type when retrieved from collections
- Issue #9: Recreate RenderTexture when resized (already fixed)
- Confirmed RenderTexture recreation already implemented in set_size() and set_float_member()
- Uses 1.5x padding and 4096 max size limit
- Issue #79: Fix Color r, g, b, a properties return None
- Implemented get_member() and set_member() in PyColor.cpp
- Color component properties now work correctly with proper validation
- Additional fix: Grid.at() method signature
- Changed from METH_O to METH_VARARGS to accept two arguments
All fixes include comprehensive tests to verify functionality.
closes#37, closes#76, closes#9, closes#79
Closes#43
No segfault found in cos_play after completing the checklist. Maybe I accidentally fixed it...?
commit 6aa151aba3
Author: John McCardle <mccardle.john@gmail.com>
Date: Fri Apr 19 21:43:58 2024 -0400
UISprite.h/.cpp cleanup
commit ec0374ef50
Author: John McCardle <mccardle.john@gmail.com>
Date: Fri Apr 19 21:37:39 2024 -0400
UIGridPoint.h/.cpp reorganization
commit 2cb7339535
Author: John McCardle <mccardle.john@gmail.com>
Date: Fri Apr 19 21:19:25 2024 -0400
UIGrid.h/.cpp cleanup. I have reservations about the UIEntityCollection[Iter] classes + methods living there, but not enough to fix it right now.
commit 5d6af324bf
Author: John McCardle <mccardle.john@gmail.com>
Date: Thu Apr 18 22:14:57 2024 -0400
UIFrame - moving static method into class namespace; no type object access
commit 567218cd7b
Author: John McCardle <mccardle.john@gmail.com>
Date: Thu Apr 18 21:23:49 2024 -0400
UIEntity fixes for the UI.h split: There are segfaults in cos_play, I may have missed a type usage or something
commit 76693acd28
Author: John McCardle <mccardle.john@gmail.com>
Date: Sat Apr 13 00:18:37 2024 -0400
delete leftover comments
commit 9efe998a33
Author: John McCardle <mccardle.john@gmail.com>
Date: Sat Apr 13 00:17:43 2024 -0400
some work on UICaption and UICollection; fixing segfaults resulting from mcrfpydef namepace TypeObject usage
commit 714965da45
Author: John McCardle <mccardle.john@gmail.com>
Date: Fri Apr 12 14:15:00 2024 -0400
eliminate extra includes on UICaption
commit 8efa25878f
Author: John McCardle <mccardle.john@gmail.com>
Date: Wed Apr 10 23:41:14 2024 -0400
remove a lot of stuff
commit c186d8c7f3
Author: John McCardle <mccardle.john@gmail.com>
Date: Wed Apr 10 23:10:15 2024 -0400
We are compiling again! Started refactoring UICaption to be more idiomatic
commit 1b6e2a709b
Author: John McCardle <mccardle.john@gmail.com>
Date: Tue Apr 9 22:42:02 2024 -0400
Still not quite compiling; as predicted, a lot of interdependency and definition order bugs to untangle
commit aa7553a818
Author: John McCardle <mccardle.john@gmail.com>
Date: Tue Apr 9 22:41:20 2024 -0400
PyTexture clean up scribbles and experiments
commit c0201d989a
Author: John McCardle <mccardle.john@gmail.com>
Date: Mon Apr 8 22:55:00 2024 -0400
additional unsaved changes
commit 83a63a3093
Author: John McCardle <mccardle.john@gmail.com>
Date: Mon Apr 8 22:45:00 2024 -0400
doesn't compile, but UI.h/.cpp code has been divvy'd up.
refs #43 @2h
closes#60, closes#5, closes#68
The major functionality added here was proper use of types in the module, by importing after finalization.
commit 5009fa0fb9
Author: John McCardle <mccardle.john@gmail.com>
Date: Sun Apr 7 22:44:15 2024 -0400
PyFont - use the new standard method for instancing
commit a19781b56a
Author: John McCardle <mccardle.john@gmail.com>
Date: Sun Apr 7 15:21:17 2024 -0400
Many hours of pain & research behind this small commit. Safe object building by not messing with types before interpreter is fully initialized
commit 159658521c
Author: John McCardle <mccardle.john@gmail.com>
Date: Sun Mar 31 21:41:45 2024 -0400
Font mostly working, just a few weird bugs with the types of the default items added to the module
closes#18
commit b114ec3085
Author: John McCardle <mccardle.john@gmail.com>
Date: Thu Mar 21 22:22:35 2024 -0400
cleaning up for merge
commit d7228172c4
Author: John McCardle <mccardle.john@gmail.com>
Date: Thu Mar 21 21:39:15 2024 -0400
Messy, but monumental: PyTexture::pyObject works
this also coincidentally fixes a weird bug I encountered while
(mis?)using tp_alloc: by using PyType_GenericAlloc, I avoid the segfault
that tp_alloc sometimes causes. See the horrible UIDrawable retrieval
macro that I use in UI.h for a workaround that can probably be replaced
with this technique
commit 2cf8f94310
Author: John McCardle <mccardle.john@gmail.com>
Date: Wed Mar 20 21:16:52 2024 -0400
Radical new example pattern for exposing a C++ class to Python
commit 84a8886da2
Author: John McCardle <mccardle.john@gmail.com>
Date: Sun Mar 17 16:29:33 2024 -0400
Fixed render issue with UIGrid / PyTexture: wasn't positioning or scaling properly after fetching sprite
commit 20f80c4114
Author: John McCardle <mccardle.john@gmail.com>
Date: Sun Mar 17 16:23:52 2024 -0400
Fixed sprite indexing error in PyTexture; needs non-square sprite tests, but feeling confident!
commit afd4ff1925
Author: John McCardle <mccardle.john@gmail.com>
Date: Sat Mar 16 21:53:24 2024 -0400
good progress, we're building again. Issue with Grid (tile sprite) textures and I think the sprite indexes are being calculated wrong (x and y transposed?)
commit bfd33102d1
Author: John McCardle <mccardle.john@gmail.com>
Date: Sat Mar 16 14:52:35 2024 -0400
Squashed basically all the compile bugs in UISprite, but UIEntity and UIGrid use textures as well, so they need to be fixed too before the project will build again
commit 47d0e34a17
Author: John McCardle <mccardle.john@gmail.com>
Date: Sat Mar 16 11:31:39 2024 -0400
Initial PyTexture class
no testing done.
should enable rectangular (non-square) textures
"sprite" method; let's just overwrite sprites with texture coords
Hoping to replace awful code like:
`self->data->sprite.sprite.setTextureRect(self->data->sprite.itex->spriteCoordinates(val));`
with something like:
`self->data->sprite = self->data->texture->sprite(val);`