Add proper skills management.
This commit is contained in:
parent
6528b89f6b
commit
7b6f5b6430
45 changed files with 1355 additions and 706 deletions
|
|
@ -8,10 +8,12 @@ import com.pixelized.rplexicon.model.AssignedSpell
|
|||
import com.pixelized.rplexicon.model.CharacterSheet
|
||||
import com.pixelized.rplexicon.model.DiceThrow
|
||||
import com.pixelized.rplexicon.model.Property
|
||||
import com.pixelized.rplexicon.model.Skill
|
||||
import com.pixelized.rplexicon.model.Throw
|
||||
import com.pixelized.rplexicon.repository.data.ActionRepository
|
||||
import com.pixelized.rplexicon.repository.data.AlterationRepository
|
||||
import com.pixelized.rplexicon.repository.data.CharacterSheetRepository
|
||||
import com.pixelized.rplexicon.repository.data.SkillRepository
|
||||
import com.pixelized.rplexicon.repository.data.SpellRepository
|
||||
import com.pixelized.rplexicon.ui.screens.rolls.composable.RollDiceUio
|
||||
import com.pixelized.rplexicon.ui.screens.rolls.composable.ThrowsCardUio
|
||||
|
|
@ -41,6 +43,7 @@ class DiceThrowUseCase @Inject constructor(
|
|||
private val characterSheetRepository: CharacterSheetRepository,
|
||||
private val actionRepository: ActionRepository,
|
||||
private val spellRepository: SpellRepository,
|
||||
private val skillRepository: SkillRepository,
|
||||
private val alterationRepository: AlterationRepository,
|
||||
) {
|
||||
fun roll(diceThrow: DiceThrow, alterationId: List<String>): DiceThrowResult? {
|
||||
|
|
@ -432,6 +435,16 @@ class DiceThrowUseCase @Inject constructor(
|
|||
alterations = alterations,
|
||||
)
|
||||
}
|
||||
|
||||
is DiceThrow.Skill -> {
|
||||
val skill = skillRepository.find(
|
||||
character = diceThrow.character,
|
||||
skill = diceThrow.skill,
|
||||
)
|
||||
skillThrow(
|
||||
skill = skill,
|
||||
)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
null
|
||||
|
|
@ -894,6 +907,50 @@ class DiceThrowUseCase @Inject constructor(
|
|||
)
|
||||
}
|
||||
|
||||
private fun skillThrow(
|
||||
skill: Skill?,
|
||||
): DiceThrowResult {
|
||||
// retrieve some wording.
|
||||
val spellName = skill?.name
|
||||
val titleString = application.getString(R.string.dice_roll_spell_cast, spellName)
|
||||
|
||||
// create a list destined to contain all the values (rolled + bonus)
|
||||
val allValue = mutableListOf<Int>()
|
||||
|
||||
// main roll
|
||||
val result = roll(
|
||||
amount = skill?.effect?.amount ?: 1,
|
||||
faces = skill?.effect?.faces ?: 4,
|
||||
)
|
||||
allValue.add(result.value)
|
||||
|
||||
// build the result.
|
||||
return DiceThrowResult(
|
||||
dice = RollDiceUio(
|
||||
icon = (skill?.effect?.faces ?: 4).icon,
|
||||
result = "${result.value}",
|
||||
),
|
||||
card = ThrowsCardUio(
|
||||
title = titleString.uppercase(),
|
||||
highlight = spellName,
|
||||
dice = (skill?.effect?.faces ?: 4).icon,
|
||||
roll = allValue.toLabel(),
|
||||
result = "${allValue.sum()}",
|
||||
details = listOf(
|
||||
ThrowsCardUio.Detail(
|
||||
title = spellName,
|
||||
throws = ThrowsCardUio.Throw(
|
||||
dice = (skill?.effect?.faces ?: 4).icon,
|
||||
roll = "${skill?.effect?.amount ?: 1}d${skill?.effect?.faces ?: 4}",
|
||||
result = result.label,
|
||||
),
|
||||
result = "${result.value}",
|
||||
),
|
||||
),
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
private fun roll(
|
||||
amount: Int = 1,
|
||||
faces: Int = 20,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue