mirror of
https://github.com/Steffo99/swear-jar.git
synced 2024-11-22 15:44:21 +00:00
78 lines
1.7 KiB
GDScript3
78 lines
1.7 KiB
GDScript3
|
extends Panel
|
||
|
class_name PurchasableItem
|
||
|
|
||
|
## Name of the item that can be purchased.
|
||
|
@export var item_name: String:
|
||
|
get:
|
||
|
return item_name
|
||
|
set(value):
|
||
|
item_name = value
|
||
|
$Contents/Header/NameLabel.text = value
|
||
|
|
||
|
## Description of the item that can be purchased.
|
||
|
@export var item_description: String:
|
||
|
get:
|
||
|
return item_description
|
||
|
set(value):
|
||
|
item_description = value
|
||
|
$Contents/Header/DescriptionLabel.text = value
|
||
|
|
||
|
## Text to be displayed on the cost label of the item.
|
||
|
@export var item_cost_text: String:
|
||
|
get:
|
||
|
return item_cost_text
|
||
|
set(value):
|
||
|
item_cost_text = value
|
||
|
$Contents/Action/CostLabel.text = value
|
||
|
|
||
|
## Collectible type of the item required to buy the item.
|
||
|
@export var item_cost_type: StringName
|
||
|
|
||
|
## Amount of items of the given type to collect to buy the item.
|
||
|
@export var item_cost_goal: int
|
||
|
|
||
|
## Whether the player can click or not the Buy button.
|
||
|
##
|
||
|
## Used to prevent two items from getting bought at the same time.
|
||
|
@export var can_buy: bool:
|
||
|
get:
|
||
|
return can_buy
|
||
|
set(value):
|
||
|
can_buy = value
|
||
|
$Contents/Action/BuyButton.disabled = not can_buy
|
||
|
|
||
|
## Whether the player is currently buying this item.
|
||
|
##
|
||
|
## Used to cancel the purchase.
|
||
|
var is_buying: bool:
|
||
|
get:
|
||
|
return is_buying
|
||
|
set(value):
|
||
|
is_buying = value
|
||
|
$Contents/Action/BuyButton.text = "Cancel" if value else "Buy"
|
||
|
|
||
|
|
||
|
## Emitted when a purchase has started.
|
||
|
signal purchase_begin
|
||
|
|
||
|
## Emitted when a purchase is cancelled.
|
||
|
signal purchase_cancel
|
||
|
|
||
|
## Emitted when a purchase is completed.
|
||
|
##
|
||
|
## Emitted by complete_purchase().
|
||
|
signal purchase_success
|
||
|
|
||
|
|
||
|
func _on_buy_button_pressed():
|
||
|
if is_buying:
|
||
|
is_buying = false
|
||
|
purchase_cancel.emit()
|
||
|
else:
|
||
|
is_buying = true
|
||
|
purchase_begin.emit()
|
||
|
|
||
|
|
||
|
func complete_purchase():
|
||
|
is_buying = false
|
||
|
purchase_success.emit()
|