fix(shop): 新局启动接线 ShopManager.reset(),修复购买记录跨局残留
ShopManager.reset() 此前从未被任何地方调用(grep 零命中):PlayerStats.reset_for_run() 只清 _modifiers,_attr_purchases 不清,两份状态跨局错开——新局价格从已购价起算、 UI 显示「已购 N 次」却生效值是基准值,且买任意一件属性会把整份旧 _attr_purchases 重新套用回 PlayerStats(复现:hp_max 购买 2 次后重开局,加成消失但计数还在; 再买一次 hp_max 后旧的两次加成随之复活)。在 start_game() 内 PlayerStats.reset_for_run() 之后调用 ShopManager.reset()——顺序不能反,reset() 会撤销 shop_c 加成,须晚于 reset_for_run() 清空 _modifiers 之后才不会把两处清理搅乱。
This commit is contained in:
@@ -39,6 +39,11 @@ func _ready() -> void:
|
||||
## 开始新局
|
||||
func start_game() -> void:
|
||||
PlayerStats.reset_for_run()
|
||||
# ShopManager.reset() 必须晚于 reset_for_run():它会撤销 shop_c 加成(remove_modifiers_from
|
||||
# 经 _apply_attr_purchases),若先于 reset_for_run 调用,reset_for_run 清空 _modifiers 时
|
||||
# 不会同步清 _attr_purchases,两份状态就此错开——新的一局会显示「已购 N 次」却生效值是基准值,
|
||||
# 且下次购买会把整份旧 _attr_purchases 重新套用回 PlayerStats(复现过程见本轮评审 Finding 1)。
|
||||
ShopManager.reset()
|
||||
WaveManager.reset()
|
||||
BulletManager.reset()
|
||||
EnemyManager.reset()
|
||||
|
||||
Reference in New Issue
Block a user