feat: Thread-safe FOV system with improved API
Major improvements to the Field of View (FOV) system: 1. Added thread safety with mutex protection - Added mutable std::mutex fov_mutex to UIGrid class - Protected computeFOV() and isInFOV() with lock_guard - Minimal overhead for current single-threaded operation - Ready for future multi-threading requirements 2. Enhanced compute_fov() API to return visible cells - Changed return type from void to List[Tuple[int, int, bool, bool]] - Returns (x, y, visible, discovered) for all visible cells - Maintains backward compatibility by still updating internal FOV state - Allows FOV queries without affecting entity states 3. Fixed Part 4 tutorial visibility rendering - Added required entity.update_visibility() calls after compute_fov() - Fixed black grid issue in perspective rendering - Updated hallway generation to use L-shaped corridors The architecture now properly separates concerns while maintaining performance and preparing for future enhancements. Each entity can have independent FOV calculations without race conditions. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
b5eab85e70
commit
7aef412343
4 changed files with 86 additions and 14 deletions
|
|
@ -6,6 +6,7 @@
|
|||
#include "Resources.h"
|
||||
#include <list>
|
||||
#include <libtcod.h>
|
||||
#include <mutex>
|
||||
|
||||
#include "PyCallable.h"
|
||||
#include "PyTexture.h"
|
||||
|
|
@ -29,6 +30,7 @@ private:
|
|||
TCODMap* tcod_map; // TCOD map for FOV and pathfinding
|
||||
TCODDijkstra* tcod_dijkstra; // Dijkstra pathfinding
|
||||
TCODPath* tcod_path; // A* pathfinding
|
||||
mutable std::mutex fov_mutex; // Mutex for thread-safe FOV operations
|
||||
|
||||
public:
|
||||
UIGrid();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue