summaryrefslogtreecommitdiffhomepage
path: root/app/systems
diff options
context:
space:
mode:
Diffstat (limited to 'app/systems')
-rw-r--r--app/systems/ai/randomize_ai.rb4
-rw-r--r--app/systems/ai/rejoin.rb1
-rw-r--r--app/systems/ai/scatter.rb7
-rw-r--r--app/systems/ai/target_player.rb5
-rw-r--r--app/systems/collision_damage.rb47
-rw-r--r--app/systems/player_weapon.rb10
-rw-r--r--app/systems/spawn_enemy.rb9
-rw-r--r--app/systems/start_game.rb13
8 files changed, 55 insertions, 41 deletions
diff --git a/app/systems/ai/randomize_ai.rb b/app/systems/ai/randomize_ai.rb
index f272181..b3ab59b 100644
--- a/app/systems/ai/randomize_ai.rb
+++ b/app/systems/ai/randomize_ai.rb
@@ -9,7 +9,7 @@ FF::Scn::BoidRules.add(
#puts 'remove pick'
end
FF::Cmp::BoidsSeparation.each do |sep|
- if rand < 0.3
+ if rand < 0.05
sep.entities[0].add random_ai_pick
#puts 'pick'
end
@@ -26,7 +26,7 @@ FF::Scn::BoidRules.add(
#puts 'target'
end
#timer.interval = (300..1200).to_a.sample
- timer.interval = 60
+ timer.interval = (5..20).to_a.sample
#puts timer.interval
timer.timer = 0
end
diff --git a/app/systems/ai/rejoin.rb b/app/systems/ai/rejoin.rb
index 9e06eb7..bc804de 100644
--- a/app/systems/ai/rejoin.rb
+++ b/app/systems/ai/rejoin.rb
@@ -2,6 +2,7 @@ FF::Sys.new("Rejoin", priority: 40) do
FF::Cmp::SingletonRandomAIPick[0].entities.each do |entity|
sep = entity.components[FF::Cmp::BoidsSeparation][0]
sep.distance = Factory::SampleEnemy.defaults[:boids_seperation_distance]
+ sep.strength = Factory::SampleEnemy.defaults[:boids_seperation_strength]
alignment_mgr = entity.components[FF::Cmp::BoidsAlignment]
cohesion_mgr = entity.components[FF::Cmp::BoidsCohesion]
if alignment_mgr.nil? || alignment_mgr.empty?
diff --git a/app/systems/ai/scatter.rb b/app/systems/ai/scatter.rb
index 82bcb65..1b51061 100644
--- a/app/systems/ai/scatter.rb
+++ b/app/systems/ai/scatter.rb
@@ -1,11 +1,8 @@
FF::Sys.new("Scatter", priority: 40) do
FF::Cmp::SingletonRandomAIPick[0].entities.each do |entity|
sep = entity.components[FF::Cmp::BoidsSeparation][0]
- # I did times 3 becase then it will always be greater then
- # what it was before and that means it will force a
- # seperation to happen even if the default value is
- # changed and you forget to update this number here
- sep.distance = Factory::SampleEnemy.defaults[:boids_seperation_distance] * 3
+ sep.distance = Factory::SampleEnemy.defaults[:boids_seperation_distance] * 10
+ sep.strength = Factory::SampleEnemy.defaults[:boids_seperation_strength]
#puts 'remove align/cohesion/follow'.upcase
alignment_mgr = entity.components[FF::Cmp::BoidsAlignment]
cohesion_mgr = entity.components[FF::Cmp::BoidsCohesion]
diff --git a/app/systems/ai/target_player.rb b/app/systems/ai/target_player.rb
index 1e4a3ea..bf8b9e8 100644
--- a/app/systems/ai/target_player.rb
+++ b/app/systems/ai/target_player.rb
@@ -1,11 +1,12 @@
FF::Sys.new("TargetPlayer", priority: 40) do
FF::Cmp::SingletonRandomAIPick[0].entities.each do |entity|
sep = entity.components[FF::Cmp::BoidsSeparation][0]
- sep.distance = 200
+ sep.distance = Factory::SampleEnemy.defaults[:boids_seperation_distance]
+ sep.strength = Factory::SampleEnemy.defaults[:boids_seperation_strength]
follow_mgr = entity.components[FF::Cmp::Follow]
player_boid = FF::Cmp::SingletonPlayer[0].entities[0].components[FF::Cmp::Boid][0]
if follow_mgr.nil? || follow_mgr.empty?
- entity.add FF::Cmp::Follow.new(target: player_boid, strength: 1.2)
+ entity.add FF::Cmp::Follow.new(target: player_boid, strength: 0.6)
end
end
end
diff --git a/app/systems/collision_damage.rb b/app/systems/collision_damage.rb
index df2e050..676589d 100644
--- a/app/systems/collision_damage.rb
+++ b/app/systems/collision_damage.rb
@@ -1,30 +1,33 @@
FF::Scn::BoidRules.add(
- FF::Sys.new("CollisionDamage", priority: 65) do
+ FF::Sys.new("CollisionDamage", priority: 98) 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
+ sprite = enemy_entity.components[FF::Cmp::Sprite][0].props
+ if (sprite[:x] < 1312) && (sprite[:x] > -32) && (sprite[:y] < 752) && (sprite[:y] > -32)
+ 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
+ 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
+ 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
diff --git a/app/systems/player_weapon.rb b/app/systems/player_weapon.rb
index 2ecd250..9cb4df0 100644
--- a/app/systems/player_weapon.rb
+++ b/app/systems/player_weapon.rb
@@ -1,11 +1,13 @@
FF::Scn::BoidRules.add(
FF::Sys.new('PlayerWeapon') do
- if $gtk.args.inputs.mouse.down
- player = FF::Cmp::SingletonPlayer[0].entities[0]
- unless player.nil?
+ player = FF::Cmp::SingletonPlayer[0].entities[0]
+ unless player.nil?
+ weapon = player.components[FF::Cmp::Weapon][0]
+ weapon.cooldown -= 1 unless weapon.cooldown <= 0
+ if $gtk.args.inputs.mouse.button_left
boid = player.components[FF::Cmp::Boid][0]
- weapon = player.components[FF::Cmp::Weapon][0]
if player.components[FF::Cmp::Weapon][0].cooldown <= 0
+ weapon.cooldown += weapon.cooldown_max
# spawn bullet facing correct angle
mag = Math.sqrt((boid.vx ** 2) + (boid.vy ** 2))
bullet = Factory::Bullet.new(damage: weapon.damage, vx: (boid.vx/mag) * weapon.speed, vy: (boid.vy/mag) * weapon.speed, x: boid.x, y: boid.y)
diff --git a/app/systems/spawn_enemy.rb b/app/systems/spawn_enemy.rb
new file mode 100644
index 0000000..6bb2253
--- /dev/null
+++ b/app/systems/spawn_enemy.rb
@@ -0,0 +1,9 @@
+FF::Scn::BoidRules.add(
+ FF::Sys.new("SpawnEnemy", priority: 500) do
+ while FF::Cmp::SingletonEnemyTeam[0].entities.length < 16
+ position_range = ((1280*2.5).to_i..(1280*3)).to_a
+ posneg = [1,-1]
+ Factory::SampleEnemy.new(x: position_range.sample * posneg.sample, y: position_range.sample * posneg.sample)
+ end
+ end
+)
diff --git a/app/systems/start_game.rb b/app/systems/start_game.rb
index a0073bd..e2e5501 100644
--- a/app/systems/start_game.rb
+++ b/app/systems/start_game.rb
@@ -18,7 +18,7 @@ FF::Sys.new('StartGame', priority: 50 ) do
{x: 700, y: 200},
{x: 150, y: 250},
]
- position_range = (500..1000).to_a
+ position_range = (400..(1280*2)).to_a
sprite = FF::Cmp::Sprite.new
sprite.props[:path] = 'sprites/background.png'
@@ -27,8 +27,9 @@ FF::Sys.new('StartGame', priority: 50 ) do
FF::Cmp::SingletonCamera[0],
FF::Cmp::Boid.new(h: 1920 * 2, w: 1920 * 2)
)
- 8.times do |pos|
- Factory::SampleEnemy.new(x: position_range.sample, y: position_range.sample)
+ posneg = [1,-1]
+ 16.times do |pos|
+ Factory::SampleEnemy.new(x: position_range.sample * posneg.sample, y: position_range.sample * posneg.sample)
end
sprite = FF::Cmp::Sprite.new
@@ -44,16 +45,16 @@ FF::Sys.new('StartGame', priority: 50 ) do
debug_arrow,
FF::Cmp::SingletonCamera[0],
FF::Cmp::SingletonMoveCamera[0],
- FF::Cmp::BoidBounds.new,
+ FF::Cmp::BoidBounds.new(strength: 3),
FF::Cmp::Follow.new(target: :mouse, strength: 0.007),
FF::Cmp::SingletonPlayer[0],
FF::Cmp::Team.new(team: 'player'),
FF::Cmp::Weapon.new,
FF::Cmp::BoidMinimumSpeed.new(speed: 5),
FF::Cmp::DecaySpeed.new(strength: 0.8),
- FF::Cmp::Hp.new(health: 100),
+ FF::Cmp::Hp.new(health: 300),
FF::Cmp::CollisionDamage.new(damage: 100),
- FF::Cmp::Hitcircle.new(r: 32),
+ FF::Cmp::Hitcircle.new(r: 16),
)
score_label_shadow = FF::Cmp::Label.new