summaryrefslogtreecommitdiffhomepage
path: root/app/systems/collision_damage.rb
blob: df2e0501160668d6c4fb73bc5fdeb1292e0a3abc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
FF::Scn::BoidRules.add(
  FF::Sys.new("CollisionDamage", priority: 65) do

    FF::Cmp::SingletonEnemyTeam[0].entities.each do |enemy_entity|
      hitcircle_self = enemy_entity.components[FF::Cmp::Hitcircle][0]
      boid_self = hitcircle_self.entities[0].components[FF::Cmp::Boid][0]
      FF::Cmp::SingletonBullet[0].entities.each do |bullet_entity|
        hitcircle_target = bullet_entity.components[FF::Cmp::Hitcircle][0]
        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)
          #puts 'checks here'.upcase
          #puts 'hp dont exist' if hitcircle_target.entities[0].components[FF::Cmp::Hp].nil?
          #puts 'collision damage dont exist' if hitcircle_target.entities[0].components[FF::Cmp::CollisionDamage].nil?
          #puts 'checks end'.upcase
          hitcircle_target.entities[0].components[FF::Cmp::Hp][0].health -= hitcircle_self.entities[0].components[FF::Cmp::CollisionDamage][0].damage
          hitcircle_self.entities[0].components[FF::Cmp::Hp][0].health -= hitcircle_target.entities[0].components[FF::Cmp::CollisionDamage][0].damage
        end

      end

      player = FF::Cmp::SingletonPlayer[0].entities[0]
      unless player.nil?
        hitcircle_target = player.components[FF::Cmp::Hitcircle][0]
        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
          hitcircle_self.entities[0].components[FF::Cmp::Hp][0].health -= hitcircle_target.entities[0].components[FF::Cmp::CollisionDamage][0].damage
        end
      end
    end
  end
)
=begin
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
    next if hitcircle_self.entities[0].components[FF::Cmp::Team][0].team == hitcircle_target.entities[0].components[FF::Cmp::Team][0].team
    #puts 'passed first check'
    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)
      puts 'checks here'.upcase
      puts 'hp dont exist' if hitcircle_target.entities[0].components[FF::Cmp::Hp].nil?
      puts 'collision damage dont exist' if hitcircle_target.entities[0].components[FF::Cmp::CollisionDamage].nil?
      puts 'checks end'.upcase
      hitcircle_target.entities[0].components[FF::Cmp::Hp][0].health -= hitcircle_self.entities[0].components[FF::Cmp::CollisionDamage][0].damage
    end
  end
end
end
)
=end