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
|