AST3_C/src/friction.c

44 lines
1.1 KiB
C

#include "friction.h"
#include "collide.h"
void mod_accel_and_fric(float *acceleration, float *friction, int x, int y,
char level[])
{
*acceleration = HACCELERATION;
*friction = HFRICTION;
if(!mod_rough(acceleration, friction, x, y, level))
mod_solid(acceleration, friction, x, y, level);
if(!mod_ice(acceleration, friction, x, y, level))
mod_solid(acceleration, friction, x, y, level);
}
int mod_ice(float *acceleration, float *friction, int x, int y, char level[])
{
if (collide(x, y - 1, level, 'i') || collide(x, y + 1, level, 'i')) {
*friction /= 3.0;
*acceleration /= 2.0;
return 1;
}
return 0;
}
int mod_rough(float *acceleration, float *friction, int x, int y, char level[])
{
if (collide(x, y - 1, level, 'r') || collide(x, y + 1, level, 'r')) {
*friction *= 3;
*acceleration *= 2;
return 1;
}
return 0;
}
int mod_solid(float *acceleration, float *friction, int x, int y, char level[])
{
if (collide_solid(x, y - 1, level) || collide_solid(x, y + 1, level)) {
*friction *= 2.0;
*acceleration *= 2.0;
return 1;
}
return 0;
}