Odyssee/project/src/display_engine.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);
}