phantasia

Phantasia - 2D SDL3 RPG prototype.
git clone git://git.beep.wimdupont.com/phantasia.git
Log | Files | Refs | README | LICENSE

render.h (1825B)


      1 #ifndef PH_ENGINE_RENDER_H
      2 #define PH_ENGINE_RENDER_H
      3 
      4 #include "engine/world.h"
      5 #include "engine/assets.h"
      6 
      7 enum { PH_MAX_ASSETS = 32, PH_RENDER_FONT_W = 8 };
      8 
      9 typedef struct {
     10 	PhVec2 pos;
     11 	float viewport_w;
     12 	float viewport_h;
     13 } PhCamera;
     14 
     15 typedef struct PhRenderer PhRenderer;
     16 typedef struct { float x, y, w, h; } PhRect;
     17 typedef struct { unsigned char r, g, b, a; } PhColor;
     18 typedef enum { PH_FLIP_NONE, PH_FLIP_HORIZONTAL } PhFlip;
     19 
     20 /* Asset IDs are indices into the catalog passed at creation. Missing IDs are
     21  * safe to draw (a no-op); use has_asset when a fallback graphic is needed. */
     22 int ph_render_has_asset(const PhRenderer *renderer, int asset_id);
     23 void ph_render_destroy(PhRenderer *renderer);
     24 void ph_render_color(PhRenderer *renderer, PhColor color);
     25 void ph_render_clear(PhRenderer *renderer);
     26 void ph_render_fill(PhRenderer *renderer, PhRect rect);
     27 void ph_render_outline(PhRenderer *renderer, PhRect rect);
     28 /* Built-in fixed-width text: PH_RENDER_FONT_W pixels per character. */
     29 void ph_render_text(PhRenderer *renderer, float x, float y, const char *text);
     30 void ph_render_present(PhRenderer *renderer);
     31 void ph_render_texture(PhRenderer *renderer, int asset_id,
     32 	PhRect src, PhRect dst, PhFlip flip);
     33 void ph_render_sprite(PhRenderer *renderer, int asset_id,
     34 	int sprite_tile_x, int sprite_tile_y, PhRect dst, PhFlip flip);
     35 void ph_render_entity_frame(const PhEntityDef *def, const PhEntity *entity,
     36 	int *sprite_tile_x, int *sprite_tile_y, PhFlip *flip);
     37 /* Updates only the caller-owned camera; a missing player resets it to origin. */
     38 void ph_camera_follow_player(PhCamera *camera, const PhWorld *world);
     39 void ph_render_world(PhRenderer *renderer, const PhWorld *world,
     40 	const PhCamera *camera);
     41 
     42 void ph_render_world_debug(PhRenderer *renderer, const PhWorld *world,
     43 	const PhCamera *camera);
     44 
     45 #endif