diff --git a/components/Scenes/UI.tscn b/components/Scenes/UI.tscn index 7cc5e3a..451cbcf 100644 --- a/components/Scenes/UI.tscn +++ b/components/Scenes/UI.tscn @@ -118,3 +118,18 @@ text = "100.0" unique_name_in_owner = true custom_minimum_size = Vector2(0, 5) layout_mode = 2 + +[node name="itemCollect" type="VBoxContainer" parent="root"] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = -1 +anchor_left = 0.05 +anchor_top = 0.85 +anchor_right = 0.15 +anchor_bottom = 0.95 +offset_left = 0.399998 +offset_top = 45.2 +offset_right = -80.8 +offset_bottom = 0.400024 +grow_vertical = 0 +theme_override_constants/separation = 10 diff --git a/components/Scenes/World.tscn b/components/Scenes/World.tscn index 88e91b6..9422dee 100644 --- a/components/Scenes/World.tscn +++ b/components/Scenes/World.tscn @@ -1,8 +1,9 @@ -[gd_scene load_steps=5 format=3 uid="uid://dmxi1ikn6avig"] +[gd_scene load_steps=6 format=3 uid="uid://dmxi1ikn6avig"] [ext_resource type="Script" path="res://scripts/Tools/WorldManager.gd" id="1_lxsxj"] [ext_resource type="PackedScene" uid="uid://dfwg750a47ggx" path="res://components/Scenes/UI.tscn" id="2_04cdd"] [ext_resource type="PackedScene" uid="uid://bm7ymrri6pykb" path="res://components/Characters/Rooster.tscn" id="3_5ui6q"] +[ext_resource type="Script" path="res://scripts/Tools/CameraManager.gd" id="5_mk7bv"] [ext_resource type="Texture2D" uid="uid://ckk8kahhof06u" path="res://resources/maps/Castle 2.png" id="6_p0nkj"] [node name="world" type="Node2D"] @@ -24,3 +25,4 @@ process_mode = 3 position = Vector2(0, -100) process_callback = 0 position_smoothing_enabled = true +script = ExtResource("5_mk7bv") diff --git a/components/UI/BossBar.tscn b/components/UI/BossBar.tscn index 5aa6452..0b48297 100644 --- a/components/UI/BossBar.tscn +++ b/components/UI/BossBar.tscn @@ -27,9 +27,9 @@ anchor_left = 0.2 anchor_top = 1.0 anchor_right = 0.8 anchor_bottom = 1.0 -offset_top = -40.0 +offset_top = -65.0 offset_right = 0.0 -offset_bottom = -20.0 +offset_bottom = -40.0 grow_horizontal = 2 grow_vertical = 0 @@ -48,19 +48,16 @@ layout_mode = 2 [node name="name" type="Label" parent="health/panel/label"] unique_name_in_owner = true layout_mode = 2 -size_flags_vertical = 8 text = "BossName" label_settings = SubResource("LabelSettings_esyuk") [node name="value" type="Label" parent="health/panel/label"] unique_name_in_owner = true layout_mode = 2 -size_flags_vertical = 8 text = "percent" label_settings = SubResource("LabelSettings_esyuk") [node name="percent" type="Label" parent="health/panel/label"] layout_mode = 2 -size_flags_vertical = 8 text = "%" label_settings = SubResource("LabelSettings_esyuk") diff --git a/scripts/Statemachine/EntityBase.gd b/scripts/Statemachine/EntityBase.gd index 8159609..50d112c 100644 --- a/scripts/Statemachine/EntityBase.gd +++ b/scripts/Statemachine/EntityBase.gd @@ -7,6 +7,8 @@ signal healthChanged(health: float) signal energyChanged(energy: float) +signal itemCollected(itemType: ItemStore.ItemType, amount: int) + var fields = { FieldStore.Entity.MAX_HEALTH: 100, FieldStore.Entity.DAMAGE_MULTIPILER: 1, @@ -72,6 +74,7 @@ func _ready(): if body is ItemDropped: inventory[body.item] += body.stackCount playSound("collect") + itemCollected.emit(body.item, body.stackCount) body.queue_free() ) energyChanged.connect( @@ -79,6 +82,10 @@ func _ready(): UIState.energyPercent.maxValue = fields.get(FieldStore.Entity.MAX_ENERGY) UIState.energyPercent.setCurrent(newEnergy) ) + itemCollected.connect( + func(itemType, amount): + UIState.itemCollect.add_child(ItemShow.generate(itemType, amount)) + ) else: currentFocusedBoss = get_tree().get_nodes_in_group("players")[0] healthChanged.emit(health) diff --git a/scripts/Statemachine/ItemShow.gd b/scripts/Statemachine/ItemShow.gd index 84f095b..7220fc6 100644 --- a/scripts/Statemachine/ItemShow.gd +++ b/scripts/Statemachine/ItemShow.gd @@ -11,3 +11,9 @@ class_name ItemShow func _physics_process(_delta): avatarTexture.texture = ItemStore.getTexture(type) countLabel.text = str(count) + +static func generate(itemType: ItemStore.ItemType, itemCount: int = 1): + var item = preload("res://components/UI/ItemShow.tscn").instantiate() + item.type = itemType + item.count = itemCount + return item diff --git a/scripts/Statemachine/UIState.gd b/scripts/Statemachine/UIState.gd index f5b90f8..97a246c 100644 --- a/scripts/Statemachine/UIState.gd +++ b/scripts/Statemachine/UIState.gd @@ -13,11 +13,13 @@ static var bossbar: EntityStateBar static var currentPanel: FullscreenPanelBase = null static var panels: Control static var energyPercent: ColorBar +static var itemCollect: VBoxContainer func _ready(): bossbar = $"%bossbar" panels = $"%panels" energyPercent = $"%percent" + itemCollect = $"%itemCollect" func _process(_delta): bossbar.visible = !!bossbar.entity func _physics_process(_delta): diff --git a/scripts/Tools/CameraManager.gd b/scripts/Tools/CameraManager.gd new file mode 100644 index 0000000..1977a39 --- /dev/null +++ b/scripts/Tools/CameraManager.gd @@ -0,0 +1 @@ +extends Camera2D