Added option for different bullet spread during movement.
This commit is contained in:
parent
e04d684352
commit
ef0fa839b9
4 changed files with 12 additions and 5 deletions
|
@ -9,3 +9,4 @@ automatic: true
|
||||||
magazine_size: 30
|
magazine_size: 30
|
||||||
max_total_ammo: 270
|
max_total_ammo: 270
|
||||||
spread: 2.0
|
spread: 2.0
|
||||||
|
spread_moving: 5.0
|
|
@ -3,9 +3,10 @@ name: Machine Gun
|
||||||
bullet: bullet.yaml
|
bullet: bullet.yaml
|
||||||
projectile_speed: 1000
|
projectile_speed: 1000
|
||||||
damage: 20
|
damage: 20
|
||||||
fire_interval: 100
|
fire_interval: 150
|
||||||
reload_time: 5000
|
reload_time: 5000
|
||||||
automatic: true
|
automatic: true
|
||||||
magazine_size: 60
|
magazine_size: 60
|
||||||
max_total_ammo: 400
|
max_total_ammo: 400
|
||||||
spread: 5.0
|
spread: 5.0
|
||||||
|
spread_moving: 15.0
|
|
@ -30,7 +30,8 @@ Weapon::Weapon(World& world, Character& holder, const Yaml& config) :
|
||||||
mPellets(config.get("pellets", 0)),
|
mPellets(config.get("pellets", 0)),
|
||||||
mPelletSpread(config.get("pellet_spread", 0.0f)),
|
mPelletSpread(config.get("pellet_spread", 0.0f)),
|
||||||
mReloadSingle(config.get("reload_single", false)),
|
mReloadSingle(config.get("reload_single", false)),
|
||||||
mSpread(config.get("spread", 0.0f)) {
|
mSpread(config.get("spread", 0.0f)),
|
||||||
|
mSpreadMoving(config.get("spread_moving", 0.0f)) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -135,7 +136,10 @@ Weapon::insertProjectile(float angle) {
|
||||||
sf::Vector2f offset(0, - mHolder.getRadius());
|
sf::Vector2f offset(0, - mHolder.getRadius());
|
||||||
thor::rotate(offset, thor::polarAngle(mHolder.getDirection()));
|
thor::rotate(offset, thor::polarAngle(mHolder.getDirection()));
|
||||||
|
|
||||||
std::uniform_real_distribution<float> distribution(- mSpread, mSpread);
|
float spread = (mHolder.getSpeed() == sf::Vector2f())
|
||||||
|
? mSpread
|
||||||
|
: mSpreadMoving;
|
||||||
|
std::uniform_real_distribution<float> distribution(- spread, spread);
|
||||||
angle += distribution(mGenerator);
|
angle += distribution(mGenerator);
|
||||||
|
|
||||||
//float random = ((float) rand()) / (float) RAND_MAX;
|
//float random = ((float) rand()) / (float) RAND_MAX;
|
||||||
|
|
|
@ -58,6 +58,7 @@ private:
|
||||||
const float mPelletSpread;
|
const float mPelletSpread;
|
||||||
const bool mReloadSingle;
|
const bool mReloadSingle;
|
||||||
const float mSpread;
|
const float mSpread;
|
||||||
|
const float mSpreadMoving;
|
||||||
std::default_random_engine mGenerator;
|
std::default_random_engine mGenerator;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
Reference in a new issue