McRogueFace/tests
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
..
WORKING_automation_test_example.py Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
animation_demo.py feat(engine): implement perspective FOV, pathfinding, and GUI text widgets 2025-07-09 22:18:29 -04:00
animation_demo_safe.py Roguelike Tutorial Planning + Prep 2025-07-09 08:36:11 -04:00
animation_sizzle_reel.py Roguelike Tutorial Planning + Prep 2025-07-09 08:36:11 -04:00
animation_sizzle_reel_fixed.py Roguelike Tutorial Planning + Prep 2025-07-09 08:36:11 -04:00
animation_sizzle_reel_v2.py Roguelike Tutorial Planning + Prep 2025-07-09 08:36:11 -04:00
animation_sizzle_reel_working.py Roguelike Tutorial Planning + Prep 2025-07-09 08:36:11 -04:00
api_createScene_test.py Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
api_demo_final.py Roguelike Tutorial Planning + Prep 2025-07-09 08:36:11 -04:00
api_keypressScene_test.py Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
api_sceneUI_test.py Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
api_setScene_currentScene_test.py Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
api_timer_test.py Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
astar_vs_dijkstra.py feat(engine): implement perspective FOV, pathfinding, and GUI text widgets 2025-07-09 22:18:29 -04:00
automation_click_issue78_analysis.py Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
automation_click_issue78_test.py Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
automation_screenshot_test.py Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
automation_screenshot_test_simple.py Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
check_entity_attrs.py feat(tcod): complete Dijkstra pathfinding implementation with critical PyArg fix 2025-07-09 12:10:48 -04:00
debug_astar_demo.py feat(engine): implement perspective FOV, pathfinding, and GUI text widgets 2025-07-09 22:18:29 -04:00
debug_empty_paths.py feat(engine): implement perspective FOV, pathfinding, and GUI text widgets 2025-07-09 22:18:29 -04:00
debug_render_test.py Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
debug_visibility.py feat(engine): implement perspective FOV, pathfinding, and GUI text widgets 2025-07-09 22:18:29 -04:00
dijkstra_all_paths.py feat(engine): implement perspective FOV, pathfinding, and GUI text widgets 2025-07-09 22:18:29 -04:00
dijkstra_cycle_paths.py feat(engine): implement perspective FOV, pathfinding, and GUI text widgets 2025-07-09 22:18:29 -04:00
dijkstra_debug.py feat(engine): implement perspective FOV, pathfinding, and GUI text widgets 2025-07-09 22:18:29 -04:00
dijkstra_demo_working.py feat(engine): implement perspective FOV, pathfinding, and GUI text widgets 2025-07-09 22:18:29 -04:00
dijkstra_interactive.py feat(engine): implement perspective FOV, pathfinding, and GUI text widgets 2025-07-09 22:18:29 -04:00
dijkstra_interactive_enhanced.py feat(demos): enhance interactive pathfinding demos with entity.path_to() 2025-07-09 13:07:33 -04:00
dijkstra_test.py feat(tcod): complete Dijkstra pathfinding implementation with critical PyArg fix 2025-07-09 12:10:48 -04:00
empty_script.py Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
exhaustive_api_demo.py Roguelike Tutorial Planning + Prep 2025-07-09 08:36:11 -04:00
exhaustive_api_demo_fixed.py Roguelike Tutorial Planning + Prep 2025-07-09 08:36:11 -04:00
exit_immediately_test.py Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
force_non_interactive.py Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
generate_caption_screenshot_fixed.py Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
generate_docs_screenshots.py Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
generate_docs_screenshots_simple.py Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
generate_entity_screenshot_fixed.py Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
generate_grid_screenshot.py Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
generate_sprite_screenshot.py Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
grid_at_argument_test.py feat(Grid): flexible at() method arguments 2025-07-05 20:35:33 -04:00
interactive_visibility.py feat(engine): implement perspective FOV, pathfinding, and GUI text widgets 2025-07-09 22:18:29 -04:00
issue_9_minimal_test.py Squashed commit of the following: [alpha_streamline_1] 2025-07-05 18:56:02 -04:00
issue_9_rendertexture_resize_test.py Squashed commit of the following: [alpha_streamline_1] 2025-07-05 18:56:02 -04:00
issue_9_simple_test.py Squashed commit of the following: [alpha_streamline_1] 2025-07-05 18:56:02 -04:00
issue_9_test.py Squashed commit of the following: [alpha_streamline_1] 2025-07-05 18:56:02 -04:00
issue_12_gridpoint_instantiation_test.py Squashed commit of the following: [alpha_streamline_1] 2025-07-05 18:56:02 -04:00
issue_26_28_iterator_comprehensive_test.py Squashed commit of the following: [alpha_streamline_1] 2025-07-05 18:56:02 -04:00
issue_37_simple_test.py Squashed commit of the following: [alpha_streamline_1] 2025-07-05 18:56:02 -04:00
issue_37_test.py Squashed commit of the following: [alpha_streamline_1] 2025-07-05 18:56:02 -04:00
issue_37_windows_scripts_comprehensive_test.py Squashed commit of the following: [alpha_streamline_1] 2025-07-05 18:56:02 -04:00
issue_76_test.py Squashed commit of the following: [alpha_streamline_1] 2025-07-05 18:56:02 -04:00
issue_76_uientitycollection_type_test.py Squashed commit of the following: [alpha_streamline_1] 2025-07-05 18:56:02 -04:00
issue_79_color_properties_test.py Squashed commit of the following: [alpha_streamline_1] 2025-07-05 18:56:02 -04:00
issue_80_caption_font_size_test.py Squashed commit of the following: [alpha_streamline_1] 2025-07-05 18:56:02 -04:00
issue_81_sprite_index_standardization_test.py Squashed commit of the following: [alpha_streamline_1] 2025-07-05 18:56:02 -04:00
issue_82_sprite_scale_xy_test.py Squashed commit of the following: [alpha_streamline_1] 2025-07-05 18:56:02 -04:00
issue_83_position_tuple_test.py Squashed commit of the following: [alpha_streamline_1] 2025-07-05 18:56:02 -04:00
issue_84_pos_property_test.py Squashed commit of the following: [alpha_streamline_1] 2025-07-05 18:56:02 -04:00
issue_95_uicollection_repr_test.py Squashed commit of the following: [alpha_streamline_1] 2025-07-05 18:56:02 -04:00
issue_96_uicollection_extend_test.py Squashed commit of the following: [alpha_streamline_1] 2025-07-05 18:56:02 -04:00
issue_99_texture_font_properties_test.py Squashed commit of the following: [alpha_streamline_1] 2025-07-05 18:56:02 -04:00
keypress_scene_validation_test.py Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
path_vision_fixed.py feat(engine): implement perspective FOV, pathfinding, and GUI text widgets 2025-07-09 22:18:29 -04:00
path_vision_sizzle_reel.py feat(engine): implement perspective FOV, pathfinding, and GUI text widgets 2025-07-09 22:18:29 -04:00
pathfinding_showcase.py feat(demos): enhance interactive pathfinding demos with entity.path_to() 2025-07-09 13:07:33 -04:00
run_all_tests.sh feat: stabilize test suite and add UIDrawable methods 2025-07-06 09:51:37 -04:00
run_issue_tests.py Squashed commit of the following: [alpha_streamline_1] 2025-07-05 18:56:02 -04:00
screenshot_transparency_fix_test.py Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
simple_interactive_visibility.py feat(engine): implement perspective FOV, pathfinding, and GUI text widgets 2025-07-09 22:18:29 -04:00
simple_screenshot_test.py Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
simple_timer_screenshot_test.py Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
simple_visibility_test.py feat(engine): implement perspective FOV, pathfinding, and GUI text widgets 2025-07-09 22:18:29 -04:00
sizzle_reel_final.py Roguelike Tutorial Planning + Prep 2025-07-09 08:36:11 -04:00
test_frame_clipping.py feat(rendering): implement RenderTexture base infrastructure and UIFrame clipping (#6) 2025-07-06 16:13:12 -04:00
test_frame_clipping_advanced.py feat(rendering): implement RenderTexture base infrastructure and UIFrame clipping (#6) 2025-07-06 16:13:12 -04:00
test_grid_background.py docs: create RenderTexture overhaul design document 2025-07-06 16:00:11 -04:00
test_pathfinding_integration.py feat(demos): enhance interactive pathfinding demos with entity.path_to() 2025-07-09 13:07:33 -04:00
test_stdin_theory.py Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
test_viewport_scaling.py feat(viewport): complete viewport-based rendering system (#8) 2025-07-07 10:28:50 -04:00
test_viewport_simple.py feat(viewport): complete viewport-based rendering system (#8) 2025-07-07 10:28:50 -04:00
test_viewport_visual.py feat(viewport): complete viewport-based rendering system (#8) 2025-07-07 10:28:50 -04:00
trace_exec_behavior.py Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
trace_interactive.py Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
ui_Entity_issue73_test.py Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
ui_Frame_test.py Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
ui_Frame_test_detailed.py Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
ui_Grid_none_texture_test.py Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
ui_Grid_null_texture_test.py Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
ui_Grid_test.py Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
ui_Grid_test_no_grid.py Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
ui_Grid_test_simple.py Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
ui_Sprite_issue19_test.py Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
ui_UICollection_issue69_test.py Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
unified_click_example.cpp feat: implement name system for finding UI elements (#39/40/41) 2025-07-06 12:02:37 -04:00
validate_screenshot_test.py Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
working_timer_test.py Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00