godot-mota/src/shop/Shop.gd

75 lines
1.6 KiB
GDScript

extends Node2D
onready var dialog : PopupDialog = $"ShopDialog"
# 文字
onready var message : Label = $"ShopDialog/Message"
# 按钮
onready var close_button : Button = $"ShopDialog/VBoxContainer/CloseDialog"
onready var add_hp_button : Button = $"ShopDialog/VBoxContainer/AddHp"
onready var add_atk_button : Button = $"ShopDialog/VBoxContainer/AddAtk"
onready var add_def_button : Button = $"ShopDialog/VBoxContainer/AddDef"
# 增加的hp
export var added_hp = 100
# 增加的攻击力
export var added_atk = 2
# 增加的防御力
export var added_def = 4
# 初始金币
export var init_money = 20
# 使用的次数
export var used_count = 0
# 玩家
var player : Player
func _ready():
var used_money = get_used_money()
message.text = "如果供奉%s金币,便可以增强你的力量,你想要什么呢......" % used_money
add_hp_button.text = "生命+%s" % added_hp
add_atk_button.text = "攻击力+%s" % added_atk
add_def_button.text = "防御力+%s" % added_def
# 触碰回调
func on_player_touched(player):
self.player = player
dialog.popup_centered()
func _on_CloseDialog_pressed():
dialog.visible = false
func _on_AddHp_pressed():
if enough_money_to_pay():
player.hp += added_hp
func _on_AddAtk_pressed():
if enough_money_to_pay():
player.atk += added_atk
func _on_AddDef_pressed():
if enough_money_to_pay():
player.def += added_def
func get_used_money() -> int:
return init_money * (used_count + 1)
func enough_money_to_pay() -> bool:
var money = get_used_money()
if player.money >= money:
player.money -= money
return true
else:
Messages.showDialog("金钱不足")
return false