McRogueFace/src
John McCardle d13153ddb4 feat(engine): implement perspective FOV, pathfinding, and GUI text widgets
Major Engine Enhancements:
- Complete FOV (Field of View) system with perspective rendering
  - UIGrid.perspective property for entity-based visibility
  - Three-layer overlay colors (unexplored, explored, visible)
  - Per-entity visibility state tracking
  - Perfect knowledge updates only for explored areas

- Advanced Pathfinding Integration
  - A* pathfinding implementation in UIGrid
  - Entity.path_to() method for direct pathfinding
  - Dijkstra maps for multi-target pathfinding
  - Path caching for performance optimization

- GUI Text Input Widgets
  - TextInputWidget class with cursor, selection, scrolling
  - Improved widget with proper text rendering and input handling
  - Example showcase of multiple text input fields
  - Foundation for in-game console and chat systems

- Performance & Architecture Improvements
  - PyTexture copy operations optimized
  - GameEngine update cycle refined
  - UIEntity property handling enhanced
  - UITestScene modernized

Test Suite:
- Interactive visibility demos showing FOV in action
- Pathfinding comparison (A* vs Dijkstra)
- Debug utilities for visibility and empty path handling
- Sizzle reel demo combining pathfinding and vision
- Multiple text input test scenarios

This commit brings McRogueFace closer to a complete roguelike engine
with essential features like line-of-sight, intelligent pathfinding,
and interactive text input capabilities.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-09 22:18:29 -04:00
..
scripts feat(engine): implement perspective FOV, pathfinding, and GUI text widgets 2025-07-09 22:18:29 -04:00
ActionCode.h Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
Animation.cpp Squashed commit of the following: [alpha_streamline_1] 2025-07-05 18:56:02 -04:00
Animation.h Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
CommandLineParser.cpp Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
CommandLineParser.h Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
Common.h Refactor: Python 3.12, build libtcod & SFML from source. Cmake build. Directory cleanup 2024-02-24 22:48:39 -05:00
GameEngine.cpp feat(engine): implement perspective FOV, pathfinding, and GUI text widgets 2025-07-09 22:18:29 -04:00
GameEngine.h feat(viewport): complete viewport-based rendering system (#8) 2025-07-07 10:28:50 -04:00
HeadlessRenderer.cpp Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
HeadlessRenderer.h Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04: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 feat: stabilize test suite and add UIDrawable methods 2025-07-06 09:51:37 -04:00
McRFPy_API.cpp feat(entity): implement path_to() method for entity pathfinding 2025-07-09 13:01:03 -04:00
McRFPy_API.h feat(Phase 5): Complete Window/Scene Architecture 2025-07-06 14:40:43 -04:00
McRFPy_Automation.cpp Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
McRFPy_Automation.h Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
McRFPy_Libtcod.cpp feat(entity): implement path_to() method for entity pathfinding 2025-07-09 13:01:03 -04:00
McRFPy_Libtcod.h feat(entity): implement path_to() method for entity pathfinding 2025-07-09 13:01:03 -04:00
McRogueFaceConfig.h Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
PyAnimation.cpp Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
PyAnimation.h Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
PyArgHelpers.h refactor: implement PyArgHelpers for standardized Python argument parsing 2025-07-08 08:49:26 -04:00
PyCallable.cpp feat: implement mcrfpy.Timer object with pause/resume/cancel capabilities closes #103 2025-07-06 08:52:05 -04:00
PyCallable.h feat: implement mcrfpy.Timer object with pause/resume/cancel capabilities closes #103 2025-07-06 08:52:05 -04:00
PyColor.cpp feat(Color): add helper methods from_hex, to_hex, lerp closes #94 2025-07-06 08:40:25 -04:00
PyColor.h feat(Color): add helper methods from_hex, to_hex, lerp closes #94 2025-07-06 08:40:25 -04:00
PyDrawable.cpp feat(Python): establish proper inheritance hierarchy for UI types 2025-07-07 19:44:30 -04:00
PyDrawable.h refactor: implement PyArgHelpers for standardized Python argument parsing 2025-07-08 08:49:26 -04:00
PyFont.cpp Squashed commit of the following: [alpha_streamline_1] 2025-07-05 18:56:02 -04:00
PyFont.h Squashed commit of the following: [alpha_streamline_1] 2025-07-05 18:56:02 -04:00
PyObjectUtils.h Iterators, other Python C API improvements 2025-05-31 09:11:51 -04:00
PyPositionHelper.h feat: Standardize position arguments across all UI classes 2025-07-06 01:06:12 -04:00
PyRAII.h Iterators, other Python C API improvements 2025-05-31 09:11:51 -04:00
PyScene.cpp feat(viewport): complete viewport-based rendering system (#8) 2025-07-07 10:28:50 -04:00
PyScene.h Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
PySceneObject.cpp feat(Phase 5): Complete Window/Scene Architecture 2025-07-06 14:40:43 -04:00
PySceneObject.h feat(Phase 5): Complete Window/Scene Architecture 2025-07-06 14:40:43 -04:00
PyTexture.cpp feat(engine): implement perspective FOV, pathfinding, and GUI text widgets 2025-07-09 22:18:29 -04:00
PyTexture.h Squashed commit of the following: [alpha_streamline_1] 2025-07-05 18:56:02 -04:00
PyTimer.cpp feat: implement mcrfpy.Timer object with pause/resume/cancel capabilities closes #103 2025-07-06 08:52:05 -04:00
PyTimer.h feat: implement mcrfpy.Timer object with pause/resume/cancel capabilities closes #103 2025-07-06 08:52:05 -04:00
PyVector.cpp feat(Vector): implement arithmetic operations closes #93 2025-07-06 01:35:41 -04:00
PyVector.h feat(Vector): implement arithmetic operations closes #93 2025-07-06 01:35:41 -04:00
PyWindow.cpp feat(viewport): complete viewport-based rendering system (#8) 2025-07-07 10:28:50 -04:00
PyWindow.h feat(viewport): complete viewport-based rendering system (#8) 2025-07-07 10:28:50 -04: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 Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
Scene.h Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
SceneTransition.cpp feat(Phase 5): Complete Window/Scene Architecture 2025-07-06 14:40:43 -04:00
SceneTransition.h feat(Phase 5): Complete Window/Scene Architecture 2025-07-06 14:40:43 -04:00
Timer.cpp Segfault fixes. Switching scenes broke some assumptions. All PyObject calls from userspace now handle (discard) exceptions and return values. 2024-03-08 12:09:09 -05:00
Timer.h Whoops, some issues with deleting timers. 2024-03-07 09:49:24 -05:00
UI.h Squashed commit of the following: [break_up_ui_h] 2024-04-20 10:32:04 -04:00
UIBase.h fix: prevent segfault when closing window via X button 2025-07-06 10:08:42 -04:00
UICaption.cpp refactor: implement PyArgHelpers for standardized Python argument parsing 2025-07-08 08:49:26 -04:00
UICaption.h docs: replace all 'docstring' placeholders with comprehensive documentation (#85) 2025-07-08 09:34:22 -04:00
UICollection.cpp Squashed commit of the following: [alpha_streamline_1] 2025-07-05 18:56:02 -04:00
UICollection.h Squashed commit of the following: [alpha_streamline_1] 2025-07-05 18:56:02 -04:00
UIContainerBase.h feat: implement name system for finding UI elements (#39/40/41) 2025-07-06 12:02:37 -04:00
UIDrawable.cpp refactor: implement PyArgHelpers for standardized Python argument parsing 2025-07-08 08:49:26 -04:00
UIDrawable.h refactor: move position property to UIDrawable base class (UICaption) 2025-07-07 17:45:53 -04:00
UIEntity.cpp feat(engine): implement perspective FOV, pathfinding, and GUI text widgets 2025-07-09 22:18:29 -04:00
UIEntity.h feat(engine): implement perspective FOV, pathfinding, and GUI text widgets 2025-07-09 22:18:29 -04:00
UIEntityPyMethods.h feat: implement name system for finding UI elements (#39/40/41) 2025-07-06 12:02:37 -04:00
UIFrame.cpp refactor: implement PyArgHelpers for standardized Python argument parsing 2025-07-08 08:49:26 -04:00
UIFrame.h docs: replace all 'docstring' placeholders with comprehensive documentation (#85) 2025-07-08 09:34:22 -04:00
UIGrid.cpp feat(engine): implement perspective FOV, pathfinding, and GUI text widgets 2025-07-09 22:18:29 -04:00
UIGrid.h feat(engine): implement perspective FOV, pathfinding, and GUI text widgets 2025-07-09 22:18:29 -04:00
UIGridPoint.cpp feat(entity): implement path_to() method for entity pathfinding 2025-07-09 13:01:03 -04:00
UIGridPoint.h feat(entity): implement path_to() method for entity pathfinding 2025-07-09 13:01:03 -04:00
UISprite.cpp refactor: implement PyArgHelpers for standardized Python argument parsing 2025-07-08 08:49:26 -04:00
UISprite.h docs: replace all 'docstring' placeholders with comprehensive documentation (#85) 2025-07-08 09:34:22 -04:00
UITestScene.cpp feat(engine): implement perspective FOV, pathfinding, and GUI text widgets 2025-07-09 22:18:29 -04:00
UITestScene.h Refactor: remove "s" prefix from "sRender" method ( -> "render") Closes #44 2024-04-20 14:16:14 -04:00