diff --git a/ios/MagicCounter.xcodeproj/project.pbxproj b/ios/MagicCounter.xcodeproj/project.pbxproj index 4baf49a..56f8d87 100644 --- a/ios/MagicCounter.xcodeproj/project.pbxproj +++ b/ios/MagicCounter.xcodeproj/project.pbxproj @@ -411,7 +411,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 3; DEVELOPMENT_TEAM = 4BC9Y2LL4B; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; @@ -446,7 +446,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 3; DEVELOPMENT_TEAM = 4BC9Y2LL4B; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; diff --git a/ios/MagicCounter.xcodeproj/project.xcworkspace/xcuserdata/atridad.xcuserdatad/UserInterfaceState.xcuserstate b/ios/MagicCounter.xcodeproj/project.xcworkspace/xcuserdata/atridad.xcuserdatad/UserInterfaceState.xcuserstate index 752d4ad..542a702 100644 Binary files a/ios/MagicCounter.xcodeproj/project.xcworkspace/xcuserdata/atridad.xcuserdatad/UserInterfaceState.xcuserstate and b/ios/MagicCounter.xcodeproj/project.xcworkspace/xcuserdata/atridad.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/ios/MagicCounter/GameView.swift b/ios/MagicCounter/GameView.swift index 5e68eeb..fb7a185 100644 --- a/ios/MagicCounter/GameView.swift +++ b/ios/MagicCounter/GameView.swift @@ -306,10 +306,16 @@ struct PlayerCell: View { */ struct CommanderDamageView: View { @Environment(\.dismiss) var dismiss - let targetPlayer: PlayerState + @State private var targetPlayer: PlayerState let gameState: GameState let onUpdate: (PlayerState) -> Void + init(targetPlayer: PlayerState, gameState: GameState, onUpdate: @escaping (PlayerState) -> Void) { + self._targetPlayer = State(initialValue: targetPlayer) + self.gameState = gameState + self.onUpdate = onUpdate + } + var body: some View { NavigationStack { List { @@ -352,14 +358,21 @@ struct CommanderDamageView: View { private func adjustCommanderDamage(attackerId: Int, by amount: Int) { Haptics.play(.light) + let wasEliminated = targetPlayer.isEliminated var newPlayer = targetPlayer var damages = newPlayer.commanderDamages let current = damages[attackerId] ?? 0 - damages[attackerId] = max(0, current + amount) + let newDamage = max(0, current + amount) + let damageChange = newDamage - current + damages[attackerId] = newDamage newPlayer.commanderDamages = damages + // Commander damage also reduces life total + newPlayer.life -= damageChange + // Update local state so the view refreshes + targetPlayer = newPlayer onUpdate(newPlayer) - if newPlayer.isEliminated && !targetPlayer.isEliminated { + if newPlayer.isEliminated && !wasEliminated { Haptics.notification(.error) } }