summaryrefslogtreecommitdiffhomepage
path: root/app/systems
diff options
context:
space:
mode:
author_Tradam <[email protected]>2021-12-19 21:45:57 -0500
committerGitHub <[email protected]>2021-12-19 21:45:57 -0500
commit154030e74b007b6fc65e45e50107b69b717c7b1f (patch)
tree6637be53e3a095bbac8d62d4c1c433c443be7bd9 /app/systems
parent1016853319aa9e5ebbe23a940fe53054e05aa6e2 (diff)
parent9d840260e873ee914a97eb37ab7aeaab54c098bf (diff)
downloadSteelWings-154030e74b007b6fc65e45e50107b69b717c7b1f.tar.gz
SteelWings-154030e74b007b6fc65e45e50107b69b717c7b1f.zip
Merge pull request #4 from realtradam/pshoot-dev
Finished player shooting bullet system
Diffstat (limited to 'app/systems')
-rw-r--r--app/systems/collision_damage.rb2
-rw-r--r--app/systems/player_weapon.rb16
-rw-r--r--app/systems/start_game.rb5
3 files changed, 22 insertions, 1 deletions
diff --git a/app/systems/collision_damage.rb b/app/systems/collision_damage.rb
index 9e47c0c..7ed0216 100644
--- a/app/systems/collision_damage.rb
+++ b/app/systems/collision_damage.rb
@@ -4,6 +4,8 @@ FF::Scn::BoidRules.add(
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)
hitcircle_target.entities[0].components[FF::Cmp::Hp][0].health -= hitcircle_self.entities[0].components[FF::Cmp::CollisionDamage][0].damage
diff --git a/app/systems/player_weapon.rb b/app/systems/player_weapon.rb
new file mode 100644
index 0000000..02a50ec
--- /dev/null
+++ b/app/systems/player_weapon.rb
@@ -0,0 +1,16 @@
+FF::Scn::BoidRules.add(
+ FF::Sys.new('PlayerWeapon') do
+ if $gtk.args.inputs.mouse.down
+ player = FF::Cmp::SingletonPlayer[0].entities[0]
+ boid = player.components[FF::Cmp::Boid][0]
+ weapon = player.components[FF::Cmp::Weapon][0]
+ if player.components[FF::Cmp::Weapon][0].cooldown <= 0
+ # 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)
+ bullet.remove(bullet.components[FF::Cmp::Team][0])
+ bullet.add(FF::Cmp::Team.new(team: 'player'))
+ end
+ end
+ end
+)
diff --git a/app/systems/start_game.rb b/app/systems/start_game.rb
index dd39ab4..42a3916 100644
--- a/app/systems/start_game.rb
+++ b/app/systems/start_game.rb
@@ -32,7 +32,10 @@ FF::Sys.new('StartGame', priority: 50 ) do
sprite,
debug_arrow,
FF::Cmp::SingletonCamera[0],
- FF::Cmp::Follow.new(target: :mouse, strength: 500)
+ FF::Cmp::Follow.new(target: :mouse, strength: 500),
+ FF::Cmp::SingletonPlayer[0],
+ FF::Cmp::Team.new(team: 'player'),
+ FF::Cmp::Weapon.new,
)
FF::Stg.add(