refactor some things...
This commit is contained in:
parent
3550fad638
commit
1744e689b5
25 changed files with 2396 additions and 1307 deletions
|
|
@ -46,20 +46,20 @@ static inline u8 pxl8_tile_get_palette(pxl8_tile tile) {
|
|||
}
|
||||
|
||||
typedef struct pxl8_tile_animation {
|
||||
u16* frames;
|
||||
u16 frame_count;
|
||||
u16 current_frame;
|
||||
f32 frame_duration;
|
||||
u16 frame_count;
|
||||
u16* frames;
|
||||
f32 time_accumulator;
|
||||
} pxl8_tile_animation;
|
||||
|
||||
typedef struct pxl8_tile_properties {
|
||||
void* user_data;
|
||||
u32 property_flags;
|
||||
i16 collision_offset_x;
|
||||
i16 collision_offset_y;
|
||||
u16 collision_width;
|
||||
u16 collision_height;
|
||||
u16 collision_width;
|
||||
u32 property_flags;
|
||||
void* user_data;
|
||||
} pxl8_tile_properties;
|
||||
|
||||
typedef struct pxl8_autotile_rule {
|
||||
|
|
@ -68,64 +68,46 @@ typedef struct pxl8_autotile_rule {
|
|||
} pxl8_autotile_rule;
|
||||
|
||||
typedef struct pxl8_tile_chunk {
|
||||
pxl8_tile tiles[PXL8_CHUNK_SIZE * PXL8_CHUNK_SIZE];
|
||||
u32 chunk_x;
|
||||
u32 chunk_y;
|
||||
bool empty;
|
||||
pxl8_tile tiles[PXL8_CHUNK_SIZE * PXL8_CHUNK_SIZE];
|
||||
} pxl8_tile_chunk;
|
||||
|
||||
typedef struct pxl8_tilemap_layer {
|
||||
pxl8_tile_chunk** chunks;
|
||||
u32 chunks_wide;
|
||||
u32 chunks_high;
|
||||
u32 chunk_count;
|
||||
u32 allocated_chunks;
|
||||
bool visible;
|
||||
u8 opacity;
|
||||
} pxl8_tilemap_layer;
|
||||
|
||||
typedef struct pxl8_tilemap {
|
||||
pxl8_tilemap_layer layers[PXL8_MAX_TILE_LAYERS];
|
||||
u32 width;
|
||||
u32 height;
|
||||
u32 tile_size;
|
||||
u32 active_layers;
|
||||
|
||||
pxl8_tilesheet* tilesheet;
|
||||
|
||||
i32 camera_x;
|
||||
i32 camera_y;
|
||||
} pxl8_tilemap;
|
||||
typedef struct pxl8_tilemap_layer pxl8_tilemap_layer;
|
||||
typedef struct pxl8_tilemap pxl8_tilemap;
|
||||
|
||||
typedef struct pxl8_tilemap_view {
|
||||
i32 x, y;
|
||||
i32 width, height;
|
||||
i32 tile_start_x, tile_start_y;
|
||||
i32 height;
|
||||
i32 tile_end_x, tile_end_y;
|
||||
i32 tile_start_x, tile_start_y;
|
||||
i32 width;
|
||||
i32 x, y;
|
||||
} pxl8_tilemap_view;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
pxl8_tilemap* pxl8_tilemap_create(u32 width, u32 height, u32 tile_size);
|
||||
void pxl8_tilemap_destroy(pxl8_tilemap* tilemap);
|
||||
|
||||
bool pxl8_tilemap_check_collision(const pxl8_tilemap* tilemap, i32 x, i32 y, i32 w, i32 h);
|
||||
void pxl8_tilemap_compress(pxl8_tilemap* tilemap);
|
||||
void pxl8_tilemap_free(pxl8_tilemap* tilemap);
|
||||
u32 pxl8_tilemap_get_memory_usage(const pxl8_tilemap* tilemap);
|
||||
pxl8_tile pxl8_tilemap_get_tile(const pxl8_tilemap* tilemap, u32 layer, u32 x, u32 y);
|
||||
u16 pxl8_tilemap_get_tile_id(const pxl8_tilemap* tilemap, u32 layer, u32 x, u32 y);
|
||||
void pxl8_tilemap_get_view(
|
||||
const pxl8_tilemap* tilemap,
|
||||
const pxl8_gfx_ctx* gfx,
|
||||
const pxl8_gfx* gfx,
|
||||
pxl8_tilemap_view* view
|
||||
);
|
||||
pxl8_result pxl8_tilemap_init(pxl8_tilemap* tilemap, u32 width, u32 height, u32 tile_size);
|
||||
bool pxl8_tilemap_is_solid(const pxl8_tilemap* tilemap, u32 x, u32 y);
|
||||
void pxl8_tilemap_render(const pxl8_tilemap* tilemap, pxl8_gfx_ctx* gfx);
|
||||
void pxl8_tilemap_render_layer(const pxl8_tilemap* tilemap, pxl8_gfx_ctx* gfx, u32 layer);
|
||||
void pxl8_tilemap_render(const pxl8_tilemap* tilemap, pxl8_gfx* gfx);
|
||||
void pxl8_tilemap_render_layer(const pxl8_tilemap* tilemap, pxl8_gfx* gfx, u32 layer);
|
||||
void pxl8_tilemap_render_tile(
|
||||
const pxl8_tilemap* tilemap,
|
||||
pxl8_gfx_ctx* gfx,
|
||||
pxl8_gfx* gfx,
|
||||
u16 tile_id,
|
||||
i32 x,
|
||||
i32 y,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue