unnamed-platformer/src/draw.c

53 lines
1.2 KiB
C
Raw Normal View History

2020-02-11 11:44:37 +01:00
#include <gint/display.h>
2020-02-12 10:47:12 +01:00
#define PLAYER_SIDES 5
2020-02-11 11:44:37 +01:00
#define BG_COLOR 0
2020-02-12 10:47:12 +01:00
#define LEVEL_WIDTH 26
#define DRAW_OFFSET_Y -8
#define DRAW_OFFSET_X -11
2020-02-11 11:44:37 +01:00
2020-02-12 10:47:12 +01:00
extern image_t img_player; //player texture, 12x12
2020-02-11 11:44:37 +01:00
void draw_player(int old_x, int old_y, int x, int y)
{
if (old_x != x || old_y != y)
{
2020-02-12 10:47:12 +01:00
drect(old_x * 2 + DRAW_OFFSET_X, old_y * 2 + DRAW_OFFSET_Y,
(old_x + PLAYER_SIDES) * 2 + 1 + DRAW_OFFSET_X,
(old_y + PLAYER_SIDES) * 2 + 1 + DRAW_OFFSET_Y, BG_COLOR);
dimage(x * 2 + DRAW_OFFSET_X, y * 2 + DRAW_OFFSET_Y, &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
2020-02-12 13:33:41 +01:00
extern image_t img_spike; //spike texture, 16x16
2020-02-11 11:44:37 +01:00
unsigned int i = 0;
unsigned int x = 0;
unsigned int y = 0;
2020-02-12 13:33:41 +01:00
while (i != LEVEL_WIDTH*15)
2020-02-11 11:44:37 +01:00
{
switch (level[i])
{
case '0':
2020-02-12 10:47:12 +01:00
dimage(x * 2 + DRAW_OFFSET_X, y * 2 + DRAW_OFFSET_Y, &img_ground);
2020-02-11 11:44:37 +01:00
break;
2020-02-12 13:33:41 +01:00
case 'v':
dimage(x * 2 + DRAW_OFFSET_X, y * 2 + DRAW_OFFSET_Y, &img_spike);
break;
2020-02-11 11:44:37 +01:00
case 's':
2020-02-12 10:47:12 +01:00
*player_x = x + 1;
*player_y = y + 2;
2020-02-11 11:44:37 +01:00
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++;
}
}