protomine/src/grid/draw.c

75 lines
1.0 KiB
C

#include "grid.h"
#include "tiles.h"
#include <gint/display.h>
static void tile_draw(enum Tile, int x, int y);
void
grid_draw(struct Grid grid, int scr_x, int scr_y)
{
int x;
int y;
int ix;
int iy;
int ry;
int riy;
x = scr_x;
y = scr_y;
ix = 0;
iy = 0;
while (x <= -TILE_WIDTH) {
x += TILE_WIDTH;
ix += 1;
}
while (y <= -TILE_HEIGHT) {
y += TILE_HEIGHT;
iy += 1;
}
ry = y;
riy = iy;
while (x < DWIDTH) {
while (y < DHEIGHT) {
tile_draw(grid_get(grid, ix, iy), x, y);
y += TILE_HEIGHT;
iy += 1;
}
y = ry;
iy = riy;
x += TILE_WIDTH;
ix += 1;
}
}
static void
tile_draw(enum Tile tile, int x, int y)
{
color_t color;
switch (tile) {
case TILE_VOID:
color = C_BLACK;
break;
case TILE_OBSTACLE_1:
color = C_DARK;
break;
case TILE_OBSTACLE_2:
color = C_LIGHT;
break;
case TILE_OBSTACLE_3:
color = C_WHITE;
break;
case TILE_SOLID:
color = C_BLUE;
break;
default:
color = C_RGB(31, 0, 31);
break;
}
drect(x, y, x + TILE_WIDTH - 1, y + TILE_HEIGHT - 1, color);
}