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>
24 lines
No EOL
794 B
C++
24 lines
No EOL
794 B
C++
#pragma once
|
|
#include "Common.h"
|
|
#include "Python.h"
|
|
#include <libtcod.h>
|
|
|
|
namespace McRFPy_Libtcod
|
|
{
|
|
// Field of View algorithms
|
|
static PyObject* compute_fov(PyObject* self, PyObject* args);
|
|
|
|
// Pathfinding
|
|
static PyObject* find_path(PyObject* self, PyObject* args);
|
|
static PyObject* dijkstra_new(PyObject* self, PyObject* args);
|
|
static PyObject* dijkstra_compute(PyObject* self, PyObject* args);
|
|
static PyObject* dijkstra_get_distance(PyObject* self, PyObject* args);
|
|
static PyObject* dijkstra_path_to(PyObject* self, PyObject* args);
|
|
|
|
// Line algorithms
|
|
static PyObject* line(PyObject* self, PyObject* args);
|
|
static PyObject* line_iter(PyObject* self, PyObject* args);
|
|
|
|
// Module initialization
|
|
PyObject* init_libtcod_module();
|
|
} |