godot-shooter / commit
Removed most messages for powerups, kept messages for killing enemies.
HUD.gd | 11 +++++------ LevelItemGenerator.gd | 1 - Player.gd | 17 +++++++++++------ Player.tscn | 20 +++++++++++++++++++- PowerUp.tscn | 9 +++++---- Utils.gd | 13 +++++++++++++ World.gd | 23 ++++++----------------- World.tscn | 2 +- 8 files changed, 60 insertions(+), 36 deletions(-) diff --git a/HUD.gd b/HUD.gd index 10275ab..a6cbdad 100644 --- a/HUD.gd +++ b/HUD.gd @@ -12,8 +12,6 @@ onready var score_label = $HBoxContainer/Score onready var level_label = $MarginContainer/HBoxContainer2/Level onready var objective_label = $MarginContainer/HBoxContainer2/Objective -var message_count = 0 - func _process(_delta: float) -> void: score_label.text = "%s" % score level_label.text = "%s" % level @@ -32,16 +30,17 @@ func restart(): get_tree().paused = false func show_message(message: String, duration_seconds: int = 2) -> void: - message_count += 1 - + var now_msecs = OS.get_system_time_msecs() +# var stack = Utils.get_stack_string() +# Utils.log("showing message:", message, "at:", now_msecs, "in stack:", stack) var fade_in = animation_player.get_animation("message fade in") fade_in.track_set_key_value(1, 0, message) var fade_out = animation_player.get_animation("message fade out") fade_out.track_set_key_time(0, 1, duration_seconds) - var new_fade_in = "fade in %s" % message_count + var new_fade_in = "fade in %s" % now_msecs animation_player.add_animation(new_fade_in, fade_in) - var new_fade_out = "fade out %s" % message_count + var new_fade_out = "fade out %s" % now_msecs animation_player.add_animation(new_fade_out, fade_out) if animation_player.is_playing(): diff --git a/LevelItemGenerator.gd b/LevelItemGenerator.gd index d3be1c6..a38e7f7 100644 --- a/LevelItemGenerator.gd +++ b/LevelItemGenerator.gd @@ -29,6 +29,5 @@ func run(node: Node) -> bool: var item: Node = funcref(instance_object, creator_name).call_func() item.add_to_group(group_name) node.add_child(item) - items = node.get_tree().get_nodes_in_group(group_name) generated_count += 1 return false diff --git a/Player.gd b/Player.gd index f30202b..9e3eba5 100644 --- a/Player.gd +++ b/Player.gd @@ -11,7 +11,6 @@ export var turn_rate = 0.03 export var shooting_range = 500 export var shield_active = true export var shield_restart_period_seconds = 5 -signal shield_changed var PopupControl = preload("res://Popup.tscn") @@ -21,6 +20,12 @@ var can_fire = true var destination: Vector2 var is_destination_set = false +func _ready() -> void: + if shield_active: + enable_shield() + else: + $Graphics/Alive/Shield/Sprite/AnimationPlayer.play("fade out instant") + func _process(_delta: float) -> void: if dead: return @@ -64,16 +69,16 @@ func speed_up(delta: int = 10): func enable_shield() -> void: shield_active = true $Graphics/Alive/Shield/Sprite/AnimationPlayer.play("fade in") - emit_signal("shield_changed", shield_active) + +func disable_shield() -> void: + shield_active = false + $Graphics/Alive/Shield/Sprite/AnimationPlayer.play("fade out") func hurt(damage_amount: int = 1): if dead or is_invincible: return if shield_active: - shield_active = false - $Graphics/Alive/Shield/Sprite/AnimationPlayer.play("fade out") - emit_signal("shield_changed", shield_active) - + disable_shield() var timer = Timer.new() timer.wait_time = shield_restart_period_seconds timer.one_shot = true diff --git a/Player.tscn b/Player.tscn index e1ca400..9fff587 100644 --- a/Player.tscn +++ b/Player.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=15 format=2] +[gd_scene load_steps=16 format=2] [ext_resource path="res://assets/kenney_simple-space/PNG/Default/ship_sidesA.png" type="Texture" id=1] [ext_resource path="res://Explosion.tscn" type="PackedScene" id=2] @@ -140,10 +140,27 @@ tracks/0/keys = { "values": [ Color( 0, 0, 1, 1 ), Color( 0, 0, 1, 0 ) ] } +[sub_resource type="Animation" id=8] +resource_name = "fade out instant" +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath(".:modulate") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 0, 0, 1, 0 ) ] +} + [node name="Player" type="KinematicBody2D" groups=["player"]] rotation = -0.000165944 script = ExtResource( 3 ) bullet = ExtResource( 4 ) +shield_active = false [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 ) @@ -193,6 +210,7 @@ anims/RESET = SubResource( 3 ) anims/blinking = SubResource( 4 ) "anims/fade in" = SubResource( 5 ) "anims/fade out" = SubResource( 6 ) +"anims/fade out instant" = SubResource( 8 ) [node name="Dead" type="Node2D" parent="Graphics"] visible = false diff --git a/PowerUp.tscn b/PowerUp.tscn index 108f725..e361657 100644 --- a/PowerUp.tscn +++ b/PowerUp.tscn @@ -32,7 +32,7 @@ tracks/1/loop_wrap = true tracks/1/imported = false tracks/1/enabled = true tracks/1/keys = { -"times": PoolRealArray( -0.2, 1.5 ), +"times": PoolRealArray( 0, 1.5 ), "transitions": PoolRealArray( 1, 1 ), "update": 0, "values": [ Vector2( 0.01, 0.01 ), Vector2( 1, 1 ) ] @@ -69,7 +69,6 @@ tracks/1/keys = { } [node name="PowerUp" type="Node2D"] -scale = Vector2( 0.01, 0.01 ) script = ExtResource( 3 ) [node name="Area2D" type="Area2D" parent="."] @@ -82,9 +81,11 @@ position = Vector2( 0, 16 ) shape = SubResource( 4 ) [node name="Label" type="Label" parent="Area2D"] -margin_left = -25.0 +anchor_left = 0.5 +anchor_right = 0.5 +margin_left = -26.0 margin_top = 19.0 -margin_right = 26.0 +margin_right = 25.0 margin_bottom = 54.0 theme = ExtResource( 1 ) text = "+SP" diff --git a/Utils.gd b/Utils.gd index c9b3af2..253ddea 100644 --- a/Utils.gd +++ b/Utils.gd @@ -20,3 +20,16 @@ static func filter(filter_function: FuncRef, candidate_array: Array)->Array: filtered_array.append(candidate_value) return filtered_array + +static func get_stack_string() -> String: + var stack = get_stack() + var result = "" + var index = 0 + for item in stack: + var function = item.function + var line = item.line + var source = item.source + result += "%s: %s - %s - %s\n" % [ index, function, line, source ] + index += 1 + return result + diff --git a/World.gd b/World.gd index 760ad76..d3403c3 100644 --- a/World.gd +++ b/World.gd @@ -23,13 +23,14 @@ func enemy_killed(_position: Vector2): completed_objectives += 1 func health_consumed(): $Player.heal() - $UI/HUD.show_message("+1 health", 1) +# $UI/HUD.show_message("+1 health", 1) func shield_consumed(): + Utils.log("consuming a shield and sending a message") $Player.enable_shield() - $UI/HUD.show_message("Shield!", 1) +# $UI/HUD.show_message("+1 shield", 1) func gold_consumed(): $UI/HUD.score += 5 - $UI/HUD.show_message("+5 points", 1) +# $UI/HUD.show_message("+5 points", 1) func create_enemy() -> Enemy: var enemy = Enemy.instance() @@ -39,7 +40,7 @@ func create_enemy() -> Enemy: func create_health() -> PowerUp: var health = PowerUp.instance() - health.position = get_new_item_pos(1 + randf()) + health.position = get_new_item_pos(randf() + .25) health.connect("consumed", self, "health_consumed") health.label = "+HP" health.color = Color.green @@ -47,7 +48,7 @@ func create_health() -> PowerUp: func create_shield() -> PowerUp: var shield = PowerUp.instance() - shield.position = get_new_item_pos(1 + randf()) + shield.position = get_new_item_pos(randf() + .5) shield.connect("consumed", self, "shield_consumed") shield.label = "Shield" shield.color = Color.blue @@ -112,18 +113,6 @@ func _process(_delta: float) -> void: var enemy: Enemy = e enemy.turn_towards($Player.position) - # remove environment nodes that are too far away - # as they are removed, they should replace themselves - var screen_radius = get_viewport().get_visible_rect().size.length() / 2 + 10 - var env_items = $Environment.get_children() - for i in env_items: - var item: Node2D = i - var diff = $Player.global_position - item.global_position - var dist = diff.length() - var is_too_far = dist > (2.0 * screen_radius) - if is_too_far: - item.queue_free() - func pause(): get_tree().paused = true $UI/PauseMenu.show() diff --git a/World.tscn b/World.tscn index 6d6aa5c..3aea5cf 100644 --- a/World.tscn +++ b/World.tscn @@ -46,6 +46,7 @@ __meta__ = { visible = false [node name="Player" parent="." instance=ExtResource( 2 )] +health = 5 [node name="Environment" type="Node2D" parent="."] @@ -146,7 +147,6 @@ round_precision = 13 antialiased = true [connection signal="body_entered" from="Destination" to="." method="_on_Destination_body_entered"] -[connection signal="shield_changed" from="Player" to="." method="_on_Player_shield_changed"] [connection signal="paused" from="UI/HUD" to="." method="_on_HUD_paused"] [connection signal="pressed" from="UI/PauseMenu/Panel/VBoxContainer/Button" to="." method="_on_Button_pressed"] [connection signal="pressed" from="UI/GameFinishedMenu/Panel/VBoxContainer/Button" to="." method="_on_Game_over_button_pressed"]