diff --git a/events.gd b/events.gd new file mode 100644 index 0000000..487b284 --- /dev/null +++ b/events.gd @@ -0,0 +1,2 @@ +extends Node + diff --git a/events.gd.uid b/events.gd.uid new file mode 100644 index 0000000..3f2b2eb --- /dev/null +++ b/events.gd.uid @@ -0,0 +1 @@ +uid://jibpipn2p1c7 diff --git a/main.tscn b/main.tscn index ad3905b..c4f77db 100644 --- a/main.tscn +++ b/main.tscn @@ -71,6 +71,8 @@ autoplay = "scroll" [node name="CanvasLayer" type="CanvasLayer" parent="."] [node name="UI" parent="CanvasLayer" instance=ExtResource("4_1bvp3")] +offset_right = 196.0 +offset_bottom = 36.0 [node name="CenterContainer" type="CenterContainer" parent="CanvasLayer"] anchors_preset = 15 diff --git a/player.gd b/player.gd index f827b14..464581a 100644 --- a/player.gd +++ b/player.gd @@ -1,14 +1,17 @@ extends Area2D signal died -signal shield_changed +signal shield_changed(max_value: int, old_value: int, new_value: int) signal damage_taken +signal shield_damage +signal shield_ui + var shader_active = false @onready var screensize = get_viewport_rect().size @export var max_shield = 10 -var shield = max_shield: +var shield: int = max_shield: set = set_shield @export var speed = 150 @export var cooldown = 0.25 @@ -25,9 +28,11 @@ func start(): position = Vector2(screensize.x / 2, screensize.y - 64) $GunCooldown.wait_time = cooldown -func set_shield(value): +func set_shield(value: int): + var old_value: int = shield shield = min(max_shield, value) - shield_changed.emit(max_shield, shield) + shield_changed.emit(max_shield, old_value, shield) + shield_damage.emit() if shield <= 0: set_process(false) $Ship.hide() @@ -77,6 +82,7 @@ func _on_area_entered(area): func _on_damage_taken() -> void: + emit_signal("shield_ui") shader_active = true $Ship.material.set_shader_parameter("toggle", 1.0) await get_tree().create_timer(1).timeout diff --git a/progress_bar.gd b/progress_bar.gd new file mode 100644 index 0000000..0c08b33 --- /dev/null +++ b/progress_bar.gd @@ -0,0 +1,6 @@ +extends TextureProgressBar + +func _ready(): + self.value = 0 + var shield_tween = get_tree().create_tween() + shield_tween.tween_property(self, "value", 100, 3).set_trans(Tween.TRANS_LINEAR) diff --git a/progress_bar.gd.uid b/progress_bar.gd.uid new file mode 100644 index 0000000..40fa4b9 --- /dev/null +++ b/progress_bar.gd.uid @@ -0,0 +1 @@ +uid://b85ktxeoj4b2n diff --git a/progress_bar.tscn b/progress_bar.tscn new file mode 100644 index 0000000..7f8d56f --- /dev/null +++ b/progress_bar.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=4 format=3 uid="uid://c8s7htpdg4v4i"] + +[ext_resource type="Texture2D" uid="uid://d11molrkdjjh5" path="res://bar_background.png" id="1_q0tf5"] +[ext_resource type="Texture2D" uid="uid://bsl3pxvxiuoqg" path="res://bar_foreground.png" id="2_5xu4y"] +[ext_resource type="Script" uid="uid://b85ktxeoj4b2n" path="res://progress_bar.gd" id="3_5xu4y"] + +[node name="ProgressBar" type="TextureProgressBar"] +anchors_preset = 10 +anchor_right = 1.0 +offset_bottom = 20.0 +grow_horizontal = 2 +nine_patch_stretch = true +stretch_margin_left = 8 +stretch_margin_top = 8 +stretch_margin_right = 8 +stretch_margin_bottom = 8 +texture_under = ExtResource("1_q0tf5") +texture_progress = ExtResource("2_5xu4y") +script = ExtResource("3_5xu4y") diff --git a/project.godot b/project.godot index c1bda8f..c9c0499 100644 --- a/project.godot +++ b/project.godot @@ -14,6 +14,10 @@ config/name="shmup01b" config/features=PackedStringArray("4.5", "Forward Plus") config/icon="res://icon.svg" +[autoload] + +Events="*res://events.gd" + [display] window/size/viewport_width=240 diff --git a/ui.gd b/ui.gd index ab2aa60..84b5ca4 100644 --- a/ui.gd +++ b/ui.gd @@ -3,12 +3,36 @@ extends MarginContainer @onready var shield_bar = $HBoxContainer/ShieldBar @onready var score_counter = $HBoxContainer/ScoreCounter +var shader_active = false + +func _ready(): + get_node("Player.Ship").node_ready.connect("shield_ui", self, "_on_shield_ui") + func update_score(value): score_counter.display_digits(value) -func update_shield(max_value, value): - var shield_tween = get_tree().create_tween() +func update_shield(max_value, value, old_value): + shield_bar.max_value = max_value shield_bar.value = value - shield_tween.tween_property(shield_bar, "value", "max_value", 3,).set_trans(Tween.TRANS_LINEAR) + + print("update_shield"," ","Current ",(value), " ", "(Max ",(max_value),")"," ","Old Value:"," ",old_value) + + if value >= max_value: + print("No need to tween!") + + else: + print("I should be tweening!") + var tween = create_tween() + tween.tween_property(shield_bar, "value", (old_value/max_value)*100, .25).set_trans(Tween.TRANS_LINEAR) + + + +func _on_shield_ui(): + print("SHIELD FX!") + shader_active = true + shield_bar.material.set_shader_parameter("toggle", 1.0) + await get_tree().create_timer(1).timeout + shader_active = false + shield_bar.material.set_shader_parameter("toggle", 0.0) diff --git a/ui.tscn b/ui.tscn index b0737fb..8729dae 100644 --- a/ui.tscn +++ b/ui.tscn @@ -1,10 +1,15 @@ -[gd_scene load_steps=5 format=3 uid="uid://s6wf3egdqtmh"] +[gd_scene load_steps=7 format=3 uid="uid://s6wf3egdqtmh"] [ext_resource type="Texture2D" uid="uid://d11molrkdjjh5" path="res://bar_background.png" id="1_m6e0p"] [ext_resource type="Script" uid="uid://b544c65halgk4" path="res://ui.gd" id="1_nltto"] [ext_resource type="Texture2D" uid="uid://bsl3pxvxiuoqg" path="res://bar_foreground.png" id="2_27fn8"] +[ext_resource type="Shader" uid="uid://dfywtah53il1m" path="res://player_hit.gdshader" id="2_ibotj"] [ext_resource type="PackedScene" uid="uid://5qkcf1cpre32" path="res://score_counter.tscn" id="4_ibotj"] +[sub_resource type="ShaderMaterial" id="ShaderMaterial_n5ude"] +shader = ExtResource("2_ibotj") +shader_parameter/toggle = 0.0 + [node name="UI" type="MarginContainer"] anchors_preset = 10 anchor_right = 1.0 @@ -20,8 +25,11 @@ script = ExtResource("1_nltto") layout_mode = 2 [node name="ShieldBar" type="TextureProgressBar" parent="HBoxContainer"] +material = SubResource("ShaderMaterial_n5ude") custom_minimum_size = Vector2(80, 16) layout_mode = 2 +step = 0.0 +value = 100.0 nine_patch_stretch = true stretch_margin_left = 3 stretch_margin_top = 3 @@ -32,3 +40,5 @@ texture_progress = ExtResource("2_27fn8") [node name="ScoreCounter" parent="HBoxContainer" instance=ExtResource("4_ibotj")] layout_mode = 2 + +[connection signal="value_changed" from="HBoxContainer/ShieldBar" to="." method="_on_shield_bar_value_changed"]