mirror of
https://github.com/nacabaro/vbhelper.git
synced 2026-06-05 13:52:54 +00:00
Setup player API call to pull from active Digi.
This commit is contained in:
parent
14e941031c
commit
61daad459b
@ -71,6 +71,10 @@ import java.io.File
|
|||||||
import androidx.compose.ui.platform.LocalDensity
|
import androidx.compose.ui.platform.LocalDensity
|
||||||
import androidx.compose.ui.platform.LocalConfiguration
|
import androidx.compose.ui.platform.LocalConfiguration
|
||||||
import androidx.compose.foundation.layout.width
|
import androidx.compose.foundation.layout.width
|
||||||
|
import com.github.nacabaro.vbhelper.di.VBHelper
|
||||||
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
|
import kotlinx.coroutines.withContext
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun isLandscapeMode(): Boolean {
|
fun isLandscapeMode(): Boolean {
|
||||||
@ -1545,6 +1549,8 @@ fun BattlesScreen() {
|
|||||||
|
|
||||||
var activeCharacter by remember { mutableStateOf<APIBattleCharacter?>(null) }
|
var activeCharacter by remember { mutableStateOf<APIBattleCharacter?>(null) }
|
||||||
var selectedOpponent by remember { mutableStateOf<APIBattleCharacter?>(null) }
|
var selectedOpponent by remember { mutableStateOf<APIBattleCharacter?>(null) }
|
||||||
|
var activeUserCharacter by remember { mutableStateOf<com.github.nacabaro.vbhelper.dtos.CharacterDtos.CharacterWithSprites?>(null) }
|
||||||
|
var activeCardId by remember { mutableStateOf<String?>(null) }
|
||||||
|
|
||||||
var expanded by remember { mutableStateOf(false) }
|
var expanded by remember { mutableStateOf(false) }
|
||||||
var selectedStage by remember { mutableStateOf("") }
|
var selectedStage by remember { mutableStateOf("") }
|
||||||
@ -1608,6 +1614,66 @@ fun BattlesScreen() {
|
|||||||
println("BATTLESCREEN: Sprite files already exist in internal storage")
|
println("BATTLESCREEN: Sprite files already exist in internal storage")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Load active character from database
|
||||||
|
LaunchedEffect(Unit) {
|
||||||
|
try {
|
||||||
|
val application = context.applicationContext as VBHelper
|
||||||
|
val database = application.container.db
|
||||||
|
|
||||||
|
// Move database operations to background thread
|
||||||
|
kotlinx.coroutines.withContext(Dispatchers.IO) {
|
||||||
|
// First, let's check all characters to see what's in the database
|
||||||
|
val allCharacters = database.userCharacterDao().getAllCharacters()
|
||||||
|
println("BATTLESCREEN: Found ${allCharacters.size} total characters in database")
|
||||||
|
allCharacters.forEach { char ->
|
||||||
|
println(" - Character ID: ${char.id}, CharId: ${char.charId}")
|
||||||
|
}
|
||||||
|
|
||||||
|
val activeChar = database.userCharacterDao().getActiveCharacter()
|
||||||
|
println("BATTLESCREEN: getActiveCharacter() returned: $activeChar")
|
||||||
|
|
||||||
|
if (activeChar != null) {
|
||||||
|
// Get the character data using the charId from activeChar
|
||||||
|
val characterData = database.characterDao().getCharacterInfo(activeChar.charId)
|
||||||
|
println("BATTLESCREEN: CharacterData from getCharacterInfo:")
|
||||||
|
println(" - cardId: ${characterData.cardId}")
|
||||||
|
println(" - charId: ${characterData.charId}")
|
||||||
|
println(" - stage: ${characterData.stage}")
|
||||||
|
println(" - attribute: ${characterData.attribute}")
|
||||||
|
|
||||||
|
// The cardId from getCharacterInfo is already the correct card ID we need!
|
||||||
|
val cardId = characterData.cardId
|
||||||
|
val charaIndex = characterData.charId // This is the charaIndex from the query
|
||||||
|
|
||||||
|
// Format as "dim" + cardId + "_mon" + (charaIndex + 1)
|
||||||
|
val formattedCardId = String.format("dim%03d_mon%02d", cardId, charaIndex + 1)
|
||||||
|
|
||||||
|
// Update UI state on main thread
|
||||||
|
withContext(Dispatchers.Main) {
|
||||||
|
activeUserCharacter = activeChar
|
||||||
|
activeCardId = formattedCardId
|
||||||
|
}
|
||||||
|
|
||||||
|
println("BATTLESCREEN: Loaded active character from database:")
|
||||||
|
println(" - UserCharacter ID: ${activeChar.id}")
|
||||||
|
println(" - CharId: ${activeChar.charId}")
|
||||||
|
println(" - CharacterData cardId: ${characterData.cardId}")
|
||||||
|
println(" - CharacterData charaIndex: $charaIndex")
|
||||||
|
println(" - Final cardId: $cardId")
|
||||||
|
println(" - Formatted as: $activeCardId")
|
||||||
|
} else {
|
||||||
|
println("BATTLESCREEN: No active character found in database")
|
||||||
|
withContext(Dispatchers.Main) {
|
||||||
|
activeCardId = null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (e: Exception) {
|
||||||
|
println("BATTLESCREEN: Error loading active character: ${e.message}")
|
||||||
|
e.printStackTrace()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
val rookieButton = @Composable {
|
val rookieButton = @Composable {
|
||||||
Button(
|
Button(
|
||||||
@ -1978,15 +2044,17 @@ fun BattlesScreen() {
|
|||||||
) {
|
) {
|
||||||
Text("Rookie Battle View", fontSize = 20.sp, fontWeight = FontWeight.Bold)
|
Text("Rookie Battle View", fontSize = 20.sp, fontWeight = FontWeight.Bold)
|
||||||
|
|
||||||
// Add character selection dropdown
|
// Show active character info from database
|
||||||
characterDropdown("rookie")
|
activeUserCharacter?.let { character ->
|
||||||
|
Text("Active Character: ${character.id}", fontSize = 16.sp, fontWeight = FontWeight.Bold)
|
||||||
// Show selected character info
|
Text("Char ID: ${character.charId}")
|
||||||
activeCharacter?.let { character ->
|
Text("Stage: ${character.stage}")
|
||||||
Text("Active Character: ${character.name}", fontSize = 16.sp, fontWeight = FontWeight.Bold)
|
Text("Age: ${character.ageInDays} days")
|
||||||
Text("HP: ${character.currentHp}/${character.baseHp}")
|
activeCardId?.let { cardId ->
|
||||||
Text("BP: ${character.baseBp}")
|
Text("Digimon ID: $cardId", fontSize = 14.sp, color = Color.Blue, fontWeight = FontWeight.Bold)
|
||||||
Text("AP: ${character.baseAp}")
|
}
|
||||||
|
} ?: run {
|
||||||
|
Text("No active character found in database", fontSize = 16.sp, color = Color.Red)
|
||||||
}
|
}
|
||||||
|
|
||||||
Spacer(modifier = Modifier.height(16.dp))
|
Spacer(modifier = Modifier.height(16.dp))
|
||||||
@ -2003,13 +2071,15 @@ fun BattlesScreen() {
|
|||||||
items(opponentsList) { opponent ->
|
items(opponentsList) { opponent ->
|
||||||
Button(
|
Button(
|
||||||
onClick = {
|
onClick = {
|
||||||
activeCharacter?.let {
|
activeCardId?.let { cardId ->
|
||||||
selectedOpponent = opponent
|
selectedOpponent = opponent
|
||||||
// Randomly select background set (0, 1, or 2)
|
// Randomly select background set (0, 1, or 2)
|
||||||
selectedBackgroundSet = kotlin.random.Random.nextInt(3)
|
selectedBackgroundSet = kotlin.random.Random.nextInt(3)
|
||||||
RetrofitHelper().getPVPWinner(context, 0, 2, it.charaId, 0, 0, opponent.charaId, 0) { apiResult ->
|
RetrofitHelper().getPVPWinner(context, 0, 2, cardId, 0, 0, opponent.charaId, 0) { apiResult ->
|
||||||
currentView = "battle-main"
|
currentView = "battle-main"
|
||||||
}
|
}
|
||||||
|
} ?: run {
|
||||||
|
println("BATTLESCREEN: No active card ID found in database")
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
modifier = Modifier.fillMaxWidth()
|
modifier = Modifier.fillMaxWidth()
|
||||||
@ -2030,15 +2100,17 @@ fun BattlesScreen() {
|
|||||||
) {
|
) {
|
||||||
Text("Champion Battle View", fontSize = 20.sp, fontWeight = FontWeight.Bold)
|
Text("Champion Battle View", fontSize = 20.sp, fontWeight = FontWeight.Bold)
|
||||||
|
|
||||||
// Add character selection dropdown
|
// Show active character info from database
|
||||||
characterDropdown("champion")
|
activeUserCharacter?.let { character ->
|
||||||
|
Text("Active Character: ${character.id}", fontSize = 16.sp, fontWeight = FontWeight.Bold)
|
||||||
// Show selected character info
|
Text("Char ID: ${character.charId}")
|
||||||
activeCharacter?.let { character ->
|
Text("Stage: ${character.stage}")
|
||||||
Text("Active Character: ${character.name}", fontSize = 16.sp, fontWeight = FontWeight.Bold)
|
Text("Age: ${character.ageInDays} days")
|
||||||
Text("HP: ${character.currentHp}/${character.baseHp}")
|
activeCardId?.let { cardId ->
|
||||||
Text("BP: ${character.baseBp}")
|
Text("Digimon ID: $cardId", fontSize = 14.sp, color = Color.Blue, fontWeight = FontWeight.Bold)
|
||||||
Text("AP: ${character.baseAp}")
|
}
|
||||||
|
} ?: run {
|
||||||
|
Text("No active character found in database", fontSize = 16.sp, color = Color.Red)
|
||||||
}
|
}
|
||||||
|
|
||||||
Spacer(modifier = Modifier.height(16.dp))
|
Spacer(modifier = Modifier.height(16.dp))
|
||||||
@ -2055,13 +2127,15 @@ fun BattlesScreen() {
|
|||||||
items(opponentsList) { opponent ->
|
items(opponentsList) { opponent ->
|
||||||
Button(
|
Button(
|
||||||
onClick = {
|
onClick = {
|
||||||
activeCharacter?.let {
|
activeCardId?.let { cardId ->
|
||||||
selectedOpponent = opponent
|
selectedOpponent = opponent
|
||||||
// Randomly select background set (0, 1, or 2)
|
// Randomly select background set (0, 1, or 2)
|
||||||
selectedBackgroundSet = kotlin.random.Random.nextInt(3)
|
selectedBackgroundSet = kotlin.random.Random.nextInt(3)
|
||||||
RetrofitHelper().getPVPWinner(context, 0, 2, it.charaId, 1, 0, opponent.charaId, 1) { apiResult ->
|
RetrofitHelper().getPVPWinner(context, 0, 2, cardId, 1, 0, opponent.charaId, 1) { apiResult ->
|
||||||
currentView = "battle-main"
|
currentView = "battle-main"
|
||||||
}
|
}
|
||||||
|
} ?: run {
|
||||||
|
println("BATTLESCREEN: No active card ID found in database")
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
modifier = Modifier.fillMaxWidth()
|
modifier = Modifier.fillMaxWidth()
|
||||||
@ -2082,15 +2156,17 @@ fun BattlesScreen() {
|
|||||||
) {
|
) {
|
||||||
Text("Ultimate Battle View", fontSize = 20.sp, fontWeight = FontWeight.Bold)
|
Text("Ultimate Battle View", fontSize = 20.sp, fontWeight = FontWeight.Bold)
|
||||||
|
|
||||||
// Add character selection dropdown
|
// Show active character info from database
|
||||||
characterDropdown("ultimate")
|
activeUserCharacter?.let { character ->
|
||||||
|
Text("Active Character: ${character.id}", fontSize = 16.sp, fontWeight = FontWeight.Bold)
|
||||||
// Show selected character info
|
Text("Char ID: ${character.charId}")
|
||||||
activeCharacter?.let { character ->
|
Text("Stage: ${character.stage}")
|
||||||
Text("Active Character: ${character.name}", fontSize = 16.sp, fontWeight = FontWeight.Bold)
|
Text("Age: ${character.ageInDays} days")
|
||||||
Text("HP: ${character.currentHp}/${character.baseHp}")
|
activeCardId?.let { cardId ->
|
||||||
Text("BP: ${character.baseBp}")
|
Text("Digimon ID: $cardId", fontSize = 14.sp, color = Color.Blue, fontWeight = FontWeight.Bold)
|
||||||
Text("AP: ${character.baseAp}")
|
}
|
||||||
|
} ?: run {
|
||||||
|
Text("No active character found in database", fontSize = 16.sp, color = Color.Red)
|
||||||
}
|
}
|
||||||
|
|
||||||
Spacer(modifier = Modifier.height(16.dp))
|
Spacer(modifier = Modifier.height(16.dp))
|
||||||
@ -2107,13 +2183,15 @@ fun BattlesScreen() {
|
|||||||
items(opponentsList) { opponent ->
|
items(opponentsList) { opponent ->
|
||||||
Button(
|
Button(
|
||||||
onClick = {
|
onClick = {
|
||||||
activeCharacter?.let {
|
activeCardId?.let { cardId ->
|
||||||
selectedOpponent = opponent
|
selectedOpponent = opponent
|
||||||
// Randomly select background set (0, 1, or 2)
|
// Randomly select background set (0, 1, or 2)
|
||||||
selectedBackgroundSet = kotlin.random.Random.nextInt(3)
|
selectedBackgroundSet = kotlin.random.Random.nextInt(3)
|
||||||
RetrofitHelper().getPVPWinner(context, 0, 2, it.charaId, 2, 0, opponent.charaId, 2) { apiResult ->
|
RetrofitHelper().getPVPWinner(context, 0, 2, cardId, 2, 0, opponent.charaId, 2) { apiResult ->
|
||||||
currentView = "battle-main"
|
currentView = "battle-main"
|
||||||
}
|
}
|
||||||
|
} ?: run {
|
||||||
|
println("BATTLESCREEN: No active card ID found in database")
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
modifier = Modifier.fillMaxWidth()
|
modifier = Modifier.fillMaxWidth()
|
||||||
@ -2134,15 +2212,17 @@ fun BattlesScreen() {
|
|||||||
) {
|
) {
|
||||||
Text("Mega Battle View", fontSize = 20.sp, fontWeight = FontWeight.Bold)
|
Text("Mega Battle View", fontSize = 20.sp, fontWeight = FontWeight.Bold)
|
||||||
|
|
||||||
// Add character selection dropdown
|
// Show active character info from database
|
||||||
characterDropdown("mega")
|
activeUserCharacter?.let { character ->
|
||||||
|
Text("Active Character: ${character.id}", fontSize = 16.sp, fontWeight = FontWeight.Bold)
|
||||||
// Show selected character info
|
Text("Char ID: ${character.charId}")
|
||||||
activeCharacter?.let { character ->
|
Text("Stage: ${character.stage}")
|
||||||
Text("Active Character: ${character.name}", fontSize = 16.sp, fontWeight = FontWeight.Bold)
|
Text("Age: ${character.ageInDays} days")
|
||||||
Text("HP: ${character.currentHp}/${character.baseHp}")
|
activeCardId?.let { cardId ->
|
||||||
Text("BP: ${character.baseBp}")
|
Text("Digimon ID: $cardId", fontSize = 14.sp, color = Color.Blue, fontWeight = FontWeight.Bold)
|
||||||
Text("AP: ${character.baseAp}")
|
}
|
||||||
|
} ?: run {
|
||||||
|
Text("No active character found in database", fontSize = 16.sp, color = Color.Red)
|
||||||
}
|
}
|
||||||
|
|
||||||
Spacer(modifier = Modifier.height(16.dp))
|
Spacer(modifier = Modifier.height(16.dp))
|
||||||
@ -2159,13 +2239,15 @@ fun BattlesScreen() {
|
|||||||
items(opponentsList) { opponent ->
|
items(opponentsList) { opponent ->
|
||||||
Button(
|
Button(
|
||||||
onClick = {
|
onClick = {
|
||||||
activeCharacter?.let {
|
activeCardId?.let { cardId ->
|
||||||
selectedOpponent = opponent
|
selectedOpponent = opponent
|
||||||
// Randomly select background set (0, 1, or 2)
|
// Randomly select background set (0, 1, or 2)
|
||||||
selectedBackgroundSet = kotlin.random.Random.nextInt(3)
|
selectedBackgroundSet = kotlin.random.Random.nextInt(3)
|
||||||
RetrofitHelper().getPVPWinner(context, 0, 2, it.charaId, 3, 0, opponent.charaId, 3) { apiResult ->
|
RetrofitHelper().getPVPWinner(context, 0, 2, cardId, 3, 0, opponent.charaId, 3) { apiResult ->
|
||||||
currentView = "battle-main"
|
currentView = "battle-main"
|
||||||
}
|
}
|
||||||
|
} ?: run {
|
||||||
|
println("BATTLESCREEN: No active card ID found in database")
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
modifier = Modifier.fillMaxWidth()
|
modifier = Modifier.fillMaxWidth()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user