2020-02-11 11:44:37 +01:00
|
|
|
#include <gint/display.h>
|
|
|
|
|
|
|
|
#define PLAYER_SIDES 11
|
|
|
|
#define BG_COLOR 0
|
2020-02-11 14:14:18 +01:00
|
|
|
#define LEVEL_WIDTH 25
|
|
|
|
#define DRAW_OFFSET -2
|
2020-02-11 11:44:37 +01:00
|
|
|
|
|
|
|
extern image_t img_player; //player texture, 24x24
|
|
|
|
|
|
|
|
void draw_player(int old_x, int old_y, int x, int y)
|
|
|
|
{
|
|
|
|
if (old_x != x || old_y != y)
|
|
|
|
{
|
2020-02-11 14:14:18 +01:00
|
|
|
drect(old_x * 2 + DRAW_OFFSET, old_y * 2 + DRAW_OFFSET,
|
|
|
|
(old_x + PLAYER_SIDES) * 2 + 1 + DRAW_OFFSET,
|
|
|
|
(old_y + PLAYER_SIDES) * 2 + 1 + DRAW_OFFSET, BG_COLOR);
|
|
|
|
dimage(x * 2 + DRAW_OFFSET, y * 2 + DRAW_OFFSET, &img_player);
|
2020-02-11 11:44:37 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void draw_level(char level[], int *player_x, int *player_y)
|
|
|
|
{
|
|
|
|
extern image_t img_ground; //ground texture, 16x16
|
|
|
|
unsigned int i = 0;
|
|
|
|
unsigned int x = 0;
|
|
|
|
unsigned int y = 0;
|
2020-02-11 14:14:18 +01:00
|
|
|
while (i != LEVEL_WIDTH*14)
|
2020-02-11 11:44:37 +01:00
|
|
|
{
|
|
|
|
switch (level[i])
|
|
|
|
{
|
|
|
|
case '0':
|
2020-02-11 14:14:18 +01:00
|
|
|
dimage(x * 2 + DRAW_OFFSET, y * 2 + DRAW_OFFSET, &img_ground);
|
2020-02-11 11:44:37 +01:00
|
|
|
break;
|
|
|
|
case 's':
|
|
|
|
*player_x = x + 2;
|
|
|
|
*player_y = y + 4;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
x += 8;
|
2020-02-11 13:55:57 +01:00
|
|
|
if (x == 8*LEVEL_WIDTH)
|
2020-02-11 11:44:37 +01:00
|
|
|
{
|
|
|
|
x = 0;
|
|
|
|
y += 8;
|
|
|
|
}
|
|
|
|
i++;
|
|
|
|
}
|
|
|
|
}
|