McRogueFace/src
John McCardle 6bf5c451a3 Add composite sprite_grid for multi-tile entities, closes #237
Entities can now specify per-tile sprite indices via the sprite_grid
property. When set, each tile in a multi-tile entity renders its own
sprite from the texture atlas instead of the single entity sprite.

API:
  entity.tile_size = (3, 2)
  entity.sprite_grid = [[10, 11, 12], [20, 21, 22]]
  entity.sprite_grid = None  # revert to single sprite

Accepts nested lists, flat lists, or tuples. Use -1 for empty tiles.
Dimensions must match tile_width x tile_height.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 04:15:06 -04:00
..
3d Phase 1: Safety & performance foundation for Grid/Entity overhaul 2026-03-15 21:48:24 -04:00
audio Audio fixes: gain() DSP effect, sfxr phase wrap, SDL2 backend compat 2026-02-20 23:17:41 -05:00
ldtk LDtk import support 2026-02-07 11:34:38 -05:00
platform SDL key scancode fixes (7DRL 2026 hotfix) 2026-03-07 10:08:59 -05:00
scripts Remove camelCase module functions (setScale, findAll, getMetrics, setDevConsole), closes #304 2026-04-10 01:07:22 -04:00
scripts_demo Fix demo game fog layer accumulation and web IDBFS mkdir race 2026-04-10 02:19:19 -04:00
scripts_playground opacity + animation fixes 2026-02-03 12:18:21 -05:00
tiled Tiled XML/JSON import support 2026-02-06 21:43:03 -05:00
ActionCode.h Add MCRF_HEADLESS compile-time build option for #158 2026-01-30 23:09:07 -05:00
Animation.cpp Remove deprecated sprite_number property from Sprite and Entity, closes #305 2026-04-09 22:18:20 -04:00
Animation.h Remove deprecated sprite_number property from Sprite and Entity, closes #305 2026-04-09 22:18:20 -04:00
BenchmarkLogger.cpp feat: Add work_time_ms to benchmark logging for load analysis 2025-11-28 16:13:40 -05:00
BenchmarkLogger.h feat: Add work_time_ms to benchmark logging for load analysis 2025-11-28 16:13:40 -05:00
CommandLineParser.cpp WASM Python integration milestone - game.py runs in browser 2026-01-31 05:15:11 -05:00
CommandLineParser.h Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
Common.h Add SDL2+OpenGL ES 2 renderer backend for Emscripten/WebGL 2026-01-31 11:13:15 -05:00
emscripten_pre.js Add Emscripten shell and pre-JS for browser compatibility 2026-01-31 14:36:22 -05:00
EntityBehavior.cpp Phase 3: Behavior system with grid.step() turn manager 2026-03-15 22:14:02 -04:00
EntityBehavior.h Phase 3: Behavior system with grid.step() turn manager 2026-03-15 22:14:02 -04:00
GameEngine.cpp Windows fix: path doesn't require mode 2026-02-28 11:53:16 -05:00
GameEngine.h Animation and Scene clean up functions. Playground build target 2026-02-01 21:17:29 -05:00
GridChunk.cpp Phase 4.1: Extract GridData base class from UIGrid (#252, #270, #271, #277) 2026-03-16 07:45:12 -04:00
GridChunk.h Phase 4.1: Extract GridData base class from UIGrid (#252, #270, #271, #277) 2026-03-16 07:45:12 -04:00
GridData.cpp Null parent_grid pointers in GridData destructor, closes #270, closes #271, closes #277 2026-04-10 01:34:33 -04:00
GridData.h Grid/GridView API unification: mcrfpy.Grid now returns GridView, closes #252 2026-04-04 04:34:11 -04:00
GridLayers.cpp Grid/GridView API unification: mcrfpy.Grid now returns GridView, closes #252 2026-04-04 04:34:11 -04:00
GridLayers.h Fix grid layers with z_index=0 rendering on top of entities, closes #257 2026-04-10 01:07:08 -04:00
HeadlessRenderer.cpp Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
HeadlessRenderer.h Add MCRF_HEADLESS compile-time build option for #158 2026-01-30 23:09:07 -05:00
ImGuiConsole.cpp Add SDL2+OpenGL ES 2 renderer backend for Emscripten/WebGL 2026-01-31 11:13:15 -05:00
ImGuiConsole.h Add SDL2+OpenGL ES 2 renderer backend for Emscripten/WebGL 2026-01-31 11:13:15 -05:00
ImGuiSceneExplorer.cpp Phase 4.2: Add GridView UIDrawable type (addresses #252) 2026-03-16 08:41:44 -04:00
ImGuiSceneExplorer.h Add SDL2+OpenGL ES 2 renderer backend for Emscripten/WebGL 2026-01-31 11:13:15 -05:00
IndexTexture.cpp Refactor: Python 3.12, build libtcod & SFML from source. Cmake build. Directory cleanup 2024-02-24 22:48:39 -05:00
IndexTexture.h Refactor: Python 3.12, build libtcod & SFML from source. Cmake build. Directory cleanup 2024-02-24 22:48:39 -05:00
main.cpp Add MCRF_HEADLESS compile-time build option for #158 2026-01-30 23:09:07 -05:00
MapOps.h DiscreteMap class - mask for operations or uint8 tile data 2026-02-03 20:36:42 -05:00
McRFPy_API.cpp Remove camelCase module functions (setScale, findAll, getMetrics, setDevConsole), closes #304 2026-04-10 01:07:22 -04:00
McRFPy_API.h Animation and Scene clean up functions. Playground build target 2026-02-01 21:17:29 -05:00
McRFPy_Automation.cpp Replace PyObject_GetAttrString with direct type references 2026-03-07 23:18:42 -05:00
McRFPy_Automation.h Add MCRF_HEADLESS compile-time build option for #158 2026-01-30 23:09:07 -05:00
McRFPy_Doc.h feat: add documentation macro system header 2025-10-30 11:16:44 -04:00
McRogueFaceConfig.h feat: Exit on first Python callback exception (closes #133) 2025-11-26 10:26:30 -05:00
McRogueFaceVersion.h Version bump: 0.2.7-prerelease-7drl2026 (d496959) -> 0.2.8-7DRL-2026 2026-02-28 11:55:14 -05:00
Profiler.cpp feat: Add comprehensive profiling system with F3 overlay 2025-10-25 00:45:44 -04:00
Profiler.h feat: Add comprehensive profiling system with F3 overlay 2025-10-25 00:45:44 -04:00
ProfilerOverlay.cpp feat: Add comprehensive profiling system with F3 overlay 2025-10-25 00:45:44 -04:00
PyAlignment.cpp Alignment: reactive or automatically calculated repositioning of UIDrawables on their parent 2026-01-13 20:40:34 -05:00
PyAlignment.h Alignment: reactive or automatically calculated repositioning of UIDrawables on their parent 2026-01-13 20:40:34 -05:00
PyAnimation.cpp Grid/GridView API unification: mcrfpy.Grid now returns GridView, closes #252 2026-04-04 04:34:11 -04:00
PyAnimation.h Remove deprecated sprite_number property from Sprite and Entity, closes #305 2026-04-09 22:18:20 -04:00
PyBehavior.cpp Phase 2: Entity data model extensions for behavior system 2026-03-15 22:05:06 -04:00
PyBehavior.h Phase 2: Entity data model extensions for behavior system 2026-03-15 22:05:06 -04:00
PyBSP.cpp Replace PyObject_GetAttrString with direct type references 2026-03-07 23:18:42 -05:00
PyBSP.h Add MCRF_HEADLESS compile-time build option for #158 2026-01-30 23:09:07 -05:00
PyCallable.cpp Replace PyObject_GetAttrString with direct type references 2026-03-07 23:18:42 -05:00
PyCallable.h Simplify on_enter/on_exit callbacks to position-only signature 2026-01-28 17:36:02 -05:00
PyColor.cpp Add Color.__eq__/__ne__ for value comparison, closes #307 2026-04-09 21:18:47 -04:00
PyColor.h Add Color.__eq__/__ne__ for value comparison, closes #307 2026-04-09 21:18:47 -04:00
PyDiscreteMap.cpp Add DiscreteMap to_bytes/from_bytes serialization, closes #293 2026-04-10 02:06:02 -04:00
PyDiscreteMap.h Add DiscreteMap to_bytes/from_bytes serialization, closes #293 2026-04-10 02:06:02 -04:00
PyDrawable.cpp Fix borrowed reference return in some callbacks 2026-01-27 10:43:10 -05:00
PyDrawable.h Squashed commit of 53 Commits: [alpha_streamline_2] 2025-07-09 22:41:15 -04:00
PyEasing.cpp animation loop parameter 2026-02-27 22:11:29 -05:00
PyEasing.h Easing functions as enum 2026-01-04 12:59:28 -05:00
PyFont.cpp Replace PyObject_GetAttrString with direct type references 2026-03-07 23:18:42 -05:00
PyFont.h Improve terse docstrings on Vector, Font, Texture, GridPoint, GridPointState 2026-04-09 21:18:33 -04:00
PyFOV.cpp feat: Implement FOV enum and layer draw_fov for #114 and #113 2025-12-01 15:18:10 -05:00
PyFOV.h feat: Implement FOV enum and layer draw_fov for #114 and #113 2025-12-01 15:18:10 -05:00
PyHeightMap.cpp Replace PyObject_GetAttrString with direct type references 2026-03-07 23:18:42 -05:00
PyHeightMap.h Migrate static PyTypeObject to inline, delete PyTypeCache workarounds 2026-02-16 20:58:09 -05:00
PyInputState.cpp Remove legacy string enum comparisons from InputState/Key/MouseButton, closes #306 2026-04-09 22:19:02 -04:00
PyInputState.h Remove legacy string enum comparisons from InputState/Key/MouseButton, closes #306 2026-04-09 22:19:02 -04:00
PyKey.cpp Remove legacy string enum comparisons from InputState/Key/MouseButton, closes #306 2026-04-09 22:19:02 -04:00
PyKey.h Remove legacy string enum comparisons from InputState/Key/MouseButton, closes #306 2026-04-09 22:19:02 -04:00
PyKeyboard.cpp feat: Add Sound/Music classes, keyboard state, version (#66, #160, #164) 2025-12-29 16:24:27 -05:00
PyKeyboard.h Migrate static PyTypeObject to inline, delete PyTypeCache workarounds 2026-02-16 20:58:09 -05:00
PyLock.cpp Fix #219: Add threading support with mcrfpy.lock() context manager 2026-01-19 23:37:49 -05:00
PyLock.h Fix #219: Add threading support with mcrfpy.lock() context manager 2026-01-19 23:37:49 -05:00
PyMouse.cpp Replace PyObject_GetAttrString with direct type references 2026-03-07 23:18:42 -05:00
PyMouse.h Migrate static PyTypeObject to inline, delete PyTypeCache workarounds 2026-02-16 20:58:09 -05:00
PyMouseButton.cpp Remove legacy string enum comparisons from InputState/Key/MouseButton, closes #306 2026-04-09 22:19:02 -04:00
PyMouseButton.h Remove legacy string enum comparisons from InputState/Key/MouseButton, closes #306 2026-04-09 22:19:02 -04:00
PyMusic.cpp Replace PyObject_GetAttrString with direct type references 2026-03-07 23:18:42 -05:00
PyMusic.h Migrate static PyTypeObject to inline, delete PyTypeCache workarounds 2026-02-16 20:58:09 -05:00
PyNoiseSource.cpp Replace PyObject_GetAttrString with direct type references 2026-03-07 23:18:42 -05:00
PyNoiseSource.h Noise, combination, and sampling: first pass at #207, #208, #194, #209 2026-01-12 19:01:20 -05:00
PyPositionHelper.h Positions are always mcrfpy.Vector, Vector/tuple/iterables expected as inputs, and for position-only inputs we permit x,y args to prevent requiring double-parens 2026-01-05 10:16:16 -05:00
PyScene.cpp Phase 4.2: Add GridView UIDrawable type (addresses #252) 2026-03-16 08:41:44 -04:00
PyScene.h feat: Implement comprehensive mouse event system 2025-11-27 23:08:31 -05:00
PySceneObject.cpp Replace PyObject_GetAttrString with direct type references 2026-03-07 23:18:42 -05:00
PySceneObject.h Migrate static PyTypeObject to inline, delete PyTypeCache workarounds 2026-02-16 20:58:09 -05:00
PyShader.cpp Shaders 2026-01-25 21:04:01 -05:00
PyShader.h Shaders 2026-01-25 21:04:01 -05:00
PySound.cpp Replace PyObject_GetAttrString with direct type references 2026-03-07 23:18:42 -05:00
PySound.h Add SoundBuffer type: procedural audio, sfxr synthesis, DSP effects 2026-02-19 18:58:11 -05:00
PySoundBuffer.cpp Audio fixes: gain() DSP effect, sfxr phase wrap, SDL2 backend compat 2026-02-20 23:17:41 -05:00
PySoundBuffer.h Audio fixes: gain() DSP effect, sfxr phase wrap, SDL2 backend compat 2026-02-20 23:17:41 -05:00
PyTexture.cpp Add texture display bounds for non-uniform sprite content, closes #235 2026-04-10 02:57:41 -04:00
PyTexture.h Add texture display bounds for non-uniform sprite content, closes #235 2026-04-10 02:57:41 -04:00
PythonObjectCache.cpp Fix PythonObjectCache race and document die() iteration (closes #269, closes #273) 2026-03-07 23:33:05 -05:00
PythonObjectCache.h Squashed commit of the following: [alpha_presentable] 2025-07-15 21:30:49 -04:00
PyTimer.cpp Fix callback/timer GC: prevent premature destruction of Python callbacks 2026-02-19 20:53:50 -05:00
PyTimer.h Migrate static PyTypeObject to inline, delete PyTypeCache workarounds 2026-02-16 20:58:09 -05:00
PyTransition.cpp scene transitions via Scene object 2026-01-03 13:53:18 -05:00
PyTransition.h scene transitions via Scene object 2026-01-03 13:53:18 -05:00
PyTrigger.cpp Phase 2: Entity data model extensions for behavior system 2026-03-15 22:05:06 -04:00
PyTrigger.h Phase 2: Entity data model extensions for behavior system 2026-03-15 22:05:06 -04:00
PyUniformBinding.cpp Shaders 2026-01-25 21:04:01 -05:00
PyUniformBinding.h Shaders 2026-01-25 21:04:01 -05:00
PyUniformCollection.cpp Fix UniformCollection owner validity check (closes #272) 2026-03-08 17:07:14 -04:00
PyUniformCollection.h Fix UniformCollection owner validity check (closes #272) 2026-03-08 17:07:14 -04:00
PyVector.cpp Replace PyObject_GetAttrString with direct type references 2026-03-07 23:18:42 -05:00
PyVector.h Improve terse docstrings on Vector, Font, Texture, GridPoint, GridPointState 2026-04-09 21:18:33 -04:00
PyWindow.cpp Add MCRF_HEADLESS compile-time build option for #158 2026-01-30 23:09:07 -05:00
PyWindow.h Migrate static PyTypeObject to inline, delete PyTypeCache workarounds 2026-02-16 20:58:09 -05:00
Resources.cpp Adding text functionality to Caption (why was that missing???) 2024-03-07 12:35:07 -05:00
Resources.h Adding text functionality to Caption (why was that missing???) 2024-03-07 12:35:07 -05:00
Scene.cpp feat: Implement Phase A UI hierarchy foundations (closes #122, #102, #116, #118) 2025-11-27 16:33:17 -05:00
Scene.h feat: Implement Phase A UI hierarchy foundations (closes #122, #102, #116, #118) 2025-11-27 16:33:17 -05:00
SceneTransition.cpp Mobile-"ish" emscripten support 2026-02-09 08:40:34 -05:00
SceneTransition.h Mobile-"ish" emscripten support 2026-02-09 08:40:34 -05:00
shell.html Cross-platform persistent save directory (IDBFS on WASM, filesystem on desktop) 2026-02-25 20:42:44 -05:00
shell_game.html Cross-platform persistent save directory (IDBFS on WASM, filesystem on desktop) 2026-02-25 20:42:44 -05:00
SpatialHash.cpp Add multi-tile entity support with tile_width/tile_height, closes #236 2026-04-10 02:57:47 -04:00
SpatialHash.h Phase 2: Entity data model extensions for behavior system 2026-03-15 22:05:06 -04:00
Timer.cpp Fix callback/timer GC: prevent premature destruction of Python callbacks 2026-02-19 20:53:50 -05:00
Timer.h Fix callback/timer GC: prevent premature destruction of Python callbacks 2026-02-19 20:53:50 -05:00
UI.h Squashed commit of the following: [break_up_ui_h] 2024-04-20 10:32:04 -04:00
UIArc.cpp Add missing markDirty()/markCompositeDirty() to all Python property setters 2026-04-10 01:01:41 -04:00
UIArc.h Fix callback/timer GC: prevent premature destruction of Python callbacks 2026-02-19 20:53:50 -05:00
UIBase.h Phase 4.3: Grid auto-creates GridView with rendering property sync 2026-03-19 11:24:47 -04:00
UICaption.cpp Add compound Color and Vector animation targets (pos, fill_color), closes #218 2026-04-10 02:05:55 -04:00
UICaption.h Add compound Color and Vector animation targets (pos, fill_color), closes #218 2026-04-10 02:05:55 -04:00
UICircle.cpp Add missing markDirty()/markCompositeDirty() to all Python property setters 2026-04-10 01:01:41 -04:00
UICircle.h Fix callback/timer GC: prevent premature destruction of Python callbacks 2026-02-19 20:53:50 -05:00
UICollection.cpp Add missing markDirty()/markCompositeDirty() to all Python property setters 2026-04-10 01:01:41 -04:00
UICollection.h Python API improvements: Vectors, bounds, window singleton, hidden types 2026-01-05 23:00:48 -05:00
UIDrawable.cpp Add missing markDirty()/markCompositeDirty() to all Python property setters 2026-04-10 01:01:41 -04:00
UIDrawable.h Phase 4.2: Add GridView UIDrawable type (addresses #252) 2026-03-16 08:41:44 -04:00
UIEntity.cpp Add composite sprite_grid for multi-tile entities, closes #237 2026-04-10 04:15:06 -04:00
UIEntity.h Add composite sprite_grid for multi-tile entities, closes #237 2026-04-10 04:15:06 -04:00
UIEntityCollection.cpp Preserve Python subclass identity for entities in grids (reopens #266) 2026-03-09 00:24:26 -04:00
UIEntityCollection.h Grid code quality improvements 2026-01-10 08:37:31 -05:00
UIEntityPyMethods.h Fix UniformCollection owner validity check (closes #272) 2026-03-08 17:07:14 -04:00
UIFrame.cpp Add compound Color and Vector animation targets (pos, fill_color), closes #218 2026-04-10 02:05:55 -04:00
UIFrame.h Fix callback/timer GC: prevent premature destruction of Python callbacks 2026-02-19 20:53:50 -05:00
UIGrid.cpp Add composite sprite_grid for multi-tile entities, closes #237 2026-04-10 04:15:06 -04:00
UIGrid.h Remove redundant Grid.position alias, keep only Grid.pos, closes #308 2026-04-09 22:18:30 -04:00
UIGridPathfinding.cpp Add collision label support for pathfinding (closes #302) 2026-04-02 01:34:19 -04:00
UIGridPathfinding.h Add MCRF_HEADLESS compile-time build option for #158 2026-01-30 23:09:07 -05:00
UIGridPoint.cpp Phase 1: Safety & performance foundation for Grid/Entity overhaul 2026-03-15 21:48:24 -04:00
UIGridPoint.h Improve terse docstrings on Vector, Font, Texture, GridPoint, GridPointState 2026-04-09 21:18:33 -04:00
UIGridPyMethods.cpp Split UIGrid.cpp into three files for maintainability, closes #149 2026-04-10 04:08:27 -04:00
UIGridPyProperties.cpp Split UIGrid.cpp into three files for maintainability, closes #149 2026-04-10 04:08:27 -04:00
UIGridView.cpp Fix grid layers with z_index=0 rendering on top of entities, closes #257 2026-04-10 01:07:08 -04:00
UIGridView.h Grid/GridView API unification: mcrfpy.Grid now returns GridView, closes #252 2026-04-04 04:34:11 -04:00
UILine.cpp Add missing markDirty()/markCompositeDirty() to all Python property setters 2026-04-10 01:01:41 -04:00
UILine.h Fix callback/timer GC: prevent premature destruction of Python callbacks 2026-02-19 20:53:50 -05:00
UISprite.cpp Add compound Color and Vector animation targets (pos, fill_color), closes #218 2026-04-10 02:05:55 -04:00
UISprite.h Add compound Color and Vector animation targets (pos, fill_color), closes #218 2026-04-10 02:05:55 -04:00
UITestScene.cpp refactor: Remove layer-related GridPoint properties, fix layer z-index 2025-11-28 23:21:39 -05:00
UITestScene.h Refactor: remove "s" prefix from "sRender" method ( -> "render") Closes #44 2024-04-20 14:16:14 -04:00