summaryrefslogtreecommitdiffhomepage
path: root/app/factories/ships/sample_enemy.rb
blob: 6ebaef3af3eb56ac33f5fd55ef0c821c2ecf95a5 (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
class Factory
  class SampleEnemy
    def self.defaults
      @defaults ||= {
        boid_bounds_strength: 0.6,
        boids_alignment_strength: 0.002,
        boids_seperation_strength: 0.0005,
        boids_seperation_distance: 150,
        boids_cohesion_strength: 0.0005,
        hp_health: 100,
        collision_damage_damage: 100,
        hitcircle_r: 12,
        boid_minimum_speed_speed: 7,
        decay_speed_multiplier: 0.8,
      }
    end
    def self.new(x: 0, y: 0, vx: -3, vy: -3)
      sprite = FF::Cmp::Sprite.new
      sprite.props[:path] = [
        'sprites/kenny/Ships/WeebillGrey.png',
        'sprites/kenny/Ships/BuntingGrey.png',
        'sprites/kenny/Ships/NighthawkGrey.png',
        'sprites/kenny/Ships/MagpieGrey.png',
        'sprites/kenny/Ships/WaxwingGrey.png',
        'sprites/kenny/Ships/LongspurGrey.png',
        'sprites/kenny/Ships/WarblerGrey.png',
        'sprites/kenny/Ships/NutcrackerGrey.png',
      ].sample
      FF::Ent.new(
        FF::Cmp::Boid.new(x: x, y: y, vx: vx, vy: vy, w: 32, h: 32),
        sprite,
        FF::Cmp::BoidBounds.new(strength: self.defaults[:boid_bounds_strength]),
        FF::Cmp::BoidsAlignment.new(strength: self.defaults[:boids_alignment_strength]),
        FF::Cmp::BoidsSeparation.new(distance: self.defaults[:boids_seperation_distance], strength: self.defaults[:boids_seperation_strength]),
        FF::Cmp::BoidsCohesion.new(strength: self.defaults[:boids_cohesion_strength]),
        FF::Cmp::Hp.new(health: self.defaults[:hp_health]),
        FF::Cmp::CollisionDamage.new(damage: self.defaults[:collision_damage_damage]),
        FF::Cmp::Hitcircle.new(r: self.defaults[:hitcircle_r]),
        FF::Cmp::BoidMinimumSpeed.new(speed: self.defaults[:boid_minimum_speed_speed]),
        FF::Cmp::DecaySpeed.new(strength: self.defaults[:decay_speed_multiplier]),
        FF::Cmp::Team.new,
        FF::Cmp::SingletonDebugVectorArrow[0],
        FF::Cmp::SingletonCamera[0],
        FF::Cmp::SingletonEnemyTeam[0],
      )
    end
  end
end