diff --git a/code/games/survival/src/system_weapon.c b/code/games/survival/src/system_weapon.c index 9a8b71e..0779290 100644 --- a/code/games/survival/src/system_weapon.c +++ b/code/games/survival/src/system_weapon.c @@ -1,13 +1,11 @@ #define WEAPON_KNIFE_SPAWN_DELAY 20 -#define WEAPON_PROJECTILE_POS_OFFSET 10.0f +#define WEAPON_PROJECTILE_POS_OFFSET 200.0f #define WEAPON_PROJECTILE_SPEED 500.0f #define WEAPON_PROJECTILE_RANGE_LIFETIME 800.0f //TODO(DavoSK): move to helpers, add srand float get_rand_between(float min, float max) { - srand (time ( NULL)); - float scale = rand() / (float) RAND_MAX; /* [0, 1.0] */ - return min + scale * ( max - min ); /* [min, max] */ + return ((float)rand() / (float)RAND_MAX) * (max - min) + min; } void WeaponKnifeMechanic(ecs_iter_t *it) { @@ -37,9 +35,15 @@ void WeaponKnifeMechanic(ecs_iter_t *it) { }); Position *dest = ecs_get_mut(world_ecs(), e, Position); + const float offset = get_rand_between(-WEAPON_PROJECTILE_POS_OFFSET, WEAPON_PROJECTILE_POS_OFFSET); dest->x=pos[i].x; - dest->y=pos[i].y+(float)rand()/(float)(RAND_MAX/WEAPON_PROJECTILE_POS_OFFSET); - zpl_printf("offset: %f, %d\n", (float)rand()/(float)(RAND_MAX/WEAPON_PROJECTILE_POS_OFFSET), weapon[i].projectile_count); + dest->y=pos[i].y; + + if(zpl_abs(input[i].hx) > 0) + dest->y += offset; + + if(zpl_abs(input[i].hy) > 0) + dest->x += offset; } weapon[i].spawn_delay = WEAPON_KNIFE_SPAWN_DELAY;