summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVictor Andrade de Almeida <vct.a.almeida@gmail.com>2022-07-17 14:17:53 -0300
committerVictor Andrade de Almeida <vct.a.almeida@gmail.com>2022-07-17 14:18:05 -0300
commitca8f5b86ea94328a755a1a181ee5a0a6736c6536 (patch)
tree4d43cfb093c347d288ed91de6f7fc4841b022aac
parent2514718e386d2210c374bc42fbab704c535b9a83 (diff)
downloadgamejam-gmtk-2022-ca8f5b86ea94328a755a1a181ee5a0a6736c6536.tar.gz
gamejam-gmtk-2022-ca8f5b86ea94328a755a1a181ee5a0a6736c6536.tar.bz2
gamejam-gmtk-2022-ca8f5b86ea94328a755a1a181ee5a0a6736c6536.zip
Add damage label
-rw-r--r--Scenes/Damage.tscn65
-rw-r--r--Scenes/Dungeon.gd4
-rw-r--r--Scenes/Dungeon.tscn5
-rw-r--r--Scenes/PlateDamage.gd4
-rw-r--r--Scenes/UIController.gd21
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()