fix(deck): BindButtons 1회 바인드 가드로 2회차 런 핸들러 중복 차단
StartRun이 run마다 BindButtons를 호출하는데 앞 7개 핸들러만 disconnect 가드돼 있고 reward/skip/map/shop/monster/relic/potion/job 등 ~30개 ConnectEvent는 미가드라, 2회차+ 런에서 핸들러가 누적된다. 특히 PickReward는 RewardChoices·CombatOver를 클리어하지 않아 중복 핸들러로 두 번 불리면 같은 보상 카드가 RunDeck에 2번 추가된다. BindLobbyButtons/BindSoulShopButtons와 동일하게 self.ButtonsBound 1회 가드를 추가(런 UI 엔티티는 영속이라 1회 바인드로 충분). 신규 prop ButtonsBound 선언. 산출물 재생성 포함. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UUvHKjrt8jqLzDeCsRRGmj
This commit is contained in:
@@ -10,7 +10,11 @@ for i = #list, 2, -1 do
|
||||
\tlocal j = math.random(1, i)
|
||||
\tlist[i], list[j] = list[j], list[i]
|
||||
end`, [{ Type: 'any', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'list' }]),
|
||||
method('BindButtons', `local endTurn = _EntityService:GetEntityByPath("/ui/RunUIGroup/DeckHud/EndTurnButton")
|
||||
method('BindButtons', `if self.ButtonsBound == true then
|
||||
return
|
||||
end
|
||||
self.ButtonsBound = true
|
||||
local endTurn = _EntityService:GetEntityByPath("/ui/RunUIGroup/DeckHud/EndTurnButton")
|
||||
if endTurn ~= nil and (endTurn.ButtonComponent ~= nil or endTurn:AddComponent("ButtonComponent") ~= nil) then
|
||||
if self.EndTurnHandler ~= nil then
|
||||
endTurn:DisconnectEvent(ButtonClickEvent, self.EndTurnHandler)
|
||||
|
||||
Reference in New Issue
Block a user