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>
39 lines
No EOL
929 B
Python
39 lines
No EOL
929 B
Python
#!/usr/bin/env python3
|
|
"""Simple visibility test without entity append"""
|
|
|
|
import mcrfpy
|
|
import sys
|
|
|
|
print("Simple visibility test...")
|
|
|
|
# Create scene and grid
|
|
mcrfpy.createScene("simple")
|
|
print("Scene created")
|
|
|
|
grid = mcrfpy.Grid(grid_x=5, grid_y=5)
|
|
print("Grid created")
|
|
|
|
# Create entity without appending
|
|
entity = mcrfpy.Entity(2, 2, grid=grid)
|
|
print(f"Entity created at ({entity.x}, {entity.y})")
|
|
|
|
# Check if gridstate is initialized
|
|
print(f"Gridstate length: {len(entity.gridstate)}")
|
|
|
|
# Try to access at method
|
|
try:
|
|
state = entity.at(0, 0)
|
|
print(f"at(0,0) returned: {state}")
|
|
print(f"visible: {state.visible}, discovered: {state.discovered}")
|
|
except Exception as e:
|
|
print(f"Error in at(): {e}")
|
|
|
|
# Try update_visibility
|
|
try:
|
|
entity.update_visibility()
|
|
print("update_visibility() succeeded")
|
|
except Exception as e:
|
|
print(f"Error in update_visibility(): {e}")
|
|
|
|
print("Test complete")
|
|
sys.exit(0) |