|
|
@ -59,16 +59,16 @@ void draw_rect(Fenster &window, Point pos, Point size, uint32_t color) { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void draw_map_rect(Fenster &window, int x, int y, uint8_t color) { |
|
|
|
void draw_map_rect(Fenster &window, int x, int y, uint32_t color) { |
|
|
|
draw_rect(window, |
|
|
|
draw_rect(window, |
|
|
|
{size_t(x * TILE_SIZE), size_t(y * TILE_SIZE)}, |
|
|
|
{size_t(x * TILE_SIZE), size_t(y * TILE_SIZE)}, |
|
|
|
{size_t(TILE_SIZE-1), size_t(TILE_SIZE-1)}, |
|
|
|
{size_t(TILE_SIZE-1), size_t(TILE_SIZE-1)}, |
|
|
|
gray_color(color)); |
|
|
|
color); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void draw_map(Fenster &window, Matrix &map) { |
|
|
|
void draw_map(Fenster &window, Matrix &map) { |
|
|
|
uint8_t light_grey = 191; |
|
|
|
uint32_t light_grey = gray_color(191); |
|
|
|
uint8_t dark_grey = 65; |
|
|
|
uint32_t dark_grey = gray_color(65); |
|
|
|
|
|
|
|
|
|
|
|
for(size_t y = 0; y < matrix::height(map); y++) { |
|
|
|
for(size_t y = 0; y < matrix::height(map); y++) { |
|
|
|
for(size_t x = 0; x < matrix::width(map); x++) { |
|
|
|
for(size_t x = 0; x < matrix::width(map); x++) { |
|
|
@ -78,7 +78,31 @@ void draw_map(Fenster &window, Matrix &map) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void draw_line(Fenster &window, Point start, Point end) { |
|
|
|
void draw_line(Fenster &window, Point start, Point end) { |
|
|
|
|
|
|
|
int x = int(start.x); |
|
|
|
|
|
|
|
int y = int(start.y); |
|
|
|
|
|
|
|
int x1 = int(end.x); |
|
|
|
|
|
|
|
int y1 = int(end.y); |
|
|
|
|
|
|
|
int dx = std::abs(x1 - x); |
|
|
|
|
|
|
|
int sx = x < x1 ? 1 : -1; |
|
|
|
|
|
|
|
int dy = std::abs(y1 - y) * -1; |
|
|
|
|
|
|
|
int sy = y < y1 ? 1 : -1; |
|
|
|
|
|
|
|
int error = dx + dy; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
while(x != x1 || y != y1) { |
|
|
|
|
|
|
|
int e2 = 2 * error; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(e2 >= dy) { |
|
|
|
|
|
|
|
error = error + dy; |
|
|
|
|
|
|
|
x = x + sx; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(e2 <= dx) { |
|
|
|
|
|
|
|
error = error + dx; |
|
|
|
|
|
|
|
y = y + sy; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
window.px(x, y) = rgba_color(200, 20, 20, 255); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void clear(Fenster &window) { |
|
|
|
void clear(Fenster &window) { |
|
|
@ -90,7 +114,7 @@ void clear(Fenster &window) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void draw_map_rays(Fenster &window, int col, int row, Point target) { |
|
|
|
void draw_map_rays(Fenster &window, int col, int row, Point target) { |
|
|
|
draw_map_rect(window, col, row, 100); |
|
|
|
draw_map_rect(window, col, row, rgba_color(100, 20, 20, 255)); |
|
|
|
draw_line(window, {size_t(player_x), size_t(player_y)}, target); |
|
|
|
draw_line(window, {size_t(player_x), size_t(player_y)}, target); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|