Skip to content

Commit

Permalink
feat(character): add educational traits to character creation
Browse files Browse the repository at this point in the history
relates to #7
  • Loading branch information
Patrick Hoefer committed Dec 30, 2020
1 parent b872d6b commit df4e08f
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import androidx.compose.foundation.Image
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.size
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
Expand All @@ -17,6 +18,7 @@ import androidx.compose.ui.draw.alpha
import androidx.compose.ui.graphics.ImageBitmap
import androidx.compose.ui.graphics.imageFromResource
import androidx.compose.ui.unit.TextUnit
import androidx.compose.ui.unit.dp

/**
* Holds the trait selection state and provides the trait button composable
Expand Down Expand Up @@ -107,8 +109,8 @@ class TraitSelection {
educationalTrait: EducationalTrait,
selectionState: SnapshotStateMap<EducationalTrait, Int>
) {
var rank by remember { mutableStateOf(1) }
var selectionModifier by remember { mutableStateOf(Modifier.alpha(1F)) }
var rank by remember { mutableStateOf(0) }
var selectionModifier by remember { mutableStateOf(Modifier.alpha(0.2F)) }

Box(
Modifier.clickable(
Expand All @@ -121,7 +123,7 @@ class TraitSelection {
contentAlignment = Alignment.Center,
) {
Image(
modifier = selectionModifier,
modifier = selectionModifier.size(70.dp, 70.dp),
bitmap = traitImage(educationalTrait, rank)
)
}
Expand Down Expand Up @@ -167,7 +169,8 @@ class TraitSelection {
}

private fun traitImage(educationalTrait: EducationalTrait, rank: Int): ImageBitmap {
return imageFromResource(educationalIconPath(educationalTrait.code, rank))
val theRank = if (rank == 0) 1 else rank
return imageFromResource(educationalIconPath(educationalTrait.code, theRank))
}

private fun personalityIconPath(traitCode: String): String {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ fun CharacterCreateView() {
traitSelection.PersonalityTraits(traitSelectionState)
}
Column(horizontalAlignment = Alignment.CenterHorizontally) {
Text("Education Traits")
Text("Educational Traits")
traitSelection.EducationalTrait(educationalTraitSelectionState)
}
}
Expand All @@ -85,7 +85,17 @@ fun CharacterCreateView() {
}
}

CreateButton(name, dna, religion, dynasty, culture, birth, death, traitSelectionState)
CreateButton(
name,
dna,
religion,
dynasty,
culture,
birth,
death,
traitSelectionState,
educationalTraitSelectionState
)
}
}

Expand Down Expand Up @@ -159,7 +169,8 @@ private fun CreateButton(
culture: MutableState<String>,
birth: MutableState<String>,
death: MutableState<String>,
selection: SnapshotStateMap<TraitSelection.Trait, Boolean>
personalityTraitSelectionState: SnapshotStateMap<TraitSelection.Trait, Boolean>,
educationalTraitSelectionState: SnapshotStateMap<TraitSelection.EducationalTrait, Int>
) {
Button(
modifier = Modifier.padding(top = 15.dp),
Expand All @@ -174,11 +185,16 @@ private fun CreateButton(
"death" to death.value
)

val selectedTraits = selection.filter { it.value }
val personalityTraits = personalityTraitSelectionState.filter { it.value }
val eductionalTraits = educationalTraitSelectionState.filterNot { it.value == 0 }

if (validateInput(characterValues)) {
GlobalScope.launch {
createNewCharacter(characterValues, selectedTraits)
createNewCharacter(
characterValues,
personalityTraits,
educationalTraitSelectionState
)
}
} else {
NotificationsService.error("""Can not create character. Some fields were empty""")
Expand All @@ -191,10 +207,14 @@ private fun CreateButton(

private fun createNewCharacter(
characterValues: Map<String, String>,
selectedTrait: Map<TraitSelection.Trait, Boolean>
personalityTraits: Map<TraitSelection.Trait, Boolean>,
educationalTraits: SnapshotStateMap<TraitSelection.EducationalTrait, Int>
) {

val traits = selectedTrait.map { it.key.code }
val traits = mutableListOf<String>()
traits.addAll(personalityTraits.map { it.key.code })
traits.addAll(educationalTraits.map { "${it.key.code}_${it.value}" })

val newCharacter = CK3Character(
characterValues["name"]!!,
characterValues["dna"]!!,
Expand Down

0 comments on commit df4e08f

Please sign in to comment.