unnamed-platformer/src/collide.c

26 lines
981 B
C

#include "collide.h"
#define PLAYER_SIDES 11
#define LEVEL_WIDTH 28
char collide(int x, int y, char level[], char tile)
{
if ((level[(int)(x/16) + (int)(y/16) * LEVEL_WIDTH] == tile) ||
(level[(int)(x/16) + (int)((y+PLAYER_SIDES)/16) * LEVEL_WIDTH] == tile) ||
(level[(int)((x+PLAYER_SIDES)/16) + (int)((y+PLAYER_SIDES)/16) * LEVEL_WIDTH] == tile) ||
(level[(int)((x+PLAYER_SIDES)/16) + (int)(y/16) * LEVEL_WIDTH] == tile) /*||
(level[(int)(x/16) + (int)((y+PLAYER_SIDES/2)/16) * LEVEL_WIDTH] == tile) ||
(level[(int)((x+PLAYER_SIDES/2)/16) + (int)(y/16) * LEVEL_WIDTH] == tile) ||
(level[(int)((x+PLAYER_SIDES/2)/16) + (int)((y+PLAYER_SIDES)/16) * LEVEL_WIDTH] == tile) ||
(level[(int)((x+PLAYER_SIDES)/16) + (int)((y+PLAYER_SIDES/2)/16) * LEVEL_WIDTH] == tile)*/) return 1;
return 0;
}
char collide_solid(int x, int y, char level[])
{
return (collide(x, y, level, '0') ||
collide(x, y, level, '^') ||
collide(x, y, level, '~') ||
collide(x, y, level, '#'));
}