diff options
author | Victor Andrade de Almeida <vct.a.almeida@gmail.com> | 2022-07-17 14:17:53 -0300 |
---|---|---|
committer | Victor Andrade de Almeida <vct.a.almeida@gmail.com> | 2022-07-17 14:18:05 -0300 |
commit | ca8f5b86ea94328a755a1a181ee5a0a6736c6536 (patch) | |
tree | 4d43cfb093c347d288ed91de6f7fc4841b022aac | |
parent | 2514718e386d2210c374bc42fbab704c535b9a83 (diff) | |
download | gamejam-gmtk-2022-ca8f5b86ea94328a755a1a181ee5a0a6736c6536.tar.gz gamejam-gmtk-2022-ca8f5b86ea94328a755a1a181ee5a0a6736c6536.tar.bz2 gamejam-gmtk-2022-ca8f5b86ea94328a755a1a181ee5a0a6736c6536.zip |
Add damage label
-rw-r--r-- | Scenes/Damage.tscn | 65 | ||||
-rw-r--r-- | Scenes/Dungeon.gd | 4 | ||||
-rw-r--r-- | Scenes/Dungeon.tscn | 5 | ||||
-rw-r--r-- | Scenes/PlateDamage.gd | 4 | ||||
-rw-r--r-- | Scenes/UIController.gd | 21 |
5 files changed, 91 insertions, 8 deletions
diff --git a/Scenes/Damage.tscn b/Scenes/Damage.tscn new file mode 100644 index 0000000..2265ceb --- /dev/null +++ b/Scenes/Damage.tscn @@ -0,0 +1,65 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://Assets/AlegreyaSansSC-ExtraBold.ttf" type="DynamicFontData" id=1] + +[sub_resource type="DynamicFont" id=30] +size = 48 +outline_size = 2 +outline_color = Color( 0.380392, 0, 0, 1 ) +font_data = ExtResource( 1 ) + +[sub_resource type="Animation" id=31] +resource_name = "Fade" +tracks/0/type = "value" +tracks/0/path = NodePath("Label:rect_position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.8 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 0, -49 ), Vector2( 0, -113 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Label:modulate") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.8 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Label:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.8 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} + +[node name="Damage" type="Control"] +margin_left = 13.0 +margin_top = -63.0 +margin_right = 53.0 +margin_bottom = -23.0 + +[node name="Label" type="Label" parent="."] +margin_top = -49.0 +margin_right = 38.0 +grow_vertical = 0 +custom_colors/font_color = Color( 1, 0, 0, 1 ) +custom_fonts/font = SubResource( 30 ) +text = "-6" + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +anims/Fade = SubResource( 31 ) diff --git a/Scenes/Dungeon.gd b/Scenes/Dungeon.gd index fd329e6..c9df4a2 100644 --- a/Scenes/Dungeon.gd +++ b/Scenes/Dungeon.gd @@ -74,6 +74,9 @@ func kill_entity(entity): tiles_entities.erase(tile) entities_tiles.erase(entity) +func damage_player(damage): + ui_controller.on_damaged(damage, player.translation) + func build_floor(): player = Player.instance() camera.follow(player) @@ -150,6 +153,7 @@ func process_turn_logic(): pass Monster.MonsterActionType.ATTACK: player.add_action("cor_damage", [0.2]) + damage_player(1) Global.turns -= 1 Monster.MonsterActionType.MOVE: move_entity(monster, monster_action.dir) diff --git a/Scenes/Dungeon.tscn b/Scenes/Dungeon.tscn index 25f885a..037e4e6 100644 --- a/Scenes/Dungeon.tscn +++ b/Scenes/Dungeon.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=37 format=2] +[gd_scene load_steps=38 format=2] [ext_resource path="res://Scenes/Dungeon.gd" type="Script" id=1] [ext_resource path="res://Scenes/CameraControl.gd" type="Script" id=2] @@ -9,6 +9,7 @@ [ext_resource path="res://Assets/arm.png" type="Texture" id=7] [ext_resource path="res://Assets/Environment/BG-tiled.png" type="Texture" id=8] [ext_resource path="res://Assets/Sound/Poofy Reel.mp3" type="AudioStream" id=9] +[ext_resource path="res://Scenes/Damage.tscn" type="PackedScene" id=10] [sub_resource type="ProceduralSky" id=2] @@ -741,6 +742,8 @@ anims/RESET = SubResource( 10 ) anims/HandMoving = SubResource( 7 ) anims/RESET = SubResource( 8 ) +[node name="Damage" parent="UIController" instance=ExtResource( 10 )] + [node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] stream = ExtResource( 9 ) volume_db = -15.0 diff --git a/Scenes/PlateDamage.gd b/Scenes/PlateDamage.gd index 76601b9..a51e7c2 100644 --- a/Scenes/PlateDamage.gd +++ b/Scenes/PlateDamage.gd @@ -2,8 +2,10 @@ extends Plate func activate(entity : Entity, dungeon): if entity is Player: + var damage = int(entity.get_top()) entity.add_action("cor_damage", [0.2]) - Global.turns -= int(entity.get_top()) + dungeon.damage_player(damage) + Global.turns -= damage return if entity is Monster: diff --git a/Scenes/UIController.gd b/Scenes/UIController.gd index 03c2556..e052925 100644 --- a/Scenes/UIController.gd +++ b/Scenes/UIController.gd @@ -4,6 +4,10 @@ onready var main_camera = get_viewport().get_camera() onready var ScoreParticle = preload("res://Scenes/ScoreParticle.tscn") onready var particles = $Particles +onready var damage_control : Control = $Damage +onready var damage_label : Label = $Damage/Label +onready var damage_anim : AnimationPlayer = $Damage/AnimationPlayer + onready var activated_crystals onready var skip_all = false @@ -26,6 +30,11 @@ func on_monster_killed(monster_pos, score): score_particle.animate() yield(get_tree().create_timer(0.1),"timeout") +func on_damaged(damage, player_pos): + damage_label.text = "%d" % -damage + damage_control.rect_position = main_camera.unproject_position(player_pos) + damage_anim.play("Fade") + func hand_animation(): $AnimationPlayer.play("HandMoving") @@ -40,7 +49,7 @@ func on_onboarding(): # $OnboardingOverlay/Intro4.rect_position = monster_2d + monster_offset # $OnboardingOverlay/Intro5.rect_position = crystal_2d + crystal_offset # $OnboardingOverlay/Intro6.rect_position = crystal_2d + crystal_offset - + $OnboardingOverlay.show() $OnboardingOverlay/AnimationPlayer.play("FadeIn") yield($OnboardingOverlay/AnimationPlayer,"animation_finished") @@ -61,7 +70,7 @@ func _input(event): if event.scancode == KEY_ESCAPE: skip_all = true emit_signal("_skip_step") - + func onboarding_step(i): if not skip_all: @@ -70,15 +79,15 @@ func onboarding_step(i): var intro_player = intro.get_node("AnimationPlayer") intro_player.play("FadeIn") yield(intro_player, "animation_finished") - + var timer = get_tree().create_timer(4) timer.connect("timeout", self, "emit_signal", ["_skip_step"]) - + yield(self, "_skip_step") - + if timer != null: timer.disconnect("timeout", self, "emit_signal") - + intro_player.play_backwards("FadeIn") yield(intro_player, "animation_finished") intro.hide() |