Fixed bug where enemy attack was showing as player attack sprite for a moment before animation.

This commit is contained in:
lightheel 2025-08-04 12:21:41 -04:00
parent cfa52bce9b
commit c5cebd8213

View File

@ -205,6 +205,11 @@ fun PlayerBattleView(
opponent: APIBattleCharacter?,
onSetPendingDamage: (Float, Float) -> Unit
) {
// Track previous character ID to detect transitions
var previousCharacterId by remember { mutableStateOf<String?>(null) }
var previousAttackPhase by remember { mutableStateOf<Int?>(null) }
var isTransitioning by remember { mutableStateOf(false) }
Box(
modifier = Modifier.fillMaxSize()
) {
@ -293,8 +298,22 @@ fun PlayerBattleView(
else -> activeCharacter?.charaId ?: "dim011_mon01" // Use player's character ID
}
// Handle sprite transition
LaunchedEffect(characterId, battleSystem.attackPhase) {
if ((previousCharacterId != null && previousCharacterId != characterId) ||
(previousAttackPhase != null && previousAttackPhase != battleSystem.attackPhase)) {
// Character ID or attack phase changed, start transition
isTransitioning = true
delay(100) // Brief invisibility period
isTransitioning = false
}
previousCharacterId = characterId
previousAttackPhase = battleSystem.attackPhase
}
println("PlayerBattleView - Attack sprite - Phase: ${battleSystem.attackPhase}, Progress: $attackAnimationProgress, X Offset: $xOffset, CurrentView: ${battleSystem.currentView}")
if (!isTransitioning) {
AttackSpriteImage(
characterId = characterId,
isLarge = true,
@ -310,6 +329,7 @@ fun PlayerBattleView(
}
}
}
}
// Bottom section: Critical bar and Attack button
Column(
@ -434,6 +454,11 @@ fun OpponentBattleView(
activeCharacter: APIBattleCharacter? = null,
playerCharacter: APIBattleCharacter? = null
) {
// Track previous character ID to detect transitions
var previousCharacterId by remember { mutableStateOf<String?>(null) }
var previousAttackPhase by remember { mutableStateOf<Int?>(null) }
var isTransitioning by remember { mutableStateOf(false) }
Column(
modifier = Modifier
.fillMaxSize()
@ -478,8 +503,22 @@ fun OpponentBattleView(
else -> "dim011_mon01"
}
// Handle sprite transition
LaunchedEffect(characterId, battleSystem.attackPhase) {
if ((previousCharacterId != null && previousCharacterId != characterId) ||
(previousAttackPhase != null && previousAttackPhase != battleSystem.attackPhase)) {
// Character ID or attack phase changed, start transition
isTransitioning = true
delay(100) // Brief invisibility period
isTransitioning = false
}
previousCharacterId = characterId
previousAttackPhase = battleSystem.attackPhase
}
println("OpponentBattleView - Attack sprite - Phase: ${battleSystem.attackPhase}, Progress: $attackAnimationProgress, X Offset: $xOffset, CurrentView: ${battleSystem.currentView}")
if (!isTransitioning) {
AttackSpriteImage(
characterId = characterId,
isLarge = true,
@ -494,6 +533,7 @@ fun OpponentBattleView(
)
}
}
}
// Enemy HP bar
LinearProgressIndicator(