protomine/src/grid/draw.c

55 lines
794 B
C

#include "grid.h"
#include "tiles.h"
#include <gint/display.h>
extern bopti_image_t bimg_tileset;
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)
{
dsubimage(x, y, &bimg_tileset, tile * TILE_WIDTH, 0, TILE_WIDTH,
TILE_HEIGHT, DIMAGE_NONE);
}