84 lines
1.9 KiB
C
84 lines
1.9 KiB
C
#include <gint/display.h>
|
|
|
|
#define PLAYER_SIDES 5
|
|
#define BG_COLOR 0
|
|
#define LEVEL_WIDTH 28
|
|
#define DRAW_OFFSET_Y -24
|
|
#define DRAW_OFFSET_X -27
|
|
|
|
extern image_t img_player; //player texture, 12x12
|
|
|
|
void draw_player(int old_x, int old_y, int x, int y)
|
|
{
|
|
if (old_x != x || old_y != y)
|
|
{
|
|
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);
|
|
}
|
|
}
|
|
|
|
void draw_level(char level[], char upgrades[])
|
|
{
|
|
dclear(BG_COLOR);
|
|
extern image_t img_ground; //ground texture, 16x16
|
|
extern image_t img_spike; //spike texture, 16x16
|
|
extern image_t img_elevator; //elevator texture, 16x16
|
|
extern image_t img_jitem; //jump item texture, 16x16
|
|
unsigned int i = 0;
|
|
unsigned int x = 0;
|
|
unsigned int y = 0;
|
|
while (i != LEVEL_WIDTH*17)
|
|
{
|
|
switch (level[i])
|
|
{
|
|
case '0':
|
|
dimage(x * 2 + DRAW_OFFSET_X, y * 2 + DRAW_OFFSET_Y, &img_ground);
|
|
break;
|
|
case 'v':
|
|
dimage(x * 2 + DRAW_OFFSET_X, y * 2 + DRAW_OFFSET_Y, &img_spike);
|
|
break;
|
|
case '^':
|
|
dimage(x * 2 + DRAW_OFFSET_X, y * 2 + DRAW_OFFSET_Y, &img_elevator);
|
|
break;
|
|
case 'j':
|
|
if (!upgrades[0])
|
|
dimage(x*2 + DRAW_OFFSET_X, y*2 + DRAW_OFFSET_Y, &img_jitem);
|
|
else level[i] = '.';
|
|
}
|
|
x += 8;
|
|
if (x == 8*LEVEL_WIDTH)
|
|
{
|
|
x = 0;
|
|
y += 8;
|
|
}
|
|
i++;
|
|
}
|
|
}
|
|
|
|
void erase_tile(int x, int y, char level[])
|
|
{
|
|
x = (int)(x/8);
|
|
y = (int)(y/8);
|
|
level[x + y * 28] = '.';
|
|
x *= 16;
|
|
y *= 16;
|
|
drect(x + DRAW_OFFSET_X, y + DRAW_OFFSET_Y,
|
|
x + 15 + DRAW_OFFSET_X,
|
|
y + 15 + DRAW_OFFSET_Y, BG_COLOR);
|
|
}
|
|
|
|
void draw_upgrade_message(char item)
|
|
{
|
|
switch (item)
|
|
{
|
|
case 'j':
|
|
{
|
|
extern image_t img_jitem_popup;
|
|
dimage(96 + DRAW_OFFSET_X, 160 + DRAW_OFFSET_Y, &img_jitem_popup);
|
|
break;
|
|
}
|
|
}
|
|
}
|