mirror of
https://github.com/nacabaro/vbhelper.git
synced 2026-06-05 13:52:54 +00:00
Updated sprites to load from phone's internal storage.
This commit is contained in:
parent
68ad57b78f
commit
ac02205f76
@ -32,9 +32,9 @@ class AttackSpriteManager(private val context: Context) {
|
|||||||
private val gson = Gson()
|
private val gson = Gson()
|
||||||
private val characterDataCache = mutableMapOf<String, CharacterData>()
|
private val characterDataCache = mutableMapOf<String, CharacterData>()
|
||||||
|
|
||||||
// Get the external storage directory for attack sprites
|
// Get the internal storage directory for attack sprites
|
||||||
private fun getAttackTexturesPath(): String {
|
private fun getAttackTexturesPath(): String {
|
||||||
return "VBHelper/battle_sprites/extracted_atksprites"
|
return "battle_sprites/extracted_atksprites"
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getAttackSprite(characterId: String, isLarge: Boolean = false): Bitmap? {
|
fun getAttackSprite(characterId: String, isLarge: Boolean = false): Bitmap? {
|
||||||
@ -58,10 +58,9 @@ class AttackSpriteManager(private val context: Context) {
|
|||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load the attack sprite from external storage
|
// Load the attack sprite from internal storage
|
||||||
val externalDir = Environment.getExternalStorageDirectory()
|
|
||||||
val attackFilePath = "${getAttackTexturesPath()}/$attackFileName.png"
|
val attackFilePath = "${getAttackTexturesPath()}/$attackFileName.png"
|
||||||
val attackFile = File(externalDir, attackFilePath)
|
val attackFile = File(context.filesDir, attackFilePath)
|
||||||
println("AttackSpriteManager: Attack file path = ${attackFile.absolutePath}")
|
println("AttackSpriteManager: Attack file path = ${attackFile.absolutePath}")
|
||||||
println("AttackSpriteManager: Attack file exists = ${attackFile.exists()}")
|
println("AttackSpriteManager: Attack file exists = ${attackFile.exists()}")
|
||||||
|
|
||||||
@ -89,9 +88,8 @@ class AttackSpriteManager(private val context: Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Load character data from JSON file in external storage
|
// Load character data from JSON file in internal storage
|
||||||
val externalDir = Environment.getExternalStorageDirectory()
|
val characterDataFile = File(context.filesDir, "battle_sprites/extracted_digimon_stats/character_data/CharacterData.json")
|
||||||
val characterDataFile = File(externalDir, "VBHelper/battle_sprites/extracted_digimon_stats/character_data/CharacterData.json")
|
|
||||||
println("AttackSpriteManager: Character data file path = ${characterDataFile.absolutePath}")
|
println("AttackSpriteManager: Character data file path = ${characterDataFile.absolutePath}")
|
||||||
println("AttackSpriteManager: Character data file exists = ${characterDataFile.exists()}")
|
println("AttackSpriteManager: Character data file exists = ${characterDataFile.exists()}")
|
||||||
|
|
||||||
|
|||||||
@ -38,10 +38,9 @@ class BattleSpriteManager(private val context: Context) {
|
|||||||
private val gson = Gson()
|
private val gson = Gson()
|
||||||
private val spriteCache = mutableMapOf<String, Bitmap>()
|
private val spriteCache = mutableMapOf<String, Bitmap>()
|
||||||
|
|
||||||
// Get the external storage directory for sprite files
|
// Get the internal storage directory for sprite files
|
||||||
private fun getSpriteBaseDir(): File {
|
private fun getSpriteBaseDir(): File {
|
||||||
val externalDir = Environment.getExternalStorageDirectory()
|
return File(context.filesDir, "battle_sprites/extracted_assets")
|
||||||
return File(externalDir, "VBHelper/battle_sprites/extracted_assets")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun loadSprite(spriteName: String, atlasName: String): Bitmap? {
|
fun loadSprite(spriteName: String, atlasName: String): Bitmap? {
|
||||||
|
|||||||
@ -10,10 +10,9 @@ import java.io.File
|
|||||||
class HitEffectSpriteManager(private val context: Context) {
|
class HitEffectSpriteManager(private val context: Context) {
|
||||||
private val spriteCache = mutableMapOf<String, Bitmap>()
|
private val spriteCache = mutableMapOf<String, Bitmap>()
|
||||||
|
|
||||||
// Get the external storage directory for hit effect sprites
|
// Get the internal storage directory for hit effect sprites
|
||||||
private fun getHitSpritesDir(): File {
|
private fun getHitSpritesDir(): File {
|
||||||
val externalDir = Environment.getExternalStorageDirectory()
|
return File(context.filesDir, "battle_sprites/extracted_hit_sprites")
|
||||||
return File(externalDir, "VBHelper/battle_sprites/extracted_hit_sprites")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -9,10 +9,9 @@ import java.io.File
|
|||||||
class IndividualSpriteManager(private val context: Context) {
|
class IndividualSpriteManager(private val context: Context) {
|
||||||
private val spriteCache = mutableMapOf<String, Bitmap>()
|
private val spriteCache = mutableMapOf<String, Bitmap>()
|
||||||
|
|
||||||
// Get the external storage directory for sprite files
|
// Get the internal storage directory for sprite files
|
||||||
private fun getSpriteBaseDir(): File {
|
private fun getSpriteBaseDir(): File {
|
||||||
val externalDir = Environment.getExternalStorageDirectory()
|
return File(context.filesDir, "battle_sprites/extracted_assets/sprites")
|
||||||
return File(externalDir, "VBHelper/battle_sprites/extracted_assets/sprites")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -1,19 +1,70 @@
|
|||||||
package com.github.nacabaro.vbhelper.battle
|
package com.github.nacabaro.vbhelper.battle
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.os.Environment
|
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.FileOutputStream
|
import java.io.FileOutputStream
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
|
import java.io.FileInputStream
|
||||||
|
|
||||||
class SpriteFileManager(private val context: Context) {
|
class SpriteFileManager(private val context: Context) {
|
||||||
|
|
||||||
// Get the external storage directory for sprite files
|
// Get the external storage directory where files are already located
|
||||||
private fun getSpriteBaseDir(): File {
|
private fun getExternalSpriteBaseDir(): File {
|
||||||
val externalDir = Environment.getExternalStorageDirectory()
|
val externalDir = android.os.Environment.getExternalStorageDirectory()
|
||||||
return File(externalDir, "VBHelper/battle_sprites")
|
return File(externalDir, "VBHelper/battle_sprites")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get the internal storage directory for sprite files
|
||||||
|
private fun getInternalSpriteBaseDir(): File {
|
||||||
|
return File(context.filesDir, "battle_sprites")
|
||||||
|
}
|
||||||
|
|
||||||
|
fun copySpriteFilesToInternalStorage() {
|
||||||
|
try {
|
||||||
|
println("Starting sprite file copy process from external storage to internal storage...")
|
||||||
|
|
||||||
|
val externalDir = getExternalSpriteBaseDir()
|
||||||
|
val internalDir = getInternalSpriteBaseDir()
|
||||||
|
|
||||||
|
// Check if external directory exists
|
||||||
|
if (!externalDir.exists()) {
|
||||||
|
println("External sprite directory does not exist: ${externalDir.absolutePath}")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
println("External sprite directory exists: ${externalDir.absolutePath}")
|
||||||
|
println("Copying to internal storage: ${internalDir.absolutePath}")
|
||||||
|
|
||||||
|
// Create internal directory if it doesn't exist
|
||||||
|
if (!internalDir.exists()) {
|
||||||
|
val created = internalDir.mkdirs()
|
||||||
|
println("Created internal sprite directory: $created")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Copy all subdirectories from external to internal storage
|
||||||
|
val externalFiles = externalDir.listFiles()
|
||||||
|
if (externalFiles != null) {
|
||||||
|
println("Found ${externalFiles.size} items in external directory")
|
||||||
|
externalFiles.forEach { item ->
|
||||||
|
val targetItem = File(internalDir, item.name)
|
||||||
|
if (item.isDirectory) {
|
||||||
|
println("Copying directory: ${item.name}")
|
||||||
|
copyDirectory(item, targetItem)
|
||||||
|
} else {
|
||||||
|
println("Copying file: ${item.name}")
|
||||||
|
copyFile(item, targetItem)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
println("Sprite files copied successfully to internal storage: ${internalDir.absolutePath}")
|
||||||
|
|
||||||
|
} catch (e: Exception) {
|
||||||
|
println("Error copying sprite files to internal storage: ${e.message}")
|
||||||
|
e.printStackTrace()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun copySpriteFilesToExternalStorage() {
|
fun copySpriteFilesToExternalStorage() {
|
||||||
try {
|
try {
|
||||||
println("Starting sprite file copy process to external storage...")
|
println("Starting sprite file copy process to external storage...")
|
||||||
@ -55,7 +106,7 @@ class SpriteFileManager(private val context: Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Create the base directory for battle_sprites in external storage
|
// Create the base directory for battle_sprites in external storage
|
||||||
val battleSpritesDir = getSpriteBaseDir()
|
val battleSpritesDir = getExternalSpriteBaseDir()
|
||||||
if (!battleSpritesDir.exists()) {
|
if (!battleSpritesDir.exists()) {
|
||||||
battleSpritesDir.mkdirs()
|
battleSpritesDir.mkdirs()
|
||||||
println("Created battle_sprites directory in external storage: ${battleSpritesDir.absolutePath}")
|
println("Created battle_sprites directory in external storage: ${battleSpritesDir.absolutePath}")
|
||||||
@ -171,6 +222,39 @@ class SpriteFileManager(private val context: Context) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun copyDirectory(sourceDir: File, targetDir: File) {
|
||||||
|
if (!targetDir.exists()) {
|
||||||
|
targetDir.mkdirs()
|
||||||
|
}
|
||||||
|
|
||||||
|
val files = sourceDir.listFiles()
|
||||||
|
if (files != null) {
|
||||||
|
files.forEach { file ->
|
||||||
|
val targetFile = File(targetDir, file.name)
|
||||||
|
if (file.isDirectory) {
|
||||||
|
copyDirectory(file, targetFile)
|
||||||
|
} else {
|
||||||
|
copyFile(file, targetFile)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun copyFile(sourceFile: File, targetFile: File) {
|
||||||
|
try {
|
||||||
|
val inputStream = FileInputStream(sourceFile)
|
||||||
|
val outputStream = FileOutputStream(targetFile)
|
||||||
|
|
||||||
|
inputStream.copyTo(outputStream)
|
||||||
|
inputStream.close()
|
||||||
|
outputStream.close()
|
||||||
|
|
||||||
|
println("Copied: ${sourceFile.name} -> ${targetFile.absolutePath}")
|
||||||
|
} catch (e: IOException) {
|
||||||
|
println("Error copying file ${sourceFile.name}: ${e.message}")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun copyAssetFile(assetPath: String, targetFile: File) {
|
private fun copyAssetFile(assetPath: String, targetFile: File) {
|
||||||
try {
|
try {
|
||||||
val inputStream = context.assets.open(assetPath)
|
val inputStream = context.assets.open(assetPath)
|
||||||
@ -187,7 +271,7 @@ class SpriteFileManager(private val context: Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun checkSpriteFilesExist(): Boolean {
|
fun checkSpriteFilesExist(): Boolean {
|
||||||
val battleSpritesDir = getSpriteBaseDir()
|
val battleSpritesDir = getInternalSpriteBaseDir()
|
||||||
val extractedAssetsDir = File(battleSpritesDir, "extracted_assets")
|
val extractedAssetsDir = File(battleSpritesDir, "extracted_assets")
|
||||||
val extractedStatsDir = File(battleSpritesDir, "extracted_digimon_stats")
|
val extractedStatsDir = File(battleSpritesDir, "extracted_digimon_stats")
|
||||||
val atkspritesDir = File(battleSpritesDir, "extracted_atksprites")
|
val atkspritesDir = File(battleSpritesDir, "extracted_atksprites")
|
||||||
@ -199,7 +283,7 @@ class SpriteFileManager(private val context: Context) {
|
|||||||
val atkspritesExist = atkspritesDir.exists() && atkspritesDir.listFiles()?.isNotEmpty() == true
|
val atkspritesExist = atkspritesDir.exists() && atkspritesDir.listFiles()?.isNotEmpty() == true
|
||||||
val battlebgsExist = battlebgsDir.exists() && battlebgsDir.listFiles()?.isNotEmpty() == true
|
val battlebgsExist = battlebgsDir.exists() && battlebgsDir.listFiles()?.isNotEmpty() == true
|
||||||
|
|
||||||
println("Checking sprite files exist:")
|
println("Checking sprite files exist in internal storage:")
|
||||||
println(" battle_sprites exists: $battleSpritesExist")
|
println(" battle_sprites exists: $battleSpritesExist")
|
||||||
println(" extracted_assets exists: $assetsExist")
|
println(" extracted_assets exists: $assetsExist")
|
||||||
println(" extracted_digimon_stats exists: $statsExist")
|
println(" extracted_digimon_stats exists: $statsExist")
|
||||||
@ -211,11 +295,11 @@ class SpriteFileManager(private val context: Context) {
|
|||||||
|
|
||||||
fun clearSpriteFiles() {
|
fun clearSpriteFiles() {
|
||||||
try {
|
try {
|
||||||
val battleSpritesDir = getSpriteBaseDir()
|
val battleSpritesDir = getInternalSpriteBaseDir()
|
||||||
|
|
||||||
if (battleSpritesDir.exists()) {
|
if (battleSpritesDir.exists()) {
|
||||||
deleteDirectory(battleSpritesDir)
|
deleteDirectory(battleSpritesDir)
|
||||||
println("Cleared battle_sprites directory")
|
println("Cleared battle_sprites directory from internal storage")
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
|
|||||||
@ -1602,10 +1602,10 @@ fun BattlesScreen() {
|
|||||||
println("BATTLESCREEN: LaunchedEffect triggered - checking sprite files...")
|
println("BATTLESCREEN: LaunchedEffect triggered - checking sprite files...")
|
||||||
val spriteFileManager = SpriteFileManager(context)
|
val spriteFileManager = SpriteFileManager(context)
|
||||||
if (!spriteFileManager.checkSpriteFilesExist()) {
|
if (!spriteFileManager.checkSpriteFilesExist()) {
|
||||||
println("BATTLESCREEN: Copying sprite files to external storage...")
|
println("BATTLESCREEN: Copying sprite files from external storage to internal storage...")
|
||||||
spriteFileManager.copySpriteFilesToExternalStorage()
|
spriteFileManager.copySpriteFilesToInternalStorage()
|
||||||
} else {
|
} else {
|
||||||
println("BATTLESCREEN: Sprite files already exist in external storage")
|
println("BATTLESCREEN: Sprite files already exist in internal storage")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2265,11 +2265,10 @@ fun AnimatedBattleBackground(
|
|||||||
println("DEBUG: Screen dimensions = ${screenWidth.value}x${screenHeight.value}dp")
|
println("DEBUG: Screen dimensions = ${screenWidth.value}x${screenHeight.value}dp")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load background image from external storage
|
// Load background image from internal storage
|
||||||
LaunchedEffect(Unit) {
|
LaunchedEffect(Unit) {
|
||||||
try {
|
try {
|
||||||
val externalDir = Environment.getExternalStorageDirectory()
|
val backgroundFile = File(context.filesDir, "battle_sprites/extracted_battlebgs/BattleBg_0015_BattleBg_0012.png")
|
||||||
val backgroundFile = File(externalDir, "VBHelper/battle_sprites/extracted_battlebgs/BattleBg_0015_BattleBg_0012.png")
|
|
||||||
if (backgroundFile.exists()) {
|
if (backgroundFile.exists()) {
|
||||||
backgroundBitmap = BitmapFactory.decodeFile(backgroundFile.absolutePath)
|
backgroundBitmap = BitmapFactory.decodeFile(backgroundFile.absolutePath)
|
||||||
println("Successfully loaded battle background: ${backgroundFile.absolutePath}")
|
println("Successfully loaded battle background: ${backgroundFile.absolutePath}")
|
||||||
@ -2372,14 +2371,13 @@ fun MultiLayerAnimatedBattleBackground(
|
|||||||
println("DEBUG: Multi-layer screen dimensions = ${screenWidth.value}x${screenHeight.value}dp")
|
println("DEBUG: Multi-layer screen dimensions = ${screenWidth.value}x${screenHeight.value}dp")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load all three background layers from external storage
|
// Load all three background layers from internal storage
|
||||||
LaunchedEffect(backgroundSetIndex) {
|
LaunchedEffect(backgroundSetIndex) {
|
||||||
try {
|
try {
|
||||||
val externalDir = Environment.getExternalStorageDirectory()
|
|
||||||
val selectedSet = backgroundSets[backgroundSetIndex]
|
val selectedSet = backgroundSets[backgroundSetIndex]
|
||||||
|
|
||||||
// Back layer
|
// Back layer
|
||||||
val backLayerFile = File(externalDir, "VBHelper/battle_sprites/extracted_battlebgs/${selectedSet.backLayer}")
|
val backLayerFile = File(context.filesDir, "battle_sprites/extracted_battlebgs/${selectedSet.backLayer}")
|
||||||
if (backLayerFile.exists()) {
|
if (backLayerFile.exists()) {
|
||||||
backLayerBitmap = BitmapFactory.decodeFile(backLayerFile.absolutePath)
|
backLayerBitmap = BitmapFactory.decodeFile(backLayerFile.absolutePath)
|
||||||
println("Successfully loaded back layer background (Set ${backgroundSetIndex + 1}): ${backLayerFile.absolutePath}")
|
println("Successfully loaded back layer background (Set ${backgroundSetIndex + 1}): ${backLayerFile.absolutePath}")
|
||||||
@ -2388,7 +2386,7 @@ fun MultiLayerAnimatedBattleBackground(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Middle layer
|
// Middle layer
|
||||||
val middleLayerFile = File(externalDir, "VBHelper/battle_sprites/extracted_battlebgs/${selectedSet.middleLayer}")
|
val middleLayerFile = File(context.filesDir, "battle_sprites/extracted_battlebgs/${selectedSet.middleLayer}")
|
||||||
if (middleLayerFile.exists()) {
|
if (middleLayerFile.exists()) {
|
||||||
middleLayerBitmap = BitmapFactory.decodeFile(middleLayerFile.absolutePath)
|
middleLayerBitmap = BitmapFactory.decodeFile(middleLayerFile.absolutePath)
|
||||||
println("Successfully loaded middle layer background (Set ${backgroundSetIndex + 1}): ${middleLayerFile.absolutePath}")
|
println("Successfully loaded middle layer background (Set ${backgroundSetIndex + 1}): ${middleLayerFile.absolutePath}")
|
||||||
@ -2397,7 +2395,7 @@ fun MultiLayerAnimatedBattleBackground(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Front layer
|
// Front layer
|
||||||
val frontLayerFile = File(externalDir, "VBHelper/battle_sprites/extracted_battlebgs/${selectedSet.frontLayer}")
|
val frontLayerFile = File(context.filesDir, "battle_sprites/extracted_battlebgs/${selectedSet.frontLayer}")
|
||||||
if (frontLayerFile.exists()) {
|
if (frontLayerFile.exists()) {
|
||||||
frontLayerBitmap = BitmapFactory.decodeFile(frontLayerFile.absolutePath)
|
frontLayerBitmap = BitmapFactory.decodeFile(frontLayerFile.absolutePath)
|
||||||
println("Successfully loaded front layer background (Set ${backgroundSetIndex + 1}): ${frontLayerFile.absolutePath}")
|
println("Successfully loaded front layer background (Set ${backgroundSetIndex + 1}): ${frontLayerFile.absolutePath}")
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user