mirror of
https://github.com/nacabaro/vbhelper.git
synced 2026-06-05 13:52:54 +00:00
Added logger
Logger is a class (AppLogger) that sits between Log class and allows me to store debug information inside the app. This debug information can be seen at anytime from within the application settings, and it's not sent out to any server.
This commit is contained in:
parent
366f425539
commit
fa8641c874
@ -17,7 +17,7 @@ android {
|
|||||||
minSdk = 28
|
minSdk = 28
|
||||||
targetSdk = 36
|
targetSdk = 36
|
||||||
versionCode = 1
|
versionCode = 1
|
||||||
versionName = "Alpha 0.6.3"
|
versionName = "Alpha 0.6.3.2"
|
||||||
|
|
||||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||||
}
|
}
|
||||||
@ -56,9 +56,6 @@ protobuf {
|
|||||||
artifact = "com.google.protobuf:protoc:4.27.0"
|
artifact = "com.google.protobuf:protoc:4.27.0"
|
||||||
}
|
}
|
||||||
|
|
||||||
// Generates the java Protobuf-lite code for the Protobufs in this project. See
|
|
||||||
// https://github.com/google/protobuf-gradle-plugin#customizing-protobuf-compilation
|
|
||||||
// for more information.
|
|
||||||
generateProtoTasks {
|
generateProtoTasks {
|
||||||
all().forEach { task ->
|
all().forEach { task ->
|
||||||
task.builtins {
|
task.builtins {
|
||||||
|
|||||||
@ -1,7 +1,6 @@
|
|||||||
package com.github.nacabaro.vbhelper
|
package com.github.nacabaro.vbhelper
|
||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.util.Log
|
|
||||||
import androidx.activity.ComponentActivity
|
import androidx.activity.ComponentActivity
|
||||||
import androidx.activity.compose.setContent
|
import androidx.activity.compose.setContent
|
||||||
import androidx.activity.enableEdgeToEdge
|
import androidx.activity.enableEdgeToEdge
|
||||||
@ -68,13 +67,10 @@ class MainActivity : ComponentActivity() {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Log.i("MainActivity", "Activity onCreated")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onPause() {
|
override fun onPause() {
|
||||||
super.onPause()
|
super.onPause()
|
||||||
Log.i("MainActivity", "onPause")
|
|
||||||
for(activityListener in onActivityLifecycleListeners) {
|
for(activityListener in onActivityLifecycleListeners) {
|
||||||
activityListener.value.onPause()
|
activityListener.value.onPause()
|
||||||
}
|
}
|
||||||
@ -82,7 +78,6 @@ class MainActivity : ComponentActivity() {
|
|||||||
|
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
super.onResume()
|
super.onResume()
|
||||||
Log.i("MainActivity", "Resume")
|
|
||||||
for(activityListener in onActivityLifecycleListeners) {
|
for(activityListener in onActivityLifecycleListeners) {
|
||||||
activityListener.value.onResume()
|
activityListener.value.onResume()
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,25 @@
|
|||||||
|
import android.util.Log
|
||||||
|
|
||||||
|
object AppLogger {
|
||||||
|
private val logs = StringBuilder()
|
||||||
|
|
||||||
|
fun d(tag: String, message: String) {
|
||||||
|
Log.d(tag, message)
|
||||||
|
append("DEBUG", tag, message)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun e(tag: String, message: String, tr: Throwable? = null) {
|
||||||
|
Log.e(tag, message, tr)
|
||||||
|
append("ERROR", tag, message + (tr?.stackTraceToString() ?: ""))
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun append(level: String, tag: String, message: String) {
|
||||||
|
logs.append("${System.currentTimeMillis()} [$level][$tag] $message\n")
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getLogs(): String = logs.toString()
|
||||||
|
|
||||||
|
fun clear() {
|
||||||
|
logs.clear()
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -36,6 +36,7 @@ import com.github.nacabaro.vbhelper.screens.adventureScreen.AdventureScreenContr
|
|||||||
import com.github.nacabaro.vbhelper.screens.cardScreen.CardAdventureScreen
|
import com.github.nacabaro.vbhelper.screens.cardScreen.CardAdventureScreen
|
||||||
import com.github.nacabaro.vbhelper.screens.cardScreen.CardScreenControllerImpl
|
import com.github.nacabaro.vbhelper.screens.cardScreen.CardScreenControllerImpl
|
||||||
import com.github.nacabaro.vbhelper.screens.settingsScreen.CreditsScreen
|
import com.github.nacabaro.vbhelper.screens.settingsScreen.CreditsScreen
|
||||||
|
import com.github.nacabaro.vbhelper.screens.settingsScreen.LoggerScreen
|
||||||
import com.github.nacabaro.vbhelper.screens.spriteViewer.SpriteViewerControllerImpl
|
import com.github.nacabaro.vbhelper.screens.spriteViewer.SpriteViewerControllerImpl
|
||||||
import com.github.nacabaro.vbhelper.screens.storageScreen.StorageScreenControllerImpl
|
import com.github.nacabaro.vbhelper.screens.storageScreen.StorageScreenControllerImpl
|
||||||
import com.github.nacabaro.vbhelper.source.StorageRepository
|
import com.github.nacabaro.vbhelper.source.StorageRepository
|
||||||
@ -182,6 +183,11 @@ fun AppNavigation(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
composable(NavigationItems.Logger.route) {
|
||||||
|
LoggerScreen(
|
||||||
|
navController = navController
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -98,4 +98,10 @@ sealed class NavigationItems(
|
|||||||
R.drawable.baseline_data_24,
|
R.drawable.baseline_data_24,
|
||||||
R.string.nav_credits
|
R.string.nav_credits
|
||||||
)
|
)
|
||||||
|
|
||||||
|
object Logger : NavigationItems(
|
||||||
|
"Logger",
|
||||||
|
R.drawable.baseline_bug_report,
|
||||||
|
R.string.nav_logs
|
||||||
|
)
|
||||||
}
|
}
|
||||||
@ -1,6 +1,5 @@
|
|||||||
package com.github.nacabaro.vbhelper.screens.cardScreen
|
package com.github.nacabaro.vbhelper.screens.cardScreen
|
||||||
|
|
||||||
import android.util.Log
|
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.lazy.LazyColumn
|
import androidx.compose.foundation.lazy.LazyColumn
|
||||||
@ -98,8 +97,8 @@ fun CardsScreen(
|
|||||||
selectedCard.value = null
|
selectedCard.value = null
|
||||||
},
|
},
|
||||||
onRename = { newName ->
|
onRename = { newName ->
|
||||||
Log.d("CardsScreen", "New name: $newName")
|
AppLogger.d("CardsScreen", "New name: $newName")
|
||||||
Log.d("CardsScreen", "Card: ${selectedCard.value.toString()}")
|
AppLogger.d("CardsScreen", "Card: ${selectedCard.value.toString()}")
|
||||||
cardScreenController
|
cardScreenController
|
||||||
.renameCard(
|
.renameCard(
|
||||||
cardId = selectedCard.value!!.cardId,
|
cardId = selectedCard.value!!.cardId,
|
||||||
|
|||||||
@ -6,7 +6,6 @@ import android.nfc.Tag
|
|||||||
import android.nfc.tech.NfcA
|
import android.nfc.tech.NfcA
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.provider.Settings
|
import android.provider.Settings
|
||||||
import android.util.Log
|
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.activity.ComponentActivity
|
import androidx.activity.ComponentActivity
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
@ -127,18 +126,18 @@ class ScanScreenControllerImpl(
|
|||||||
handleTag(secrets) { tagCommunicator ->
|
handleTag(secrets) { tagCommunicator ->
|
||||||
try {
|
try {
|
||||||
if (nfcCharacter is VBNfcCharacter) {
|
if (nfcCharacter is VBNfcCharacter) {
|
||||||
Log.d("SendCharacter", "VBNfcCharacter")
|
AppLogger.d("SendCharacter", "VBNfcCharacter")
|
||||||
val castNfcCharacter: VBNfcCharacter = nfcCharacter
|
val castNfcCharacter: VBNfcCharacter = nfcCharacter
|
||||||
tagCommunicator.sendCharacter(castNfcCharacter)
|
tagCommunicator.sendCharacter(castNfcCharacter)
|
||||||
} else if (nfcCharacter is BENfcCharacter) {
|
} else if (nfcCharacter is BENfcCharacter) {
|
||||||
Log.d("SendCharacter", "BENfcCharacter")
|
AppLogger.d("SendCharacter", "BENfcCharacter")
|
||||||
val castNfcCharacter: BENfcCharacter = nfcCharacter
|
val castNfcCharacter: BENfcCharacter = nfcCharacter
|
||||||
tagCommunicator.sendCharacter(castNfcCharacter)
|
tagCommunicator.sendCharacter(castNfcCharacter)
|
||||||
}
|
}
|
||||||
onComplete.invoke()
|
onComplete.invoke()
|
||||||
componentActivity.getString(R.string.scan_sent_character_success)
|
componentActivity.getString(R.string.scan_sent_character_success)
|
||||||
} catch (e: Throwable) {
|
} catch (e: Throwable) {
|
||||||
Log.e("TAG", e.stackTraceToString())
|
AppLogger.e("TAG", e.stackTraceToString())
|
||||||
componentActivity.getString(R.string.scan_error_generic)
|
componentActivity.getString(R.string.scan_error_generic)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -178,7 +177,7 @@ class ScanScreenControllerImpl(
|
|||||||
)
|
)
|
||||||
|
|
||||||
val character = nfcGenerator.characterToNfc(characterId)
|
val character = nfcGenerator.characterToNfc(characterId)
|
||||||
Log.d("CharacterType", character.toString())
|
AppLogger.d("CharacterType", character.toString())
|
||||||
return character
|
return character
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,6 @@ package com.github.nacabaro.vbhelper.screens.scanScreen.converters
|
|||||||
|
|
||||||
import android.icu.util.Calendar
|
import android.icu.util.Calendar
|
||||||
import android.icu.util.TimeZone
|
import android.icu.util.TimeZone
|
||||||
import android.util.Log
|
|
||||||
import androidx.activity.ComponentActivity
|
import androidx.activity.ComponentActivity
|
||||||
import com.github.cfogrady.vbnfc.be.BENfcCharacter
|
import com.github.cfogrady.vbnfc.be.BENfcCharacter
|
||||||
import com.github.cfogrady.vbnfc.be.FirmwareVersion
|
import com.github.cfogrady.vbnfc.be.FirmwareVersion
|
||||||
@ -161,7 +160,7 @@ class ToNfcConverter(
|
|||||||
}
|
}
|
||||||
|
|
||||||
nfcVitalsHistory.map {
|
nfcVitalsHistory.map {
|
||||||
Log.d("NFC", it.toString())
|
AppLogger.d("NFC", it.toString())
|
||||||
}
|
}
|
||||||
|
|
||||||
return nfcVitalsHistory
|
return nfcVitalsHistory
|
||||||
@ -247,7 +246,7 @@ class ToNfcConverter(
|
|||||||
val calendar = android.icu.util.GregorianCalendar(TimeZone.getTimeZone("UTC"))
|
val calendar = android.icu.util.GregorianCalendar(TimeZone.getTimeZone("UTC"))
|
||||||
calendar.time = date
|
calendar.time = date
|
||||||
|
|
||||||
Log.d(
|
AppLogger.d(
|
||||||
"TransformationHistory",
|
"TransformationHistory",
|
||||||
"Year: ${calendar.get(Calendar.YEAR)}, " +
|
"Year: ${calendar.get(Calendar.YEAR)}, " +
|
||||||
"Month: ${calendar.get(Calendar.MONTH) + 1}, " +
|
"Month: ${calendar.get(Calendar.MONTH) + 1}, " +
|
||||||
|
|||||||
@ -0,0 +1,44 @@
|
|||||||
|
package com.github.nacabaro.vbhelper.screens.settingsScreen
|
||||||
|
|
||||||
|
import androidx.compose.foundation.layout.Column
|
||||||
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
|
import androidx.compose.foundation.layout.padding
|
||||||
|
import androidx.compose.foundation.rememberScrollState
|
||||||
|
import androidx.compose.foundation.verticalScroll
|
||||||
|
import androidx.compose.material3.Scaffold
|
||||||
|
import androidx.compose.material3.Text
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.ui.Modifier
|
||||||
|
import androidx.compose.ui.res.stringResource
|
||||||
|
import androidx.navigation.NavController
|
||||||
|
import com.github.nacabaro.vbhelper.R
|
||||||
|
import com.github.nacabaro.vbhelper.components.TopBanner
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun LoggerScreen(
|
||||||
|
navController: NavController
|
||||||
|
) {
|
||||||
|
Scaffold (
|
||||||
|
topBar = {
|
||||||
|
TopBanner(
|
||||||
|
text = stringResource(R.string.logs_title),
|
||||||
|
onBackClick = {
|
||||||
|
navController.popBackStack()
|
||||||
|
}
|
||||||
|
)
|
||||||
|
},
|
||||||
|
modifier = Modifier
|
||||||
|
.fillMaxSize()
|
||||||
|
) { contentPadding ->
|
||||||
|
Column (
|
||||||
|
modifier = Modifier
|
||||||
|
.padding(top = contentPadding.calculateTopPadding())
|
||||||
|
) {
|
||||||
|
Text(
|
||||||
|
text = AppLogger.getLogs(),
|
||||||
|
modifier = Modifier
|
||||||
|
.verticalScroll(rememberScrollState())
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,7 +1,6 @@
|
|||||||
package com.github.nacabaro.vbhelper.screens.settingsScreen
|
package com.github.nacabaro.vbhelper.screens.settingsScreen
|
||||||
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.net.Uri
|
|
||||||
import androidx.compose.foundation.clickable
|
import androidx.compose.foundation.clickable
|
||||||
import androidx.compose.foundation.layout.Box
|
import androidx.compose.foundation.layout.Box
|
||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
@ -24,6 +23,7 @@ import androidx.navigation.NavController
|
|||||||
import com.github.nacabaro.vbhelper.components.TopBanner
|
import com.github.nacabaro.vbhelper.components.TopBanner
|
||||||
import com.github.nacabaro.vbhelper.navigation.NavigationItems
|
import com.github.nacabaro.vbhelper.navigation.NavigationItems
|
||||||
import com.github.nacabaro.vbhelper.R
|
import com.github.nacabaro.vbhelper.R
|
||||||
|
import androidx.core.net.toUri
|
||||||
|
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
@ -80,10 +80,16 @@ fun SettingsScreen(
|
|||||||
) {
|
) {
|
||||||
val browserIntent = Intent(
|
val browserIntent = Intent(
|
||||||
Intent.ACTION_VIEW,
|
Intent.ACTION_VIEW,
|
||||||
Uri.parse("https://github.com/nacabaro/vbhelper/")
|
"https://github.com/nacabaro/vbhelper/".toUri()
|
||||||
)
|
)
|
||||||
context.startActivity(browserIntent)
|
context.startActivity(browserIntent)
|
||||||
}
|
}
|
||||||
|
SettingsEntry(
|
||||||
|
title = stringResource(R.string.settings_logs_title),
|
||||||
|
description = stringResource(R.string.settings_logs_desc)
|
||||||
|
) {
|
||||||
|
navController.navigate(NavigationItems.Logger.route)
|
||||||
|
}
|
||||||
|
|
||||||
SettingsSection(title = stringResource(R.string.settings_section_data))
|
SettingsSection(title = stringResource(R.string.settings_section_data))
|
||||||
SettingsEntry(
|
SettingsEntry(
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
package com.github.nacabaro.vbhelper.screens.settingsScreen.controllers
|
package com.github.nacabaro.vbhelper.screens.settingsScreen.controllers
|
||||||
|
|
||||||
import android.util.Log
|
|
||||||
import com.github.cfogrady.vb.dim.card.BemCard
|
import com.github.cfogrady.vb.dim.card.BemCard
|
||||||
import com.github.cfogrady.vb.dim.card.DimCard
|
import com.github.cfogrady.vb.dim.card.DimCard
|
||||||
import com.github.cfogrady.vb.dim.card.DimReader
|
import com.github.cfogrady.vb.dim.card.DimReader
|
||||||
@ -154,7 +153,7 @@ class CardImportController(
|
|||||||
cardId: Long,
|
cardId: Long,
|
||||||
card: com.github.cfogrady.vb.dim.card.Card<*, *, *, *, *, *>
|
card: com.github.cfogrady.vb.dim.card.Card<*, *, *, *, *, *>
|
||||||
) {
|
) {
|
||||||
Log.d("importAdventureMissions", "Importing adventure missions")
|
AppLogger.d("importAdventureMissions", "Importing adventure missions")
|
||||||
if (card is BemCard) {
|
if (card is BemCard) {
|
||||||
card.adventureLevels.levels.forEach {
|
card.adventureLevels.levels.forEach {
|
||||||
database
|
database
|
||||||
@ -190,13 +189,13 @@ class CardImportController(
|
|||||||
cardId: Long,
|
cardId: Long,
|
||||||
card: com.github.cfogrady.vb.dim.card.Card<*, *, *, *, *, *>
|
card: com.github.cfogrady.vb.dim.card.Card<*, *, *, *, *, *>
|
||||||
) {
|
) {
|
||||||
Log.d("importCardFusions", "Importing card fusions")
|
AppLogger.d("importCardFusions", "Importing card fusions")
|
||||||
if (card is DimCard) {
|
if (card is DimCard) {
|
||||||
card
|
card
|
||||||
.attributeFusions
|
.attributeFusions
|
||||||
.entries
|
.entries
|
||||||
.forEach {
|
.forEach {
|
||||||
Log.d("importCardFusions", "Importing fusion: ${it.attribute1Fusion}")
|
AppLogger.d("importCardFusions", "Importing fusion: ${it.attribute1Fusion}")
|
||||||
if (it.attribute1Fusion != 65535 && it.characterIndex != 65535) {
|
if (it.attribute1Fusion != 65535 && it.characterIndex != 65535) {
|
||||||
database
|
database
|
||||||
.cardFusionsDao()
|
.cardFusionsDao()
|
||||||
|
|||||||
@ -2,7 +2,6 @@ package com.github.nacabaro.vbhelper.screens.settingsScreen.controllers
|
|||||||
|
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.provider.OpenableColumns
|
import android.provider.OpenableColumns
|
||||||
import android.util.Log
|
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.activity.ComponentActivity
|
import androidx.activity.ComponentActivity
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
@ -41,7 +40,7 @@ class DatabaseManagementController(
|
|||||||
componentActivity.finishAffinity()
|
componentActivity.finishAffinity()
|
||||||
}
|
}
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
Log.e("ScanScreenController", "Error exporting database $e")
|
AppLogger.e("ScanScreenController", "Error exporting database $e")
|
||||||
componentActivity.runOnUiThread {
|
componentActivity.runOnUiThread {
|
||||||
Toast.makeText(componentActivity, "Error exporting database: ${e.message}", Toast.LENGTH_LONG).show()
|
Toast.makeText(componentActivity, "Error exporting database: ${e.message}", Toast.LENGTH_LONG).show()
|
||||||
}
|
}
|
||||||
@ -84,7 +83,7 @@ class DatabaseManagementController(
|
|||||||
componentActivity.finishAffinity()
|
componentActivity.finishAffinity()
|
||||||
}
|
}
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
Log.e("ScanScreenController", "Error importing database $e")
|
AppLogger.e("ScanScreenController", "Error importing database $e")
|
||||||
componentActivity.runOnUiThread {
|
componentActivity.runOnUiThread {
|
||||||
Toast.makeText(componentActivity, "Error importing database: ${e.message}", Toast.LENGTH_LONG).show()
|
Toast.makeText(componentActivity, "Error importing database: ${e.message}", Toast.LENGTH_LONG).show()
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,7 +1,6 @@
|
|||||||
package com.github.nacabaro.vbhelper.screens.spriteViewer
|
package com.github.nacabaro.vbhelper.screens.spriteViewer
|
||||||
|
|
||||||
import android.graphics.Bitmap
|
import android.graphics.Bitmap
|
||||||
import android.util.Log
|
|
||||||
import androidx.compose.foundation.Image
|
import androidx.compose.foundation.Image
|
||||||
import androidx.compose.foundation.layout.fillMaxSize
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
@ -13,7 +12,6 @@ import androidx.compose.runtime.Composable
|
|||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
import androidx.compose.runtime.mutableStateListOf
|
import androidx.compose.runtime.mutableStateListOf
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
import androidx.compose.runtime.rememberCoroutineScope
|
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.graphics.asImageBitmap
|
import androidx.compose.ui.graphics.asImageBitmap
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
@ -27,8 +25,6 @@ fun SpriteViewer(
|
|||||||
) {
|
) {
|
||||||
val spriteList = remember { mutableStateListOf<Bitmap>() }
|
val spriteList = remember { mutableStateListOf<Bitmap>() }
|
||||||
|
|
||||||
Log.d("SpriteViewer", "spriteList: $spriteList")
|
|
||||||
|
|
||||||
LaunchedEffect(spriteViewerController) {
|
LaunchedEffect(spriteViewerController) {
|
||||||
val sprites = spriteViewerController.getAllSprites()
|
val sprites = spriteViewerController.getAllSprites()
|
||||||
val bitmapData = spriteViewerController.convertToBitmap(sprites)
|
val bitmapData = spriteViewerController.convertToBitmap(sprites)
|
||||||
|
|||||||
@ -1,13 +1,11 @@
|
|||||||
package com.github.nacabaro.vbhelper.screens.spriteViewer
|
package com.github.nacabaro.vbhelper.screens.spriteViewer
|
||||||
|
|
||||||
import android.graphics.Bitmap
|
import android.graphics.Bitmap
|
||||||
import android.util.Log
|
|
||||||
import androidx.activity.ComponentActivity
|
import androidx.activity.ComponentActivity
|
||||||
import androidx.compose.runtime.remember
|
|
||||||
import androidx.compose.ui.graphics.asImageBitmap
|
|
||||||
import com.github.nacabaro.vbhelper.di.VBHelper
|
import com.github.nacabaro.vbhelper.di.VBHelper
|
||||||
import com.github.nacabaro.vbhelper.domain.characters.Sprite
|
import com.github.nacabaro.vbhelper.domain.characters.Sprite
|
||||||
import java.nio.ByteBuffer
|
import java.nio.ByteBuffer
|
||||||
|
import androidx.core.graphics.createBitmap
|
||||||
|
|
||||||
class SpriteViewerControllerImpl(
|
class SpriteViewerControllerImpl(
|
||||||
private val context: ComponentActivity
|
private val context: ComponentActivity
|
||||||
@ -24,41 +22,40 @@ class SpriteViewerControllerImpl(
|
|||||||
val bitmapList = mutableListOf<Bitmap>()
|
val bitmapList = mutableListOf<Bitmap>()
|
||||||
|
|
||||||
for (sprite in sprites) {
|
for (sprite in sprites) {
|
||||||
Log.d("SpriteViewer", "sprite: $sprite")
|
bitmapList.add(createBitmap(sprite.width, sprite.height, Bitmap.Config.RGB_565).apply {
|
||||||
bitmapList.add(Bitmap.createBitmap(sprite.width, sprite.height, Bitmap.Config.RGB_565).apply {
|
|
||||||
copyPixelsFromBuffer(ByteBuffer.wrap(sprite.spriteIdle1))
|
copyPixelsFromBuffer(ByteBuffer.wrap(sprite.spriteIdle1))
|
||||||
})
|
})
|
||||||
bitmapList.add(Bitmap.createBitmap(sprite.width, sprite.height, Bitmap.Config.RGB_565).apply {
|
bitmapList.add(createBitmap(sprite.width, sprite.height, Bitmap.Config.RGB_565).apply {
|
||||||
copyPixelsFromBuffer(ByteBuffer.wrap(sprite.spriteIdle2))
|
copyPixelsFromBuffer(ByteBuffer.wrap(sprite.spriteIdle2))
|
||||||
})
|
})
|
||||||
bitmapList.add(Bitmap.createBitmap(sprite.width, sprite.height, Bitmap.Config.RGB_565).apply {
|
bitmapList.add(createBitmap(sprite.width, sprite.height, Bitmap.Config.RGB_565).apply {
|
||||||
copyPixelsFromBuffer(ByteBuffer.wrap(sprite.spriteWalk1))
|
copyPixelsFromBuffer(ByteBuffer.wrap(sprite.spriteWalk1))
|
||||||
})
|
})
|
||||||
bitmapList.add(Bitmap.createBitmap(sprite.width, sprite.height, Bitmap.Config.RGB_565).apply {
|
bitmapList.add(createBitmap(sprite.width, sprite.height, Bitmap.Config.RGB_565).apply {
|
||||||
copyPixelsFromBuffer(ByteBuffer.wrap(sprite.spriteWalk2))
|
copyPixelsFromBuffer(ByteBuffer.wrap(sprite.spriteWalk2))
|
||||||
})
|
})
|
||||||
bitmapList.add(Bitmap.createBitmap(sprite.width, sprite.height, Bitmap.Config.RGB_565).apply {
|
bitmapList.add(createBitmap(sprite.width, sprite.height, Bitmap.Config.RGB_565).apply {
|
||||||
copyPixelsFromBuffer(ByteBuffer.wrap(sprite.spriteRun1))
|
copyPixelsFromBuffer(ByteBuffer.wrap(sprite.spriteRun1))
|
||||||
})
|
})
|
||||||
bitmapList.add(Bitmap.createBitmap(sprite.width, sprite.height, Bitmap.Config.RGB_565).apply {
|
bitmapList.add(createBitmap(sprite.width, sprite.height, Bitmap.Config.RGB_565).apply {
|
||||||
copyPixelsFromBuffer(ByteBuffer.wrap(sprite.spriteRun2))
|
copyPixelsFromBuffer(ByteBuffer.wrap(sprite.spriteRun2))
|
||||||
})
|
})
|
||||||
bitmapList.add(Bitmap.createBitmap(sprite.width, sprite.height, Bitmap.Config.RGB_565).apply {
|
bitmapList.add(createBitmap(sprite.width, sprite.height, Bitmap.Config.RGB_565).apply {
|
||||||
copyPixelsFromBuffer(ByteBuffer.wrap(sprite.spriteTrain1))
|
copyPixelsFromBuffer(ByteBuffer.wrap(sprite.spriteTrain1))
|
||||||
})
|
})
|
||||||
bitmapList.add(Bitmap.createBitmap(sprite.width, sprite.height, Bitmap.Config.RGB_565).apply {
|
bitmapList.add(createBitmap(sprite.width, sprite.height, Bitmap.Config.RGB_565).apply {
|
||||||
copyPixelsFromBuffer(ByteBuffer.wrap(sprite.spriteTrain2))
|
copyPixelsFromBuffer(ByteBuffer.wrap(sprite.spriteTrain2))
|
||||||
})
|
})
|
||||||
bitmapList.add(Bitmap.createBitmap(sprite.width, sprite.height, Bitmap.Config.RGB_565).apply {
|
bitmapList.add(createBitmap(sprite.width, sprite.height, Bitmap.Config.RGB_565).apply {
|
||||||
copyPixelsFromBuffer(ByteBuffer.wrap(sprite.spriteHappy))
|
copyPixelsFromBuffer(ByteBuffer.wrap(sprite.spriteHappy))
|
||||||
})
|
})
|
||||||
bitmapList.add(Bitmap.createBitmap(sprite.width, sprite.height, Bitmap.Config.RGB_565).apply {
|
bitmapList.add(createBitmap(sprite.width, sprite.height, Bitmap.Config.RGB_565).apply {
|
||||||
copyPixelsFromBuffer(ByteBuffer.wrap(sprite.spriteSleep))
|
copyPixelsFromBuffer(ByteBuffer.wrap(sprite.spriteSleep))
|
||||||
})
|
})
|
||||||
bitmapList.add(Bitmap.createBitmap(sprite.width, sprite.height, Bitmap.Config.RGB_565).apply {
|
bitmapList.add(createBitmap(sprite.width, sprite.height, Bitmap.Config.RGB_565).apply {
|
||||||
copyPixelsFromBuffer(ByteBuffer.wrap(sprite.spriteAttack))
|
copyPixelsFromBuffer(ByteBuffer.wrap(sprite.spriteAttack))
|
||||||
})
|
})
|
||||||
bitmapList.add(Bitmap.createBitmap(sprite.width, sprite.height, Bitmap.Config.RGB_565).apply {
|
bitmapList.add(createBitmap(sprite.width, sprite.height, Bitmap.Config.RGB_565).apply {
|
||||||
copyPixelsFromBuffer(ByteBuffer.wrap(sprite.spriteDodge))
|
copyPixelsFromBuffer(ByteBuffer.wrap(sprite.spriteDodge))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
package com.github.nacabaro.vbhelper.screens.storageScreen
|
package com.github.nacabaro.vbhelper.screens.storageScreen
|
||||||
|
|
||||||
import android.util.Log
|
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.compose.foundation.gestures.Orientation
|
import androidx.compose.foundation.gestures.Orientation
|
||||||
import androidx.compose.foundation.gestures.scrollable
|
import androidx.compose.foundation.gestures.scrollable
|
||||||
@ -149,7 +148,7 @@ fun StorageScreen(
|
|||||||
.deleteCharacter(
|
.deleteCharacter(
|
||||||
characterId = selectedCharacter!!,
|
characterId = selectedCharacter!!,
|
||||||
onCompletion = {
|
onCompletion = {
|
||||||
Log.d("StorageScreen", "Character deleted")
|
AppLogger.d("StorageScreen", "Character deleted")
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
selectedCharacter = null
|
selectedCharacter = null
|
||||||
|
|||||||
9
app/src/main/res/drawable/baseline_bug_report.xml
Normal file
9
app/src/main/res/drawable/baseline_bug_report.xml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="960"
|
||||||
|
android:viewportHeight="960">
|
||||||
|
<path
|
||||||
|
android:pathData="M480,760q66,0 113,-47t47,-113v-160q0,-66 -47,-113t-113,-47q-66,0 -113,47t-47,113v160q0,66 47,113t113,47ZM400,640h160v-80L400,560v80ZM400,480h160v-80L400,400v80ZM480,520ZM480,840q-65,0 -120.5,-32T272,720L160,720v-80h84q-3,-20 -3.5,-40t-0.5,-40h-80v-80h80q0,-20 0.5,-40t3.5,-40h-84v-80h112q14,-23 31.5,-43t40.5,-35l-64,-66 56,-56 86,86q28,-9 57,-9t57,9l88,-86 56,56 -66,66q23,15 41.5,34.5T688,320h112v80h-84q3,20 3.5,40t0.5,40h80v80h-80q0,20 -0.5,40t-3.5,40h84v80L688,720q-32,56 -87.5,88T480,840Z"
|
||||||
|
android:fillColor="#000000"/>
|
||||||
|
</vector>
|
||||||
@ -225,5 +225,9 @@
|
|||||||
<string name="home_special_mission_delete_main">Are you sure you want to delete this special mission with this progress?</string>
|
<string name="home_special_mission_delete_main">Are you sure you want to delete this special mission with this progress?</string>
|
||||||
<string name="home_special_mission_delete_dismiss">Dismiss</string>
|
<string name="home_special_mission_delete_dismiss">Dismiss</string>
|
||||||
<string name="home_special_mission_delete_remove">Remove</string>
|
<string name="home_special_mission_delete_remove">Remove</string>
|
||||||
|
<string name="nav_logs">Logs</string>
|
||||||
|
<string name="settings_logs_title">Log viewer</string>
|
||||||
|
<string name="settings_logs_desc">Check logs generated within the app</string>
|
||||||
|
<string name="logs_title">Application logs</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
Loading…
x
Reference in New Issue
Block a user