AST3_C/src/collide.c

17 lines
1018 B
C
Raw Normal View History

#include "collide.h"
2020-06-27 14:47:58 +02:00
#include "define.h"
2020-06-30 17:12:33 +02:00
char collide(int x, int y, char level[], char gravity, char block) //detect if a block is colliding
{
2020-06-30 17:12:33 +02:00
if(((level[(int)(x/16)+(int)((y-1)/16*25)] == block || level[(int)((x+PLAYER_HEIGHT-1)/16)+(int)((y-1)/16*25)] == block) && gravity) || //si le bloc d'au dessus est "block"
((level[(int)(x/16)+(int)((y+PLAYER_HEIGHT)/16*25)] == block || level[(int)((x+PLAYER_HEIGHT-1)/16)+(int)((y+PLAYER_HEIGHT)/16*25)] == block) && !gravity) || //si le bloc d'en dessus est "block"
(level[(int)((x+PLAYER_HEIGHT)/16)+(int)(y/16*25)] == block || level[(int)((x+PLAYER_HEIGHT)/16)+(int)((y+PLAYER_HEIGHT-1)/16*25)] == block) || //si le bloc de gauche est "block"
(level[(int)((x-1)/16)+(int)(y/16*25)] == block || level[(int)((x-1)/16)+(int)((y+PLAYER_HEIGHT-1)/16*25)] == block)) return 1;//si le bloc de droite est "block"
return 0;
2020-06-29 22:31:30 +02:00
}
2020-06-30 17:12:33 +02:00
char collide_solid(int x, int y, char level[], char gravity)
2020-06-29 22:31:30 +02:00
{
2020-06-30 17:12:33 +02:00
return collide(x, y, level, gravity, '1') || collide(x, y, level, gravity, '2');
2020-06-27 14:47:58 +02:00
}