37 lines
1.1 KiB
GDScript
37 lines
1.1 KiB
GDScript
## GP 钱包件:冒险局内货币唯一所有者(gain/spend/clear 单写原语;LevelRunner 与 ShopSession
|
|
## 读写全指此单点)。生命与加算日记各归 HeroStats/GainJournal——主角账三件各交各的断点片段,
|
|
## 拼盘落盘归冒险应用层。Core 层零 UI;随机零消费。
|
|
class_name GpWallet
|
|
extends RefCounted
|
|
|
|
var gp: int = 0 # GP 钱包(冒险开始 = 0、收束清零;不入存档不入摘要)
|
|
|
|
|
|
func gain_gp(amount: int) -> void:
|
|
gp = maxi(0, gp + amount)
|
|
|
|
|
|
# 余额不足 false 零副作用(出账前置校验由调用方守卫时本方法不重复拒绝)
|
|
func spend_gp(amount: int) -> bool:
|
|
if amount <= 0 or gp < amount:
|
|
return false
|
|
gp = gp - amount
|
|
return true
|
|
|
|
|
|
func clear_wallet() -> void:
|
|
gp = 0
|
|
|
|
|
|
# ---- 断点自交片段(应用层拼盘口收件——本件只交自己的账)----
|
|
# 片段键:gp
|
|
|
|
func breakpoint_fragment() -> Dictionary[Variant, Variant]:
|
|
return {
|
|
"gp": gp,
|
|
}
|
|
|
|
|
|
func restore_fragment(frag: Dictionary, _params: Dictionary) -> void:
|
|
gp = int(frag.get("gp", 0))
|