diff options
Diffstat (limited to 'app/systems/collision_damage.rb')
| -rw-r--r-- | app/systems/collision_damage.rb | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/app/systems/collision_damage.rb b/app/systems/collision_damage.rb new file mode 100644 index 0000000..9e47c0c --- /dev/null +++ b/app/systems/collision_damage.rb @@ -0,0 +1,14 @@ +FF::Scn::BoidRules.add( + FF::Sys.new("CollisionDamage", priority: 65) do + FF::Cmp::Hitcircle.each do |hitcircle_self| + boid_self = hitcircle_self.entities[0].components[FF::Cmp::Boid][0] + FF::Cmp::Hitcircle.each do |hitcircle_target| + next if hitcircle_self == hitcircle_target + boid_target = hitcircle_target.entities[0].components[FF::Cmp::Boid][0] + if Math.sqrt(((boid_self.x - boid_target.x) ** 2) + ((boid_self.y - boid_target.y) ** 2)) < (hitcircle_target.r + hitcircle_self.r) + hitcircle_target.entities[0].components[FF::Cmp::Hp][0].health -= hitcircle_self.entities[0].components[FF::Cmp::CollisionDamage][0].damage + end + end + end + end +) |
