36 lines
1.3 KiB
C
36 lines
1.3 KiB
C
#include <gint/display.h>
|
|
#include <gint/gray.h>
|
|
#include <math.h>
|
|
|
|
#include "display_engine.h"
|
|
|
|
void draw_map(const struct game *game)
|
|
{
|
|
extern const bopti_image_t img_tileset;
|
|
extern const bopti_image_t img_water;
|
|
|
|
for (int i = 0; i < SCREEN_HEIGHT; i ++)
|
|
{
|
|
for (int j = 0; j < SCREEN_WIDTH; j++)
|
|
{
|
|
if ((game->world_y + i < MAP_HEIGHT && game->world_y + i >= 0 && game->world_x + j < MAP_WIDTH && game->world_x + j >= 0) && (game->map->data[game->world_y + i][game->world_x + j] != -1))
|
|
{
|
|
unsigned int tile_x = (TILE_SIZE + 1) * (game->map->data[game->world_y + i][game->world_x + j] % TILESET_WIDTH);
|
|
unsigned int tile_y = (TILE_SIZE + 1) * (game->map->data[game->world_y + i][game->world_x + j] / TILESET_WIDTH);
|
|
|
|
if (game->map->data[game->world_y + i][game->world_x + j] != 56) dsubimage(j * TILE_SIZE, i * TILE_SIZE, &img_tileset, tile_x, tile_y, 8, 8, DIMAGE_NONE);
|
|
else dsubimage(j * TILE_SIZE, i * TILE_SIZE, &img_water, 9 * game->water_frame, 0, 8, 8, DIMAGE_NONE);
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
void draw_player(const struct game *game)
|
|
{
|
|
extern const bopti_image_t img_player;
|
|
|
|
dsubimage(56, 35, &img_player, 9 * game->player->animation_frame, 13 * game->player->direction, 8, 12, DIMAGE_NONE);
|
|
}
|