Add in-game level editor with auto-discovered tile/entity palettes
Implements a full level editor that runs inside the game engine as an alternative mode, accessible via --edit flag or E key during gameplay. The editor auto-discovers available tiles from the tileset texture and entities from a new central registry, so adding new game content automatically appears in the editor without any editor-specific changes. Editor features: tile painting (pencil/eraser/flood fill) across 3 layers, entity placement with drag-to-move, player spawn point tool, camera pan/zoom, grid overlay, .lvl save/load, map resize, and test play (P to play, ESC to return to editor). Supporting changes: - Entity registry centralizes spawn functions (replaces strcmp chain) - Mouse input + raw keyboard access added to input system - Camera zoom support for editor overview - Zoom-aware rendering in tilemap, renderer, and sprite systems - Powerup and drone sprites/animations wired up (were defined but unused) - Bitmap font renderer for editor UI (4x6 pixel glyphs, no dependencies)
This commit is contained in:
@@ -27,4 +27,27 @@ void input_shutdown(void);
|
||||
/* Returns true if SDL_QUIT was received */
|
||||
bool input_quit_requested(void);
|
||||
|
||||
/* ── Mouse state ────────────────────────────────── */
|
||||
typedef enum MouseButton {
|
||||
MOUSE_LEFT = 0,
|
||||
MOUSE_MIDDLE = 1,
|
||||
MOUSE_RIGHT = 2,
|
||||
MOUSE_BUTTON_COUNT
|
||||
} MouseButton;
|
||||
|
||||
/* Mouse position in logical (game) coordinates */
|
||||
void input_mouse_pos(int *x, int *y);
|
||||
|
||||
/* Mouse button queries (same semantics as keyboard) */
|
||||
bool input_mouse_pressed(MouseButton btn);
|
||||
bool input_mouse_held(MouseButton btn);
|
||||
bool input_mouse_released(MouseButton btn);
|
||||
|
||||
/* Scroll wheel delta since last poll (positive = up) */
|
||||
int input_mouse_scroll(void);
|
||||
|
||||
/* Raw keyboard access for text-like input in editor */
|
||||
bool input_key_pressed(SDL_Scancode key);
|
||||
bool input_key_held(SDL_Scancode key);
|
||||
|
||||
#endif /* JNR_INPUT_H */
|
||||
|
||||
Reference in New Issue
Block a user