Phase 1 - FOV Enum System: - Create PyFOV.h/cpp with mcrfpy.FOV IntEnum (BASIC, DIAMOND, SHADOW, etc.) - Add mcrfpy.default_fov module property initialized to FOV.BASIC - Add grid.fov and grid.fov_radius properties for per-grid defaults - Remove deprecated module-level FOV_* constants (breaking change) Phase 2 - Layer Operations: - Implement ColorLayer.fill_rect(pos, size, color) for rectangle fills - Implement TileLayer.fill_rect(pos, size, index) for tile rectangle fills - Implement ColorLayer.draw_fov(source, radius, fov, visible, discovered, unknown) to paint FOV-based visibility on color layers using parent grid's TCOD map The FOV enum uses Python's IntEnum for type safety while maintaining backward compatibility with integer values. Tests updated to use new API. Addresses #114 (FOV enum), #113 (layer operations) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
0545dd4861
commit
018e73590f
11 changed files with 1061 additions and 407 deletions
|
|
@ -112,6 +112,10 @@ public:
|
|||
std::weak_ptr<UIEntity> perspective_entity; // Weak reference to perspective entity
|
||||
bool perspective_enabled; // Whether to use perspective rendering
|
||||
|
||||
// #114 - FOV algorithm and radius for this grid
|
||||
TCOD_fov_algorithm_t fov_algorithm; // Default FOV algorithm (from mcrfpy.default_fov)
|
||||
int fov_radius; // Default FOV radius
|
||||
|
||||
// #142 - Grid cell mouse events
|
||||
std::unique_ptr<PyClickCallable> on_cell_enter_callable;
|
||||
std::unique_ptr<PyClickCallable> on_cell_exit_callable;
|
||||
|
|
@ -149,6 +153,10 @@ public:
|
|||
static int set_perspective(PyUIGridObject* self, PyObject* value, void* closure);
|
||||
static PyObject* get_perspective_enabled(PyUIGridObject* self, void* closure);
|
||||
static int set_perspective_enabled(PyUIGridObject* self, PyObject* value, void* closure);
|
||||
static PyObject* get_fov(PyUIGridObject* self, void* closure);
|
||||
static int set_fov(PyUIGridObject* self, PyObject* value, void* closure);
|
||||
static PyObject* get_fov_radius(PyUIGridObject* self, void* closure);
|
||||
static int set_fov_radius(PyUIGridObject* self, PyObject* value, void* closure);
|
||||
static PyObject* py_at(PyUIGridObject* self, PyObject* args, PyObject* kwds);
|
||||
static PyObject* py_compute_fov(PyUIGridObject* self, PyObject* args, PyObject* kwds);
|
||||
static PyObject* py_is_in_fov(PyUIGridObject* self, PyObject* args);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue