From fa8546f2830148a81cc7a61fba44dd98805f8256 Mon Sep 17 00:00:00 2001 From: lightheel Date: Sun, 3 Aug 2025 11:29:40 -0400 Subject: [PATCH] Updated file and sprite managers to use new file structure. --- .../vbhelper/battle/AttackSpriteManager.kt | 4 +- .../vbhelper/battle/BattleSpriteManager.kt | 29 ++++------ .../vbhelper/battle/SpriteFileManager.kt | 56 +++++++++++++++++-- 3 files changed, 62 insertions(+), 27 deletions(-) diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/battle/AttackSpriteManager.kt b/app/src/main/java/com/github/nacabaro/vbhelper/battle/AttackSpriteManager.kt index 6131c92..d44bb43 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/battle/AttackSpriteManager.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/battle/AttackSpriteManager.kt @@ -32,7 +32,7 @@ class AttackSpriteManager(private val context: Context) { private val characterDataCache = mutableMapOf() // Base path for attack textures - private val attackTexturesPath = "Battle_Sprites_Reference/extracted_assets/atk_textures" + private val attackTexturesPath = "battle_sprites/extracted_assets/extracted_atksprites" fun getAttackSprite(characterId: String, isLarge: Boolean = false): Bitmap? { println("AttackSpriteManager: Getting attack sprite for characterId=$characterId, isLarge=$isLarge") @@ -86,7 +86,7 @@ class AttackSpriteManager(private val context: Context) { try { // Load character data from JSON file - val characterDataFile = File(context.filesDir, "Battle_Sprites_Reference/extracted_digimon_stats/character_data/CharacterData.json") + val characterDataFile = File(context.filesDir, "battle_sprites/extracted_digimon_stats/character_data/CharacterData.json") println("AttackSpriteManager: Character data file path = ${characterDataFile.absolutePath}") println("AttackSpriteManager: Character data file exists = ${characterDataFile.exists()}") diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/battle/BattleSpriteManager.kt b/app/src/main/java/com/github/nacabaro/vbhelper/battle/BattleSpriteManager.kt index 3de61f9..b4bd883 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/battle/BattleSpriteManager.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/battle/BattleSpriteManager.kt @@ -38,7 +38,7 @@ class BattleSpriteManager(private val context: Context) { private val spriteCache = mutableMapOf() // Base directory where your sprites are stored - private val spriteBaseDir = File(context.filesDir, "Battle_Sprites_Reference/extracted_assets") + private val spriteBaseDir = File(context.filesDir, "battle_sprites/extracted_assets") fun loadSprite(spriteName: String, atlasName: String): Bitmap? { val cacheKey = "${spriteName}_${atlasName}" @@ -58,18 +58,9 @@ class BattleSpriteManager(private val context: Context) { println("Available directories: ${spriteBaseDir.listFiles()?.map { it.name }}") try { - // Load the mapping file - val mappingFile = File(spriteBaseDir, "mappings/${atlasName}_mapping.json") - if (!mappingFile.exists()) { - println("Mapping file not found: ${mappingFile.absolutePath}") - return null - } + // Load the PNG texture file directly using the atlas name + val textureFile = File(spriteBaseDir, "extracted_textures/${atlasName}.png") - val mappingJson = mappingFile.readText() - val mapping = gson.fromJson(mappingJson, SpriteMapping::class.java) - - // Load the PNG texture file - val textureFile = File(spriteBaseDir, "textures/${mapping.texture.file}") if (!textureFile.exists()) { println("Texture file not found: ${textureFile.absolutePath}") return null @@ -142,18 +133,18 @@ class BattleSpriteManager(private val context: Context) { // Helper method to get available atlases fun getAvailableAtlases(): List { try { - val mappingsDir = File(spriteBaseDir, "mappings") - if (!mappingsDir.exists()) { + val texturesDir = File(spriteBaseDir, "extracted_textures") + if (!texturesDir.exists()) { return emptyList() } - val mappingFiles = mappingsDir.listFiles { file -> - file.name.endsWith("_mapping.json") + val textureFiles = texturesDir.listFiles { file -> + file.name.endsWith(".png") } ?: emptyArray() - return mappingFiles.map { file -> - // Extract atlas name from filename (e.g., "dim000_mon01_mapping.json" -> "dim000_mon01") - file.name.substringBefore("_mapping.json") + return textureFiles.map { file -> + // Extract atlas name from filename (e.g., "dim000_mon01.png" -> "dim000_mon01") + file.name.substringBefore(".png") }.sorted() } catch (e: Exception) { diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/battle/SpriteFileManager.kt b/app/src/main/java/com/github/nacabaro/vbhelper/battle/SpriteFileManager.kt index 56f4667..0298f3d 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/battle/SpriteFileManager.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/battle/SpriteFileManager.kt @@ -10,22 +10,22 @@ class SpriteFileManager(private val context: Context) { fun copySpriteFilesToInternalStorage() { try { // Create the base directory for extracted_assets - val extractedAssetsDir = File(context.filesDir, "Battle_Sprites_Reference/extracted_assets") + val extractedAssetsDir = File(context.filesDir, "battle_sprites/extracted_assets") if (!extractedAssetsDir.exists()) { extractedAssetsDir.mkdirs() } // Create the base directory for extracted_digimon_stats - val extractedStatsDir = File(context.filesDir, "Battle_Sprites_Reference/extracted_digimon_stats") + val extractedStatsDir = File(context.filesDir, "battle_sprites/extracted_digimon_stats") if (!extractedStatsDir.exists()) { extractedStatsDir.mkdirs() } // Copy extracted_assets files from assets to internal storage - copyAssetDirectory("Battle_Sprites_Reference/extracted_assets", extractedAssetsDir) + copyAssetDirectory("battle_sprites/extracted_assets", extractedAssetsDir) // Copy extracted_digimon_stats files from assets to internal storage - copyAssetDirectory("Battle_Sprites_Reference/extracted_digimon_stats", extractedStatsDir) + copyAssetDirectory("battle_sprites/extracted_digimon_stats", extractedStatsDir) println("Sprite files copied successfully to: ${extractedAssetsDir.absolutePath}") println("Stats files copied successfully to: ${extractedStatsDir.absolutePath}") @@ -84,12 +84,56 @@ class SpriteFileManager(private val context: Context) { } fun checkSpriteFilesExist(): Boolean { - val extractedAssetsDir = File(context.filesDir, "Battle_Sprites_Reference/extracted_assets") - val extractedStatsDir = File(context.filesDir, "Battle_Sprites_Reference/extracted_digimon_stats") + val extractedAssetsDir = File(context.filesDir, "battle_sprites/extracted_assets") + val extractedStatsDir = File(context.filesDir, "battle_sprites/extracted_digimon_stats") val assetsExist = extractedAssetsDir.exists() && extractedAssetsDir.listFiles()?.isNotEmpty() == true val statsExist = extractedStatsDir.exists() && extractedStatsDir.listFiles()?.isNotEmpty() == true return assetsExist && statsExist } + + fun clearSpriteFiles() { + try { + val extractedAssetsDir = File(context.filesDir, "battle_sprites/extracted_assets") + val extractedStatsDir = File(context.filesDir, "battle_sprites/extracted_digimon_stats") + + if (extractedAssetsDir.exists()) { + deleteDirectory(extractedAssetsDir) + println("Cleared extracted_assets directory") + } + + if (extractedStatsDir.exists()) { + deleteDirectory(extractedStatsDir) + println("Cleared extracted_digimon_stats directory") + } + + // Also clear the battle_sprites directory if it's empty + val battleSpritesDir = File(context.filesDir, "battle_sprites") + if (battleSpritesDir.exists() && battleSpritesDir.listFiles()?.isEmpty() == true) { + battleSpritesDir.delete() + println("Cleared battle_sprites directory") + } + + } catch (e: Exception) { + println("Error clearing sprite files: ${e.message}") + e.printStackTrace() + } + } + + private fun deleteDirectory(directory: File) { + if (directory.exists()) { + val files = directory.listFiles() + if (files != null) { + for (file in files) { + if (file.isDirectory) { + deleteDirectory(file) + } else { + file.delete() + } + } + } + directory.delete() + } + } } \ No newline at end of file