1
Fork 0
mirror of https://github.com/Steffo99/swear-jar.git synced 2025-03-21 08:04:52 +00:00

Script shop UI

This commit is contained in:
Steffo 2023-10-01 15:06:23 +02:00
parent 3f59b56aa8
commit 350501f9d8
Signed by: steffo
GPG key ID: 2A24051445686895
2 changed files with 88 additions and 5 deletions

View file

@ -1,2 +1,62 @@
extends Panel
class_name ShopUI
## Emitted when the Score button is pressed.
signal score_button_pressed
## Emitted when the Delete button is pressed.
signal delete_button_pressed
## Emitted when the Back button is presesd.
signal back_button_pressed
## Emitted when any purchase has started.
signal purchase_begin(what: PurchasableItem)
## Emitted when any purchase is cancelled.
signal purchase_cancel(what: PurchasableItem)
## Emitted when any purchase is completed.
##
## Emitted by complete_purchase().
signal purchase_success(what: PurchasableItem)
## Array of all PurchasableItems that this ShopUI should control.
@onready var purchasable_items: Array[PurchasableItem] = find_children("*", "PurchasableItem") as Array[PurchasableItem]
func _ready():
for item in purchasable_items:
item.purchase_begin.connect(_on_any_purchase_begin.bind(item))
item.purchase_cancel.connect(_on_any_purchase_cancel.bind(item))
item.purchase_success.connect(_on_any_purchase_success.bind(item))
func _on_any_purchase_begin(what: PurchasableItem):
purchase_begin.emit(what)
for item in purchasable_items:
if item == what:
continue
item.can_buy = false
func _on_any_purchase_cancel(what: PurchasableItem):
purchase_cancel.emit(what)
for item in purchasable_items:
if item == what:
continue
item.can_buy = true
func _on_any_purchase_success(what: PurchasableItem):
purchase_success.emit(what)
for item in purchasable_items:
if item == what:
continue
item.can_buy = true
func _on_score_button_pressed():
score_button_pressed.emit()
func _on_delete_button_pressed():
delete_button_pressed.emit()
func _on_back_button_pressed():
back_button_pressed.emit()

View file

@ -1,7 +1,8 @@
[gd_scene load_steps=4 format=3 uid="uid://cklkdygv61bny"]
[gd_scene load_steps=5 format=3 uid="uid://cklkdygv61bny"]
[ext_resource type="Theme" uid="uid://ba5utvfhnxa5i" path="res://interface/interface_theme.tres" id="1_qdf0y"]
[ext_resource type="PackedScene" uid="uid://dul1fpyh733t7" path="res://interface/purchasable_item.tscn" id="2_2dtc0"]
[ext_resource type="Script" path="res://interface/shop_ui.gd" id="2_iyr7m"]
[ext_resource type="PackedScene" uid="uid://wodgj6rp2ewm" path="res://interface/purchasable_item_padding.tscn" id="3_4feaj"]
[node name="ShopUI" type="Panel"]
@ -11,6 +12,7 @@ anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme = ExtResource("1_qdf0y")
script = ExtResource("2_iyr7m")
[node name="Rows" type="VBoxContainer" parent="."]
layout_mode = 1
@ -24,19 +26,29 @@ grow_vertical = 2
custom_minimum_size = Vector2(0, 54)
layout_mode = 2
[node name="MoneyButton" type="Button" parent="Rows/UpperButtons"]
custom_minimum_size = Vector2(54, 0)
[node name="ScoreButton" type="Button" parent="Rows/UpperButtons"]
custom_minimum_size = Vector2(72, 0)
layout_mode = 2
size_flags_horizontal = 0
text = "$0"
alignment = 0
[node name="UpperButtonsSpacer" type="PanelContainer" parent="Rows/UpperButtons"]
[node name="UpperButtonsSpacerLeft" type="PanelContainer" parent="Rows/UpperButtons"]
layout_mode = 2
size_flags_horizontal = 3
[node name="DeleteButton" type="Button" parent="Rows/UpperButtons"]
custom_minimum_size = Vector2(72, 0)
layout_mode = 2
size_flags_horizontal = 4
text = "Del"
[node name="UpperButtonsSpacerRight" type="PanelContainer" parent="Rows/UpperButtons"]
layout_mode = 2
size_flags_horizontal = 3
[node name="BackButton" type="Button" parent="Rows/UpperButtons"]
custom_minimum_size = Vector2(54, 0)
custom_minimum_size = Vector2(72, 0)
layout_mode = 2
size_flags_horizontal = 8
text = "Back"
@ -61,3 +73,14 @@ layout_mode = 2
[node name="PurchasableItem2" parent="Rows/Scrollable/ScrollableItems" instance=ExtResource("2_2dtc0")]
layout_mode = 2
[node name="PurchasableItemPadding2" parent="Rows/Scrollable/ScrollableItems" instance=ExtResource("3_4feaj")]
layout_mode = 2
[node name="PurchasableItem3" parent="Rows/Scrollable/ScrollableItems" instance=ExtResource("2_2dtc0")]
layout_mode = 2
has_unlocked = false
[connection signal="pressed" from="Rows/UpperButtons/ScoreButton" to="." method="_on_score_button_pressed"]
[connection signal="pressed" from="Rows/UpperButtons/DeleteButton" to="." method="_on_delete_button_pressed"]
[connection signal="pressed" from="Rows/UpperButtons/BackButton" to="." method="_on_back_button_pressed"]