diff options
| author | _Tradam <[email protected]> | 2021-12-19 22:55:14 -0500 |
|---|---|---|
| committer | GitHub <[email protected]> | 2021-12-19 22:55:14 -0500 |
| commit | 19e578b5a5e0c3d4788f263c7a5e21df4236dc9b (patch) | |
| tree | 195e89ad5b5cb3f35f65f0a8851b941d9e089f8d | |
| parent | 561ac9574a5afc88ac762edc8892353e678b1117 (diff) | |
| parent | 3ee4fad56cfbcc2fadbe860aa4ae2579e68a384a (diff) | |
| download | SteelWings-19e578b5a5e0c3d4788f263c7a5e21df4236dc9b.tar.gz SteelWings-19e578b5a5e0c3d4788f263c7a5e21df4236dc9b.zip | |
Merge pull request #6 from realtradam/speed-dev
minimum speed component
| -rw-r--r-- | app/components/rules/minimum_speed.rb | 3 | ||||
| -rw-r--r-- | app/main.rb | 3 | ||||
| -rw-r--r-- | app/systems/rules/minimum_speed.rb | 13 | ||||
| -rw-r--r-- | app/systems/start_game.rb | 1 | ||||
| -rw-r--r-- | app/systems/update_boid_position.rb | 2 |
5 files changed, 21 insertions, 1 deletions
diff --git a/app/components/rules/minimum_speed.rb b/app/components/rules/minimum_speed.rb new file mode 100644 index 0000000..2e0e7fe --- /dev/null +++ b/app/components/rules/minimum_speed.rb @@ -0,0 +1,3 @@ + +FF::Cmp.new('BoidMinimumSpeed', + speed: 5) diff --git a/app/main.rb b/app/main.rb index d70958c..f4feee6 100644 --- a/app/main.rb +++ b/app/main.rb @@ -11,6 +11,7 @@ require 'app/components/rules/cohesion.rb' require 'app/components/rules/alignment.rb' require 'app/components/rules/separation.rb' require 'app/components/rules/follow.rb' +require 'app/components/rules/minimum_speed.rb' require 'app/components/rules/decay_speed.rb' require 'app/components/debug/singleton_debug_vector_arrow.rb' require 'app/components/singleton_camera.rb' @@ -42,6 +43,8 @@ require 'app/systems/collision_damage.rb' require 'app/systems/death.rb' require 'app/systems/player_weapon.rb' require 'app/systems/move_camera.rb' +require 'app/systems/rules/minimum_speed.rb' + require 'app/factories/bullet.rb' require 'app/factories/ships/osprey.rb' diff --git a/app/systems/rules/minimum_speed.rb b/app/systems/rules/minimum_speed.rb new file mode 100644 index 0000000..a78ee21 --- /dev/null +++ b/app/systems/rules/minimum_speed.rb @@ -0,0 +1,13 @@ +FF::Scn::BoidRules.add( + FF::Sys.new('BoidMinimumSpeed', priority: 98) do + FF::Cmp::BoidMinimumSpeed.each do |minspeed_component| + boid = minspeed_component.entities[0].components[FF::Cmp::Boid][0] + mag = Math.sqrt((boid.vx ** 2) + (boid.vy ** 2)) + if mag < minspeed_component.speed + boid.vx = (boid.vx / mag) * minspeed_component.speed + boid.vy = (boid.vy / mag) * minspeed_component.speed + end + end + end +) + diff --git a/app/systems/start_game.rb b/app/systems/start_game.rb index ed78339..51f26d4 100644 --- a/app/systems/start_game.rb +++ b/app/systems/start_game.rb @@ -44,6 +44,7 @@ FF::Sys.new('StartGame', priority: 50 ) do FF::Cmp::SingletonPlayer[0], FF::Cmp::Team.new(team: 'player'), FF::Cmp::Weapon.new, + FF::Cmp::BoidMinimumSpeed.new, FF::Cmp::DecaySpeed.new(strength: 0.9), ) diff --git a/app/systems/update_boid_position.rb b/app/systems/update_boid_position.rb index 81d053e..e5ca37a 100644 --- a/app/systems/update_boid_position.rb +++ b/app/systems/update_boid_position.rb @@ -1,5 +1,5 @@ FF::Scn::BoidRules.add( - FF::Sys.new('UpdateBoidPosition', priority: 98) do + FF::Sys.new('UpdateBoidPosition', priority: 97) do FF::Cmp::Boid.each do |boid| boid.vx += boid.cx boid.vy += boid.cy |
