mirror of
https://github.com/nacabaro/vbhelper.git
synced 2026-01-27 16:05:32 +00:00
Not much
- Imported card backgrounds (not necessary but future proofing just in case) - Readded the sprite viewer just to verify everything is working as intended, will probably get rid of it again? or maybe I should keep it since it holds a copy of all the sprites in the card... - TODO: Remove old unused tables
This commit is contained in:
parent
e85e1f45bf
commit
fd76c46f39
@ -0,0 +1,24 @@
|
||||
package com.github.nacabaro.vbhelper.daos
|
||||
|
||||
import androidx.room.Dao
|
||||
import androidx.room.Insert
|
||||
import androidx.room.Query
|
||||
import com.github.nacabaro.vbhelper.domain.card.CardBackground
|
||||
|
||||
@Dao
|
||||
interface CardBackgroundDao {
|
||||
@Insert
|
||||
suspend fun insertCardBackground(vararg cardBackground: CardBackground)
|
||||
|
||||
@Query("""
|
||||
SELECT * FROM CardBackground
|
||||
WHERE cardId = :cardId
|
||||
""")
|
||||
suspend fun getCardBackground(cardId: Long): CardBackground
|
||||
|
||||
@Query("""
|
||||
SELECT * FROM CardBackground
|
||||
""")
|
||||
suspend fun getBackgrounds(): List<CardBackground>
|
||||
|
||||
}
|
||||
@ -5,6 +5,7 @@ import androidx.room.Insert
|
||||
import androidx.room.OnConflictStrategy
|
||||
import androidx.room.Query
|
||||
import com.github.nacabaro.vbhelper.domain.card.Card
|
||||
import com.github.nacabaro.vbhelper.domain.card.CardSprites
|
||||
|
||||
@Dao
|
||||
interface CardDao {
|
||||
@ -33,4 +34,11 @@ interface CardDao {
|
||||
|
||||
@Query("DELETE FROM Card WHERE id = :id")
|
||||
suspend fun deleteCard(id: Long)
|
||||
|
||||
@Insert
|
||||
suspend fun insertSprites(vararg sprites: CardSprites)
|
||||
|
||||
@Query("SELECT * FROM CardSprites")
|
||||
suspend fun getSprites(): List<CardSprites>
|
||||
|
||||
}
|
||||
@ -35,7 +35,7 @@ interface CharacterDao {
|
||||
|
||||
@Query(
|
||||
"""
|
||||
INSERT INTO PossibleTransformations (charaId, requiredVitals, requiredTrophies, requiredBattles, requiredWinRate, changeTimerHours, requiredAdventureLevelCompleted, toCharaId)
|
||||
INSERT INTO CardTransformations (charaId, requiredVitals, requiredTrophies, requiredBattles, requiredWinRate, changeTimerHours, requiredAdventureLevelCompleted, toCharaId)
|
||||
SELECT
|
||||
(SELECT id FROM CardCharacter WHERE charaIndex = :fromChraraIndex AND cardId = :cardId),
|
||||
:requiredVitals,
|
||||
@ -75,7 +75,7 @@ interface CharacterDao {
|
||||
pt.changeTimerHours as changeTimerHours,
|
||||
pt.requiredAdventureLevelCompleted as requiredAdventureLevelCompleted
|
||||
FROM
|
||||
PossibleTransformations pt
|
||||
CardTransformations pt
|
||||
JOIN CardCharacter c on pt.toCharaId = c.id
|
||||
JOIN Sprite s ON s.id = c.spriteId
|
||||
LEFT JOIN Dex d ON d.id = pt.toCharaId
|
||||
|
||||
@ -4,6 +4,7 @@ import androidx.room.Database
|
||||
import androidx.room.RoomDatabase
|
||||
import com.github.nacabaro.vbhelper.daos.AdventureDao
|
||||
import com.github.nacabaro.vbhelper.daos.CardAdventureDao
|
||||
import com.github.nacabaro.vbhelper.daos.CardBackgroundDao
|
||||
import com.github.nacabaro.vbhelper.daos.CharacterDao
|
||||
import com.github.nacabaro.vbhelper.daos.DexDao
|
||||
import com.github.nacabaro.vbhelper.daos.CardDao
|
||||
@ -13,13 +14,14 @@ import com.github.nacabaro.vbhelper.daos.ItemDao
|
||||
import com.github.nacabaro.vbhelper.daos.SpecialMissionDao
|
||||
import com.github.nacabaro.vbhelper.daos.SpriteDao
|
||||
import com.github.nacabaro.vbhelper.daos.UserCharacterDao
|
||||
import com.github.nacabaro.vbhelper.domain.card.Background
|
||||
import com.github.nacabaro.vbhelper.domain.card.CardBackground
|
||||
import com.github.nacabaro.vbhelper.domain.card.CardCharacter
|
||||
import com.github.nacabaro.vbhelper.domain.card.Card
|
||||
import com.github.nacabaro.vbhelper.domain.card.CardAdventure
|
||||
import com.github.nacabaro.vbhelper.domain.card.CardFusions
|
||||
import com.github.nacabaro.vbhelper.domain.card.CardProgress
|
||||
import com.github.nacabaro.vbhelper.domain.card.PossibleTransformations
|
||||
import com.github.nacabaro.vbhelper.domain.card.CardSprites
|
||||
import com.github.nacabaro.vbhelper.domain.card.CardTransformations
|
||||
import com.github.nacabaro.vbhelper.domain.characters.Sprite
|
||||
import com.github.nacabaro.vbhelper.domain.characters.Adventure
|
||||
import com.github.nacabaro.vbhelper.domain.characters.Dex
|
||||
@ -39,6 +41,7 @@ import com.github.nacabaro.vbhelper.domain.items.Items
|
||||
CardCharacter::class,
|
||||
CardAdventure::class,
|
||||
CardFusions::class,
|
||||
CardSprites::class,
|
||||
Sprite::class,
|
||||
UserCharacter::class,
|
||||
BECharacterData::class,
|
||||
@ -49,8 +52,8 @@ import com.github.nacabaro.vbhelper.domain.items.Items
|
||||
Dex::class,
|
||||
Items::class,
|
||||
Adventure::class,
|
||||
Background::class,
|
||||
PossibleTransformations::class
|
||||
CardBackground::class,
|
||||
CardTransformations::class
|
||||
]
|
||||
)
|
||||
abstract class AppDatabase : RoomDatabase() {
|
||||
@ -65,4 +68,5 @@ abstract class AppDatabase : RoomDatabase() {
|
||||
abstract fun specialMissionDao(): SpecialMissionDao
|
||||
abstract fun cardAdventureDao(): CardAdventureDao
|
||||
abstract fun cardFusionsDao(): CardFusionsDao
|
||||
abstract fun cardBackgroundDao(): CardBackgroundDao
|
||||
}
|
||||
@ -1,30 +0,0 @@
|
||||
package com.github.nacabaro.vbhelper.domain
|
||||
|
||||
import androidx.room.Entity
|
||||
import androidx.room.ForeignKey
|
||||
import androidx.room.PrimaryKey
|
||||
|
||||
@Entity(
|
||||
foreignKeys = [
|
||||
ForeignKey(
|
||||
entity = Character::class,
|
||||
parentColumns = ["id"],
|
||||
childColumns = ["monId"],
|
||||
onDelete = ForeignKey.CASCADE
|
||||
),
|
||||
ForeignKey(
|
||||
entity = Character::class,
|
||||
parentColumns = ["id"],
|
||||
childColumns = ["nextMon"],
|
||||
onDelete = ForeignKey.CASCADE
|
||||
)
|
||||
]
|
||||
)
|
||||
data class Evolutions(
|
||||
@PrimaryKey val monId: Int,
|
||||
@PrimaryKey val nextMon: Int,
|
||||
val trophies: Int,
|
||||
val vitals: Int,
|
||||
val totalBattles: Int,
|
||||
val winRate: Int // Does not need to be a floating point
|
||||
)
|
||||
@ -14,8 +14,8 @@ import androidx.room.PrimaryKey
|
||||
)
|
||||
]
|
||||
)
|
||||
data class Background (
|
||||
@PrimaryKey(autoGenerate = true) val id: Long,
|
||||
data class CardBackground (
|
||||
@PrimaryKey(autoGenerate = true) val id: Long = 0,
|
||||
val cardId: Long,
|
||||
val background: ByteArray,
|
||||
val backgroundWidth: Int,
|
||||
@ -0,0 +1,12 @@
|
||||
package com.github.nacabaro.vbhelper.domain.card
|
||||
|
||||
import androidx.room.Entity
|
||||
import androidx.room.PrimaryKey
|
||||
|
||||
@Entity
|
||||
data class CardSprites(
|
||||
@PrimaryKey(autoGenerate = true) val id: Long = 0,
|
||||
val sprite: ByteArray,
|
||||
val width: Int,
|
||||
val height: Int
|
||||
)
|
||||
@ -20,7 +20,7 @@ import androidx.room.PrimaryKey
|
||||
)
|
||||
]
|
||||
)
|
||||
data class PossibleTransformations (
|
||||
data class CardTransformations (
|
||||
@PrimaryKey(autoGenerate = true) val id: Long = 0,
|
||||
var charaId: Long,
|
||||
val requiredVitals: Int,
|
||||
@ -8,6 +8,7 @@ import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.navigation.NavController
|
||||
import com.github.nacabaro.vbhelper.components.TopBanner
|
||||
import com.github.nacabaro.vbhelper.navigation.NavigationItems
|
||||
|
||||
@Composable
|
||||
fun CreditsScreen(
|
||||
@ -19,6 +20,9 @@ fun CreditsScreen(
|
||||
text = "Credits",
|
||||
onBackClick = {
|
||||
navController.popBackStack()
|
||||
},
|
||||
onGearClick = {
|
||||
navController.navigate(NavigationItems.Viewer.route)
|
||||
}
|
||||
)
|
||||
},
|
||||
|
||||
@ -17,8 +17,10 @@ import com.github.nacabaro.vbhelper.database.AppDatabase
|
||||
import com.github.nacabaro.vbhelper.di.VBHelper
|
||||
import com.github.nacabaro.vbhelper.domain.characters.Sprite
|
||||
import com.github.nacabaro.vbhelper.domain.card.Card
|
||||
import com.github.nacabaro.vbhelper.domain.card.CardBackground
|
||||
import com.github.nacabaro.vbhelper.domain.card.CardProgress
|
||||
import com.github.nacabaro.vbhelper.domain.card.CardCharacter
|
||||
import com.github.nacabaro.vbhelper.domain.card.CardSprites
|
||||
import com.github.nacabaro.vbhelper.source.ApkSecretsImporter
|
||||
import com.github.nacabaro.vbhelper.source.SecretsImporter
|
||||
import com.github.nacabaro.vbhelper.source.SecretsRepository
|
||||
@ -215,7 +217,7 @@ class SettingsScreenControllerImpl(
|
||||
spriteHappy = card.spriteData.sprites[spriteCounter + 4].pixelData,
|
||||
spriteSleep = card.spriteData.sprites[spriteCounter + 5].pixelData,
|
||||
spriteAttack = card.spriteData.sprites[spriteCounter + 2].pixelData,
|
||||
spriteDodge = card.spriteData.sprites[spriteCounter + 3].pixelData
|
||||
spriteDodge = card.spriteData.sprites[spriteCounter + 3].pixelData,
|
||||
)
|
||||
} else {
|
||||
domainSprite = Sprite(
|
||||
@ -324,10 +326,10 @@ class SettingsScreenControllerImpl(
|
||||
.insertNewFusion(
|
||||
cardId = cardId,
|
||||
fromCharaId = it.characterIndex,
|
||||
toCharaIdAttr1 = it.attribute1Fusion,
|
||||
toCharaIdAttr2 = it.attribute2Fusion,
|
||||
toCharaIdAttr3 = it.attribute3Fusion,
|
||||
toCharaIdAttr4 = it.attribute4Fusion
|
||||
toCharaIdVirus = it.attribute1Fusion,
|
||||
toCharaIdData = it.attribute2Fusion,
|
||||
toCharaIdVaccine = it.attribute3Fusion,
|
||||
toCharaIdFree = it.attribute4Fusion
|
||||
)
|
||||
}
|
||||
}
|
||||
@ -347,6 +349,40 @@ class SettingsScreenControllerImpl(
|
||||
.updateDimProgress(cardProgress)
|
||||
}
|
||||
|
||||
private suspend fun importBackgrounds(
|
||||
cardId: Long,
|
||||
card: com.github.cfogrady.vb.dim.card.Card<*, *, *, *, *, *>
|
||||
) {
|
||||
val backgrounds = mutableListOf<CardBackground>()
|
||||
|
||||
if (card is DimCard) {
|
||||
backgrounds.add(
|
||||
CardBackground(
|
||||
cardId = cardId,
|
||||
background = card.spriteData.sprites[1].pixelData,
|
||||
backgroundWidth = card.spriteData.sprites[1].width,
|
||||
backgroundHeight = card.spriteData.sprites[1].height
|
||||
)
|
||||
)
|
||||
} else if (card is BemCard) {
|
||||
val possibleBackgroundsIds = listOf(1, 10, 30, 31, 32, 33)
|
||||
for (id in possibleBackgroundsIds) {
|
||||
backgrounds.add(
|
||||
CardBackground(
|
||||
cardId = cardId,
|
||||
background = card.spriteData.sprites[id].pixelData,
|
||||
backgroundWidth = card.spriteData.sprites[id].width,
|
||||
backgroundHeight = card.spriteData.sprites[id].height
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
database
|
||||
.cardBackgroundDao()
|
||||
.insertCardBackground(*backgrounds.toTypedArray())
|
||||
}
|
||||
|
||||
private fun importCard(uri: Uri) {
|
||||
context.lifecycleScope.launch(Dispatchers.IO) {
|
||||
val contentResolver = context.contentResolver
|
||||
@ -379,6 +415,20 @@ class SettingsScreenControllerImpl(
|
||||
importAdventureMissions(cardId, card)
|
||||
|
||||
importCardFusions(cardId, card)
|
||||
|
||||
importBackgrounds(cardId, card)
|
||||
|
||||
val cardSprites: List<CardSprites> = card.spriteData.sprites.map {
|
||||
CardSprites(
|
||||
sprite = it.pixelData,
|
||||
width = it.width,
|
||||
height = it.height
|
||||
)
|
||||
}
|
||||
|
||||
database
|
||||
.cardDao()
|
||||
.insertSprites(*cardSprites.toTypedArray())
|
||||
}
|
||||
|
||||
inputStream?.close()
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
package com.github.nacabaro.vbhelper.screens.spriteViewer
|
||||
|
||||
import android.graphics.Bitmap
|
||||
import com.github.nacabaro.vbhelper.domain.characters.Sprite
|
||||
import com.github.nacabaro.vbhelper.domain.card.CardBackground
|
||||
|
||||
interface SpriteViewerController {
|
||||
suspend fun getAllSprites(): List<Sprite>
|
||||
fun convertToBitmap(sprites: List<Sprite>): List<Bitmap>
|
||||
suspend fun getAllSprites(): List<CardBackground>
|
||||
fun convertToBitmap(sprites: List<CardBackground>): List<Bitmap>
|
||||
}
|
||||
@ -1,65 +1,29 @@
|
||||
package com.github.nacabaro.vbhelper.screens.spriteViewer
|
||||
|
||||
import android.graphics.Bitmap
|
||||
import android.util.Log
|
||||
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.domain.characters.Sprite
|
||||
import java.nio.ByteBuffer
|
||||
import androidx.core.graphics.createBitmap
|
||||
import com.github.nacabaro.vbhelper.domain.card.CardBackground
|
||||
|
||||
class SpriteViewerControllerImpl(
|
||||
private val context: ComponentActivity
|
||||
) : SpriteViewerController {
|
||||
override suspend fun getAllSprites(): List<Sprite> {
|
||||
override suspend fun getAllSprites(): List<CardBackground> {
|
||||
val applicationContext = context.applicationContext as VBHelper
|
||||
val db = applicationContext.container.db
|
||||
val sprites = db.spriteDao().getAllSprites()
|
||||
val sprites = db.cardBackgroundDao().getBackgrounds()
|
||||
return sprites
|
||||
}
|
||||
|
||||
// I don't like this, chief
|
||||
override fun convertToBitmap(sprites: List<Sprite>): List<Bitmap> {
|
||||
override fun convertToBitmap(sprites: List<CardBackground>): List<Bitmap> {
|
||||
val bitmapList = mutableListOf<Bitmap>()
|
||||
|
||||
for (sprite in sprites) {
|
||||
Log.d("SpriteViewer", "sprite: $sprite")
|
||||
bitmapList.add(Bitmap.createBitmap(sprite.width, sprite.height, Bitmap.Config.RGB_565).apply {
|
||||
copyPixelsFromBuffer(ByteBuffer.wrap(sprite.spriteIdle1))
|
||||
})
|
||||
bitmapList.add(Bitmap.createBitmap(sprite.width, sprite.height, Bitmap.Config.RGB_565).apply {
|
||||
copyPixelsFromBuffer(ByteBuffer.wrap(sprite.spriteIdle2))
|
||||
})
|
||||
bitmapList.add(Bitmap.createBitmap(sprite.width, sprite.height, Bitmap.Config.RGB_565).apply {
|
||||
copyPixelsFromBuffer(ByteBuffer.wrap(sprite.spriteWalk1))
|
||||
})
|
||||
bitmapList.add(Bitmap.createBitmap(sprite.width, sprite.height, Bitmap.Config.RGB_565).apply {
|
||||
copyPixelsFromBuffer(ByteBuffer.wrap(sprite.spriteWalk2))
|
||||
})
|
||||
bitmapList.add(Bitmap.createBitmap(sprite.width, sprite.height, Bitmap.Config.RGB_565).apply {
|
||||
copyPixelsFromBuffer(ByteBuffer.wrap(sprite.spriteRun1))
|
||||
})
|
||||
bitmapList.add(Bitmap.createBitmap(sprite.width, sprite.height, Bitmap.Config.RGB_565).apply {
|
||||
copyPixelsFromBuffer(ByteBuffer.wrap(sprite.spriteRun2))
|
||||
})
|
||||
bitmapList.add(Bitmap.createBitmap(sprite.width, sprite.height, Bitmap.Config.RGB_565).apply {
|
||||
copyPixelsFromBuffer(ByteBuffer.wrap(sprite.spriteTrain1))
|
||||
})
|
||||
bitmapList.add(Bitmap.createBitmap(sprite.width, sprite.height, Bitmap.Config.RGB_565).apply {
|
||||
copyPixelsFromBuffer(ByteBuffer.wrap(sprite.spriteTrain2))
|
||||
})
|
||||
bitmapList.add(Bitmap.createBitmap(sprite.width, sprite.height, Bitmap.Config.RGB_565).apply {
|
||||
copyPixelsFromBuffer(ByteBuffer.wrap(sprite.spriteHappy))
|
||||
})
|
||||
bitmapList.add(Bitmap.createBitmap(sprite.width, sprite.height, Bitmap.Config.RGB_565).apply {
|
||||
copyPixelsFromBuffer(ByteBuffer.wrap(sprite.spriteSleep))
|
||||
})
|
||||
bitmapList.add(Bitmap.createBitmap(sprite.width, sprite.height, Bitmap.Config.RGB_565).apply {
|
||||
copyPixelsFromBuffer(ByteBuffer.wrap(sprite.spriteAttack))
|
||||
})
|
||||
bitmapList.add(Bitmap.createBitmap(sprite.width, sprite.height, Bitmap.Config.RGB_565).apply {
|
||||
copyPixelsFromBuffer(ByteBuffer.wrap(sprite.spriteDodge))
|
||||
bitmapList.add(createBitmap(sprite.backgroundWidth, sprite.backgroundHeight, Bitmap.Config.RGB_565).apply {
|
||||
copyPixelsFromBuffer(ByteBuffer.wrap(sprite.background))
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user