Skip to content

Commit 398021c

Browse files
committed
Merge branch 'feat/drop-legacy-armour' into 'master'
Remove legacy Armour mechanism See merge request fmasa/wfrp-master!256
2 parents 07b81c5 + 5a9ce1d commit 398021c

File tree

9 files changed

+84
-291
lines changed

9 files changed

+84
-291
lines changed

common/src/commonMain/kotlin/cz/frantisekmasa/wfrp_master/common/DependencyInjection.kt

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,9 @@ import cz.frantisekmasa.wfrp_master.common.core.PartyScreenModel
2222
import cz.frantisekmasa.wfrp_master.common.core.cache.CharacterRepositoryIdentityMap
2323
import cz.frantisekmasa.wfrp_master.common.core.cache.PartyRepositoryIdentityMap
2424
import cz.frantisekmasa.wfrp_master.common.core.domain.character.CharacterAvatarChanger
25-
import cz.frantisekmasa.wfrp_master.common.core.domain.character.CharacterFeatureRepository
2625
import cz.frantisekmasa.wfrp_master.common.core.domain.character.CharacterItem
2726
import cz.frantisekmasa.wfrp_master.common.core.domain.character.CharacterItemRepository
2827
import cz.frantisekmasa.wfrp_master.common.core.domain.character.CharacterRepository
29-
import cz.frantisekmasa.wfrp_master.common.core.domain.character.Feature
3028
import cz.frantisekmasa.wfrp_master.common.core.domain.compendium.Compendium
3129
import cz.frantisekmasa.wfrp_master.common.core.domain.compendium.FirestoreCompendium
3230
import cz.frantisekmasa.wfrp_master.common.core.domain.identifiers.CharacterId
@@ -38,11 +36,9 @@ import cz.frantisekmasa.wfrp_master.common.core.domain.religion.MiracleRepositor
3836
import cz.frantisekmasa.wfrp_master.common.core.domain.skills.SkillRepository
3937
import cz.frantisekmasa.wfrp_master.common.core.domain.spells.SpellRepository
4038
import cz.frantisekmasa.wfrp_master.common.core.domain.talents.TalentRepository
41-
import cz.frantisekmasa.wfrp_master.common.core.domain.trappings.Armour
4239
import cz.frantisekmasa.wfrp_master.common.core.domain.trappings.InventoryItemRepository
4340
import cz.frantisekmasa.wfrp_master.common.core.firebase.Schema
4441
import cz.frantisekmasa.wfrp_master.common.core.firebase.functions.CloudFunctionCharacterAvatarChanger
45-
import cz.frantisekmasa.wfrp_master.common.core.firebase.repositories.FirestoreCharacterFeatureRepository
4642
import cz.frantisekmasa.wfrp_master.common.core.firebase.repositories.FirestoreCharacterItemRepository
4743
import cz.frantisekmasa.wfrp_master.common.core.firebase.repositories.FirestoreCharacterRepository
4844
import cz.frantisekmasa.wfrp_master.common.core.firebase.repositories.FirestoreEncounterRepository
@@ -76,7 +72,6 @@ import kotlin.random.Random
7672
import cz.frantisekmasa.wfrp_master.common.core.firebase.serializationAggregateMapper as mapper
7773

7874

79-
8075
val appModule = DI.Module("Common") {
8176
import(platformModule)
8277

@@ -131,25 +126,16 @@ val appModule = DI.Module("Common") {
131126

132127
bindSingleton<CharacterAvatarChanger> { CloudFunctionCharacterAvatarChanger(instance()) }
133128

134-
bindSingleton<CharacterFeatureRepository<Armour>> {
135-
FirestoreCharacterFeatureRepository(
136-
Feature.ARMOR,
137-
instance(),
138-
Armour(),
139-
mapper(),
140-
)
141-
}
142-
143129
bindFactory { characterId: CharacterId ->
144-
TrappingsScreenModel(characterId, instance(), instance(), instance())
130+
TrappingsScreenModel(characterId, instance(), instance())
145131
}
146132

147133
/**
148134
* ViewModels
149135
*/
150136

151137
bindFactory { characterId: CharacterId ->
152-
CharacterCombatScreenModel(characterId, instance(), instance(), instance())
138+
CharacterCombatScreenModel(characterId, instance(), instance())
153139
}
154140
bindFactory { characterId: CharacterId -> CharacteristicsScreenModel(characterId, instance()) }
155141
bindFactory { characterId: CharacterId ->

common/src/commonMain/kotlin/cz/frantisekmasa/wfrp_master/common/character/combat/CharacterCombatScreenModel.kt

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import androidx.compose.runtime.Immutable
44
import cafe.adriel.voyager.core.model.ScreenModel
55
import cz.frantisekmasa.wfrp_master.common.core.domain.Damage
66
import cz.frantisekmasa.wfrp_master.common.core.domain.HitLocation
7-
import cz.frantisekmasa.wfrp_master.common.core.domain.character.CharacterFeatureRepository
87
import cz.frantisekmasa.wfrp_master.common.core.domain.character.CharacterRepository
98
import cz.frantisekmasa.wfrp_master.common.core.domain.identifiers.CharacterId
109
import cz.frantisekmasa.wfrp_master.common.core.domain.trappings.Armour
@@ -22,7 +21,6 @@ class CharacterCombatScreenModel(
2221
characterId: CharacterId,
2322
trappingRepository: InventoryItemRepository,
2423
characterRepository: CharacterRepository,
25-
armorRepository: CharacterFeatureRepository<Armour>,
2624
) : ScreenModel {
2725
private val trappingsFlow = trappingRepository.findAllForCharacter(characterId)
2826
private val characterFlow = characterRepository.getLive(characterId)
@@ -50,13 +48,7 @@ class CharacterCombatScreenModel(
5048
.toList()
5149
}
5250

53-
private val legacyArmourFlow = armorRepository
54-
.getLive(characterId)
55-
.right()
56-
57-
val armour: Flow<Armour> = legacyArmourFlow.combine(trappingsFlow) { armour, items ->
58-
armour + Armour.fromItems(items)
59-
}
51+
val armour: Flow<Armour> = trappingsFlow.map { items -> Armour.fromItems(items) }
6052

6153
val armourPieces: Flow<Map<HitLocation, List<WornArmourPiece>>> = trappingsFlow.map { trappings ->
6254
val locations = mutableMapOf<HitLocation, MutableList<WornArmourPiece>>()

common/src/commonMain/kotlin/cz/frantisekmasa/wfrp_master/common/character/trappings/ArmourCard.kt

Lines changed: 0 additions & 169 deletions
This file was deleted.

common/src/commonMain/kotlin/cz/frantisekmasa/wfrp_master/common/character/trappings/TrappingsScreen.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ import cz.frantisekmasa.wfrp_master.common.core.ui.dialogs.DialogState
3636
import cz.frantisekmasa.wfrp_master.common.core.ui.flow.collectWithLifecycle
3737
import cz.frantisekmasa.wfrp_master.common.core.ui.primitives.EmptyUI
3838
import cz.frantisekmasa.wfrp_master.common.core.ui.primitives.Spacing
39+
import cz.frantisekmasa.wfrp_master.common.core.ui.primitives.UserTip
40+
import cz.frantisekmasa.wfrp_master.common.core.ui.primitives.UserTipCard
3941
import cz.frantisekmasa.wfrp_master.common.core.ui.scaffolding.TopPanel
4042
import cz.frantisekmasa.wfrp_master.common.localization.LocalStrings
4143
import kotlinx.coroutines.Dispatchers
@@ -82,9 +84,7 @@ fun TrappingsScreen(
8284
}
8385
}
8486

85-
screenModel.armor.collectWithLifecycle(null).value?.let { armor ->
86-
ArmourCard(armor, onChange = { screenModel.updateArmor(it) })
87-
}
87+
UserTipCard(UserTip.ARMOUR_TRAPPINGS, Modifier.padding(horizontal = 8.dp))
8888

8989
var inventoryItemDialogState: DialogState<InventoryItem?> by remember {
9090
mutableStateOf(DialogState.Closed())
Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,11 @@
11
package cz.frantisekmasa.wfrp_master.common.character.trappings
22

3-
import androidx.compose.runtime.Immutable
43
import cafe.adriel.voyager.core.model.ScreenModel
54
import cafe.adriel.voyager.core.model.coroutineScope
65
import cz.frantisekmasa.wfrp_master.common.core.domain.Money
7-
import cz.frantisekmasa.wfrp_master.common.core.domain.character.CharacterFeatureRepository
86
import cz.frantisekmasa.wfrp_master.common.core.domain.character.CharacterRepository
97
import cz.frantisekmasa.wfrp_master.common.core.domain.character.NotEnoughMoney
108
import cz.frantisekmasa.wfrp_master.common.core.domain.identifiers.CharacterId
11-
import cz.frantisekmasa.wfrp_master.common.core.domain.trappings.Armour
129
import cz.frantisekmasa.wfrp_master.common.core.domain.trappings.Encumbrance
1310
import cz.frantisekmasa.wfrp_master.common.core.domain.trappings.InventoryItem
1411
import cz.frantisekmasa.wfrp_master.common.core.domain.trappings.InventoryItemRepository
@@ -17,15 +14,13 @@ import cz.frantisekmasa.wfrp_master.common.core.shared.IO
1714
import cz.frantisekmasa.wfrp_master.common.core.utils.right
1815
import kotlinx.coroutines.Dispatchers
1916
import kotlinx.coroutines.flow.Flow
20-
import kotlinx.coroutines.flow.combine
2117
import kotlinx.coroutines.flow.map
2218
import kotlinx.coroutines.launch
2319

2420

2521
class TrappingsScreenModel(
2622
private val characterId: CharacterId,
2723
private val inventoryItems: InventoryItemRepository,
28-
private val armorRepository: CharacterFeatureRepository<Armour>,
2924
private val characters: CharacterRepository
3025
) : ScreenModel {
3126

@@ -38,23 +33,6 @@ class TrappingsScreenModel(
3833
val totalEncumbrance: Flow<Encumbrance?> = inventory
3934
.map { items -> items.map { it.effectiveEncumbrance }.sum() }
4035

41-
val armor: Flow<EquippedArmour> =
42-
armorRepository
43-
.getLive(characterId)
44-
.right()
45-
.combine(inventory) { armour, items ->
46-
EquippedArmour(
47-
armourFromItems = Armour.fromItems(items),
48-
legacyArmour = armour,
49-
)
50-
}
51-
52-
@Immutable
53-
data class EquippedArmour(
54-
val armourFromItems: Armour,
55-
val legacyArmour: Armour,
56-
)
57-
5836
val money: Flow<Money> = character.map { it.money }
5937

6038
suspend fun addMoney(amount: Money) {
@@ -80,8 +58,4 @@ class TrappingsScreenModel(
8058
fun removeInventoryItem(inventoryItem: InventoryItem) = coroutineScope.launch(Dispatchers.IO) {
8159
inventoryItems.remove(characterId, inventoryItem.id)
8260
}
83-
84-
fun updateArmor(armor: Armour) = coroutineScope.launch(Dispatchers.IO) {
85-
armorRepository.save(characterId, armor)
86-
}
8761
}

common/src/commonMain/kotlin/cz/frantisekmasa/wfrp_master/common/core/domain/character/CharacterFeatureRepository.kt

Lines changed: 0 additions & 12 deletions
This file was deleted.

common/src/commonMain/kotlin/cz/frantisekmasa/wfrp_master/common/core/domain/character/Feature.kt

Lines changed: 0 additions & 5 deletions
This file was deleted.

0 commit comments

Comments
 (0)