rogged/libs/tileset/tileset_paint.h
NotAShelf ceb657add8
tileset: initial GPU texture atlas w/ procedural sprite painting
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I7b6991f7342362033ad72ab4700fdb9f6a6a6964
2026-04-28 15:33:12 +03:00

66 lines
2.1 KiB
C

#ifndef TILESET_PAINT_H
#define TILESET_PAINT_H
#include "tileset.h"
// Forward declarations for types used in painting
typedef enum { ENEMY_GOBLIN_FWD, ENEMY_SKELETON_FWD, ENEMY_ORC_FWD } EnemyType_Paint;
typedef enum { ITEM_POTION_FWD, ITEM_WEAPON_FWD, ITEM_ARMOR_FWD } ItemType_Paint;
// Paint a wall tile with brick-like pattern.
// variant: 0 or 1 for shade variation.
void paint_wall_tile(Tileset *ts, int id, int variant);
// Paint a floor tile with stone/dithered pattern.
// variant: 0-3 for different noise patterns.
void paint_floor_tile(Tileset *ts, int id, int variant);
// Paint a stairs tile with depth illusion.
void paint_stairs_tile(Tileset *ts, int id);
// Paint the player sprite (adventurer silhouette).
void paint_player_tile(Tileset *ts, int id);
// Paint a player walking animation frame.
// frame: 0 or 1 for the two walk frames.
void paint_player_walk_tile(Tileset *ts, int id, int frame);
// Paint a player attacking animation frame.
void paint_player_attack_tile(Tileset *ts, int id);
// Paint an enemy sprite based on type.
void paint_enemy_tile(Tileset *ts, int id, int enemy_type);
// Paint an enemy walking animation frame.
// frame: 0 or 1 for the two walk frames.
void paint_enemy_walk_tile(Tileset *ts, int id, int enemy_type, int frame);
// Paint an enemy attacking animation frame.
void paint_enemy_attack_tile(Tileset *ts, int id, int enemy_type);
// Paint an item sprite based on type.
void paint_item_tile(Tileset *ts, int id, int item_type);
// Paint a closed door tile.
void paint_door_closed_tile(Tileset *ts, int id);
// Paint an open door tile.
void paint_door_open_tile(Tileset *ts, int id);
// Paint a burning/fire effect sprite.
void paint_effect_burn_tile(Tileset *ts, int id);
// Paint a poison effect sprite.
void paint_effect_poison_tile(Tileset *ts, int id);
// Paint a block/shield effect sprite.
void paint_effect_block_tile(Tileset *ts, int id);
// Paint a slash attack effect sprite.
void paint_slash_effect_tile(Tileset *ts, int id);
// Convenience: paint and register all tiles in one call.
// Returns 0 on failure, non-zero on success.
int tileset_paint_all(Tileset *ts);
#endif // TILESET_PAINT_H