godot-shooter / commit
Moving a bunch of settings into Weapons class.
Player.gd | 15 ++++----------- Player.tscn | 1 + Weapon.gd | 9 ++++----- Weapons.gd | 18 +++++++++++++----- World.gd | 8 ++++++-- 5 files changed, 28 insertions(+), 23 deletions(-) diff --git a/Player.gd b/Player.gd index cec9de3..a21a110 100644 --- a/Player.gd +++ b/Player.gd @@ -8,7 +8,6 @@ export var health = 10 export var max_health = 10 export var is_invincible = false export var turn_rate = 0.03 -export var shooting_range = 350 export var shield_active = true export var radar_min_radius = 350 export var radar_max_radius = 2000 @@ -48,13 +47,13 @@ func _physics_process(_delta: float) -> void: velocity = move_and_slide(velocity) global_rotation = velocity.angle() + PI/2.0 -func update_radar(enemies: Array): +func clear_radar(): radar_sprite.modulate = Color(1,1,1,0) - # remove all existing radar items var children = radar_container.get_children() for child in children: radar_container.remove_child(child) +func update_radar(enemies: Array, color: Color): for e in enemies: var enemy: Enemy = e var diff = enemy.global_position - global_position @@ -65,7 +64,7 @@ func update_radar(enemies: Array): var angle_to = Vector2.UP.angle_to(diff) var item: Sprite = radar_sprite.duplicate() item.rotate(angle_to) - item.modulate = Color(1,0,0,ratio * .5) + item.modulate = Color(color.r,color.g,color.b,ratio * .5) radar_container.add_child(item) func restart(): @@ -106,12 +105,6 @@ func hurt(damage_amount: int = 1): return if shield_active: disable_shield() -# var timer = Timer.new() -# timer.wait_time = shield_restart_period_seconds -# timer.one_shot = true -# timer.connect("timeout", self, "enable_shield") -# add_child(timer) -# timer.start() else: health -= damage_amount if health <= 0: @@ -138,7 +131,7 @@ func shoot_at(pos: Vector2): if !can_fire: return can_fire = false - $ShotTimer.wait_time = weapon.shot_period_seconds + $ShotTimer.wait_time = weapon.particle_lifetime_secs $ShotTimer.start() var particle = weapon.particle.instance() owner.add_child(particle) diff --git a/Player.tscn b/Player.tscn index e9e0f61..db6d667 100644 --- a/Player.tscn +++ b/Player.tscn @@ -161,6 +161,7 @@ rotation = -0.000165944 z_index = 10 script = ExtResource( 3 ) shield_active = false +radar_max_radius = 3000 [node name="ShipCollisionShape" type="CollisionPolygon2D" parent="."] polygon = PoolVector2Array( -0.996349, -22.0002, -8.00133, 7.99867, -7.00166, 9.99884, -11.002, 11.9982, -14.0007, 3.99768, -20.002, 11.9967, -17.0038, 22.9972, -9.00465, 27.9985, -8.00448, 26.9987, -10.0027, 15.9983, -6.00232, 13.999, -0.00398266, 24, 4.99784, 13.0008, 9.99734, 16.0017, 6.99552, 27.0012, 7.99519, 29.0013, 10.9952, 29.0018, 17.996, 24.003, 20.998, 12.0035, 15.9993, 4.00266, 12.9993, 4.00216, 10.9982, 11.0018, 6.99834, 10.0012, 0.00381671, -23 ) diff --git a/Weapon.gd b/Weapon.gd index ffe8fdd..2f92276 100644 --- a/Weapon.gd +++ b/Weapon.gd @@ -1,8 +1,7 @@ class_name Weapon -var shot_period_seconds = .5 +var cooldown_seconds = .5 +var shooting_range = 400 var particle: PackedScene - -func _init(period_seconds, scene) -> void: - shot_period_seconds = period_seconds - particle = scene +var particle_speed = 100 +var particle_lifetime_secs = 5 diff --git a/Weapons.gd b/Weapons.gd index a22ea22..3aa94da 100644 --- a/Weapons.gd +++ b/Weapons.gd @@ -1,12 +1,20 @@ # Note: `tool` is optional but without it there are no error reporting in the editor tool -static func create_basic_gun(period_secs: float = 0.5) -> Weapon: - var bullet = preload("res://Bullet.tscn") - var weapon = Weapon.new(period_secs, bullet) +static func create_basic_gun(period_secs: float = 1) -> Weapon: + var weapon = Weapon.new() + weapon.particle = preload("res://Bullet.tscn") + weapon.shooting_range = 500 + weapon.particle_lifetime_secs = period_secs + weapon.particle_speed = 300 + weapon.cooldown_seconds = 1 return weapon static func create_rocket_gun(period_secs: float = 1) -> Weapon: - var rocket = preload("res://Rocket.tscn") - var weapon = Weapon.new(period_secs, rocket) + var weapon = Weapon.new() + weapon.particle = preload("res://Rocket.tscn") + weapon.shooting_range = 300 + weapon.particle_lifetime_secs = period_secs + weapon.particle_speed = 100 + weapon.cooldown_seconds = 1 return weapon diff --git a/World.gd b/World.gd index ca0bb31..e675ad9 100644 --- a/World.gd +++ b/World.gd @@ -7,6 +7,8 @@ const PowerUp = preload("res://PowerUp.tscn") var width = ProjectSettings.get("display/window/size/width") var height = ProjectSettings.get("display/window/size/height") +onready var player = $Player + var destination: Vector2 var is_destination_set = false var generators = [ @@ -121,7 +123,9 @@ func _process(_delta: float) -> void: for e in filteredEnemies: var enemy: Enemy = e enemy.turn_towards($Player.position) - $Player.update_radar(filteredEnemies) + + player.clear_radar() + player.update_radar(filteredEnemies, Color.red) func pause(): get_tree().paused = true @@ -164,7 +168,7 @@ func _on_ShootTimer_timeout() -> void: filteredEnemies.sort_custom(self, "sort_enemies_ascending_distance") var closest_enemy: Enemy = filteredEnemies[0] var dist = closest_enemy.global_position.distance_to($Player.global_position) - if dist < $Player.shooting_range: + if dist < $Player.weapon.shooting_range: closest_enemy.is_targeted = true $Player.shoot_at(closest_enemy.global_position) $PlayerToTarget.points[0] = $Player.global_position