#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) {
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++) {
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) {
}
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();