render: Added basic template fallback tile for isometric tile drawing.
authorLukas Krickl <lukas@krickl.dev>
Thu, 26 Feb 2026 05:43:53 +0000 (06:43 +0100)
committerLukas Krickl <lukas@krickl.dev>
Thu, 26 Feb 2026 05:43:53 +0000 (06:43 +0100)
This tile is a mask for drawing a solid color tile.

src/r_assets.c
src/r_render.c

index 0dd87baadb1cfbb0ec32ca1d3700601a0c65048f..63ec5e25461d8ad55c5f27ca9a5cff575b32e502 100644 (file)
@@ -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++) {
index b8a745503a15d659228d57887764e4d59c79ccc6..0e07d0c0ce962b173467196a572df88aaab5721e 100644 (file)
@@ -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();