diff --git a/scenes/damage_numbers.gd b/scenes/damage_numbers.gd new file mode 100644 index 0000000..d40c487 --- /dev/null +++ b/scenes/damage_numbers.gd @@ -0,0 +1,25 @@ +extends Node2D + +@export var damage_taken: float +@export var player_damage: bool = true +@export var critical_damage: bool = false + +@onready var animation_player: AnimationPlayer = $Control/AnimationPlayer +@onready var label: Label = $Control/Label + +const COLOR_CRIT = Color.GOLD +const COLOR_REGULAR = Color.WHITE +const COLOR_PLAYER = Color.CRIMSON + +func _ready() -> void: + if !player_damage: + label.add_theme_color_override("font_color", COLOR_PLAYER) + if critical_damage: + label.add_theme_color_override("font_color", COLOR_CRIT) + label.add_theme_font_size_override("font_size", 8) + label.text = "%0.0f" % damage_taken + animation_player.play("normal_damage") + animation_player.animation_finished.connect(_on_animation_finished) + +func _on_animation_finished(_name: String): + queue_free() diff --git a/scenes/damage_numbers.gd.uid b/scenes/damage_numbers.gd.uid new file mode 100644 index 0000000..959a491 --- /dev/null +++ b/scenes/damage_numbers.gd.uid @@ -0,0 +1 @@ +uid://dri8n7vfnarub diff --git a/scenes/damage_numbers.tscn b/scenes/damage_numbers.tscn new file mode 100644 index 0000000..1f40a68 --- /dev/null +++ b/scenes/damage_numbers.tscn @@ -0,0 +1,72 @@ +[gd_scene load_steps=5 format=3 uid="uid://p7ih16elqja4"] + +[ext_resource type="Script" uid="uid://dri8n7vfnarub" path="res://scenes/damage_numbers.gd" id="1_bhj6t"] + +[sub_resource type="Animation" id="Animation_ngvhj"] +resource_name = "normal_damage" +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Control/Label:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 1), +"transitions": PackedFloat32Array(0.148651, 0.148651), +"update": 0, +"values": [Vector2(-9.5, -11.5), Vector2(-9, -82)] +} + +[sub_resource type="Animation" id="Animation_bhj6t"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Control/Label:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(0, -248)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_0otjp"] +_data = { +&"RESET": SubResource("Animation_bhj6t"), +&"normal_damage": SubResource("Animation_ngvhj") +} + +[node name="DamageNumbers" type="Node2D"] +script = ExtResource("1_bhj6t") + +[node name="Control" type="Control" parent="."] +layout_mode = 3 +anchors_preset = 0 +offset_right = 40.0 +offset_bottom = 40.0 + +[node name="Label" type="Label" parent="Control"] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -29.5 +offset_top = -31.5 +offset_right = -10.5 +offset_bottom = -8.5 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 4 +text = "50" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="AnimationPlayer" type="AnimationPlayer" parent="Control"] +root_node = NodePath("../..") +libraries = { +&"": SubResource("AnimationLibrary_0otjp") +}