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 | |
| 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
| -rw-r--r-- | app/components/singleton_camera.rb | 4 | ||||
| -rw-r--r-- | app/components/teams/singleton_player_team.rb | 4 | ||||
| -rw-r--r-- | app/components/teams/team.rb | 2 | ||||
| -rw-r--r-- | app/components/weapon.rb | 5 | ||||
| -rw-r--r-- | app/factories/bullet.rb | 5 | ||||
| -rw-r--r-- | app/factories/ships/osprey.rb | 3 | ||||
| -rw-r--r-- | app/main.rb | 4 | ||||
| -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 |
10 files changed, 42 insertions, 8 deletions
diff --git a/app/components/singleton_camera.rb b/app/components/singleton_camera.rb index 6d072c1..61223d4 100644 --- a/app/components/singleton_camera.rb +++ b/app/components/singleton_camera.rb @@ -1,6 +1,6 @@ FF::Cmp.new('SingletonCamera', - singleton: true, :x, :y, - :zoom, :angle) + :zoom, :angle, + singleton: true) FF::Cmp::SingletonCamera.new(x: 0.0, y: 0.0, zoom: 1.0, angle: 0.0) diff --git a/app/components/teams/singleton_player_team.rb b/app/components/teams/singleton_player_team.rb index 22c68ee..1a75a78 100644 --- a/app/components/teams/singleton_player_team.rb +++ b/app/components/teams/singleton_player_team.rb @@ -1,3 +1,3 @@ -FF::Cmp.new('SingletonPlayerTeam', +FF::Cmp.new('SingletonPlayer', singleton: true) -FF::Cmp::SingletonPlayerTeam.new +FF::Cmp::SingletonPlayer.new diff --git a/app/components/teams/team.rb b/app/components/teams/team.rb new file mode 100644 index 0000000..da0ae3e --- /dev/null +++ b/app/components/teams/team.rb @@ -0,0 +1,2 @@ +FF::Cmp.new('Team', + team: 'enemy') diff --git a/app/components/weapon.rb b/app/components/weapon.rb new file mode 100644 index 0000000..bb7becd --- /dev/null +++ b/app/components/weapon.rb @@ -0,0 +1,5 @@ +FF::Cmp.new('Weapon', + damage: 35, + cooldown: 0, + cooldown_max: 15, + speed: 20) diff --git a/app/factories/bullet.rb b/app/factories/bullet.rb index 160613c..50a68c0 100644 --- a/app/factories/bullet.rb +++ b/app/factories/bullet.rb @@ -1,15 +1,16 @@ class Factory class Bullet - def self.new(damage: 10, x:, y:) + def self.new(x:, y:, damage: 10, vx: 10, vy: 0) puts 'new ent created' sprite = FF::Cmp::Sprite.new sprite.props[:path] = 'sprites/kenny/Tiles/tile_0000.png' FF::Ent.new( sprite, - FF::Cmp::Boid.new(x: x, y: y, vx: 10, w: 16, h: 16), + FF::Cmp::Boid.new(x: x, y: y, vx: vx, vy: vy, w: 16, h: 16), FF::Cmp::SingletonCamera[0], FF::Cmp::Hitcircle.new(r: 10), FF::Cmp::Hp.new(health: 1), + FF::Cmp::Team.new, FF::Cmp::CollisionDamage.new(damage: damage), ) end diff --git a/app/factories/ships/osprey.rb b/app/factories/ships/osprey.rb index 4dd5874..ff8cd19 100644 --- a/app/factories/ships/osprey.rb +++ b/app/factories/ships/osprey.rb @@ -4,7 +4,7 @@ class Factory sprite = FF::Cmp::Sprite.new sprite.props[:path] = 'sprites/kenny/Ships/Osprey.png' FF::Ent.new( - FF::Cmp::Boid.new(x: x, y: y, vx: 25, vy: 25, w: 32, h: 32), + FF::Cmp::Boid.new(x: x, y: y, vx: 0, vy: 0, w: 32, h: 32), sprite, FF::Cmp::BoidBounds.new(strength: 0.6), FF::Cmp::BoidsAlignment.new(strength: 1), @@ -13,6 +13,7 @@ class Factory FF::Cmp::Hp.new(health: 100), FF::Cmp::CollisionDamage.new(damage: 100), FF::Cmp::Hitcircle.new(r: 12), + FF::Cmp::Team.new, FF::Cmp::SingletonDebugVectorArrow[0], FF::Cmp::SingletonCamera[0], ) diff --git a/app/main.rb b/app/main.rb index 9056d53..a5a1c5c 100644 --- a/app/main.rb +++ b/app/main.rb @@ -18,6 +18,9 @@ require 'app/components/stats/hp.rb' require 'app/components/hitcircle.rb' require 'app/components/teams/singleton_player_team.rb' require 'app/components/teams/singleton_enemy_team.rb' +require 'app/components/weapon.rb' +require 'app/components/teams/team.rb' + require 'app/systems/init_title_screen.rb' require 'app/systems/title_screen.rb' @@ -35,6 +38,7 @@ require 'app/systems/debug/debug_render_vector_arrow.rb' require 'app/systems/camera.rb' require 'app/systems/collision_damage.rb' require 'app/systems/death.rb' +require 'app/systems/player_weapon.rb' require 'app/factories/bullet.rb' require 'app/factories/ships/osprey.rb' 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( |
