diff options
| author | _Tradam <[email protected]> | 2021-12-19 21:45:57 -0500 |
|---|---|---|
| committer | GitHub <[email protected]> | 2021-12-19 21:45:57 -0500 |
| commit | 154030e74b007b6fc65e45e50107b69b717c7b1f (patch) | |
| tree | 6637be53e3a095bbac8d62d4c1c433c443be7bd9 /app/systems | |
| parent | 1016853319aa9e5ebbe23a940fe53054e05aa6e2 (diff) | |
| parent | 9d840260e873ee914a97eb37ab7aeaab54c098bf (diff) | |
| download | SteelWings-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.rb | 2 | ||||
| -rw-r--r-- | app/systems/player_weapon.rb | 16 | ||||
| -rw-r--r-- | app/systems/start_game.rb | 5 |
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( |
