From: Lukas Krickl Date: Thu, 26 Feb 2026 05:43:53 +0000 (+0100) Subject: render: Added basic template fallback tile for isometric tile drawing. X-Git-Url: https://git.krickl.dev/?a=commitdiff_plain;h=8463987f79dfb18d5825fcdc4d72eb264d645353;p=lrts%2F.git render: Added basic template fallback tile for isometric tile drawing. This tile is a mask for drawing a solid color tile. --- diff --git a/src/r_assets.c b/src/r_assets.c index 0dd87ba..63ec5e2 100644 --- a/src/r_assets.c +++ b/src/r_assets.c @@ -2,10 +2,38 @@ #include "r_render.h" #include "u_mem.h" -i32 r_asset_fallback_tile[R_TILE_W * R_TILE_H]; +r_color r_asset_fallback_tile[R_TILE_W * R_TILE_H]; void r_asset_init_fallback_tile(void) { + int i = 0; + int j = 0; + r_color *row = NULL; u_memset(r_asset_fallback_tile, 0, R_TILE_W * R_TILE_H); + + /* top row */ + for (i = 0; i < 8; i++) { + row = r_asset_fallback_tile+i*R_TILE_W + R_TILE_W-1; + + /* get start */ + row -= 14-2*i; + + for (j = 0; j < 4 * (i + 1); j++) { + *(row-j) = 0xFFFFFFFF; + } + } + + /* bottom row */ + for (i = 0; i < 8; i++) { + row = r_asset_fallback_tile+R_TILE_W*(R_TILE_H-1-i)-1; + + /* get start */ + row -= 14-2*i; + + for (j = 0; j < 4 * (i + 1); j++) { + *(row-j) = 0xFFFFFFFF; + } + } + } void r_draw_solid_isometric_tile(i32 x, i32 y, r_color color) { @@ -15,9 +43,6 @@ void r_draw_solid_isometric_tile(i32 x, i32 y, r_color color) { struct u_vec2 t = u_tile_to_screen(x, y); /* converted origin point in isometric space */ - - LRTS_UNUSED(x); - LRTS_UNUSED(y); /* draw a tile texture from origin */ for (i = 0; i < R_TILE_W; i++) { diff --git a/src/r_render.c b/src/r_render.c index b8a7455..0e07d0c 100644 --- a/src/r_render.c +++ b/src/r_render.c @@ -8,6 +8,10 @@ struct r_framebuffer r_framebuffer; void r_draw_pixel(struct r_framebuffer *fb, i32 x, i32 y, r_color color) { r_target_color *pixel = LRTS_NULL; + /* if alpha is all 0 do nothing */ + if ((color & 0xFF) == 0) { + return; + } /* drop the draw if out of bounds */ if (x < 0 || x >= r_target->w) { @@ -22,13 +26,19 @@ void r_draw_pixel(struct r_framebuffer *fb, i32 x, i32 y, r_color color) { } void r_render_frame() { + int i, j; struct t_tile t; p_draw_begin(); /* draw test tile */ t.type = T_TILE_TYPE_GRASS; - r_draw_tile(&t, 0, 0); + + for (i = 0; i < 16; i++) { + for (j = 0; j < 16; j++) { + r_draw_tile(&t, i, j); + } + } p_draw_end(); p_draw_present();