From 49723892fcc165831436252876cb4c9aed69fc42 Mon Sep 17 00:00:00 2001 From: Thomas Andres Gomez Date: Wed, 19 Mar 2025 19:13:15 +0100 Subject: [PATCH] Change the damage text message message. --- .../composeResources/values/strings.xml | 7 ++-- .../lwa/repository/campaign/CampaignStore.kt | 2 +- ...cterDetailCharacteristicDialogViewModel.kt | 11 ++++- .../campaign/text/TextMessageFactory.kt | 42 ++++++++----------- .../messages/CharacteristicTextMessage.kt | 12 ++---- .../com/pixelized/server/lwa/server/Engine.kt | 2 +- .../lwa/protocol/websocket/CampaignMessage.kt | 3 +- 7 files changed, 38 insertions(+), 41 deletions(-) diff --git a/composeApp/src/commonMain/composeResources/values/strings.xml b/composeApp/src/commonMain/composeResources/values/strings.xml index fd9b1bf..a28bf69 100644 --- a/composeApp/src/commonMain/composeResources/values/strings.xml +++ b/composeApp/src/commonMain/composeResources/values/strings.xml @@ -185,9 +185,10 @@ Difficulté %1$s passe à %2$d d'état diminuée - %1$s passe à %2$d %3$s - Hp - Pp + %1$s subit %2$d point(s) de dommage + %1$s récupère %2$d point(s) de vie + %1$s utilise %2$d point(s) de pouvoir + %1$s récupère %2$d point(s) de pouvoir Paramètres de l'application Paramètres par défault diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/repository/campaign/CampaignStore.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/repository/campaign/CampaignStore.kt index d763745..0b1a648 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/repository/campaign/CampaignStore.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/repository/campaign/CampaignStore.kt @@ -123,7 +123,7 @@ class CampaignStore( is CampaignMessage.UpdateCharacteristic -> updateCharacteristic( characterInstanceId = instanceId, characteristic = factory.convertFromJson(json = message.characteristic), - value = message.value, + value = message.newValue, ) is CampaignMessage.UpdateDiminished -> updateDiminished( diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/composable/character/characteristic/CharacterDetailCharacteristicDialogViewModel.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/composable/character/characteristic/CharacterDetailCharacteristicDialogViewModel.kt index cd859ac..611c61c 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/composable/character/characteristic/CharacterDetailCharacteristicDialogViewModel.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/composable/character/characteristic/CharacterDetailCharacteristicDialogViewModel.kt @@ -11,7 +11,9 @@ import com.pixelized.shared.lwa.model.AlteredCharacterSheetFactory import com.pixelized.shared.lwa.model.alteration.FieldAlteration import com.pixelized.shared.lwa.model.campaign.Campaign import com.pixelized.shared.lwa.model.campaign.Campaign.CharacterInstance.Characteristic +import com.pixelized.shared.lwa.model.campaign.damage import com.pixelized.shared.lwa.model.campaign.factory.CampaignJsonFactory +import com.pixelized.shared.lwa.model.campaign.power import com.pixelized.shared.lwa.model.characterSheet.CharacterSheet import com.pixelized.shared.lwa.protocol.websocket.CampaignMessage @@ -65,6 +67,9 @@ class CharacterDetailCharacteristicDialogViewModel( val sheet = characterSheetRepository.characterDetail( characterSheetId = characterInstanceId.characterSheetId, ) ?: return + val characterInstance = campaignRepository.instance( + characterInstanceId = characterInstanceId, + ) val alterations = alterationRepository.alterations( characterInstanceId = characterInstanceId, ) @@ -85,7 +90,11 @@ class CharacterDetailCharacteristicDialogViewModel( characterSheetId = characterInstanceId.characterSheetId, instanceId = characterInstanceId.instanceId, characteristic = characteristicJson, - value = when (characteristic) { + oldValue = when (characteristic) { + Characteristic.Damage -> characterInstance.damage + Characteristic.Power -> characterInstance.power + }, + newValue = when (characteristic) { Characteristic.Damage -> alteredSheet.maxHp - value Characteristic.Power -> alteredSheet.maxPp - value }, diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/text/TextMessageFactory.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/text/TextMessageFactory.kt index 34b4bbc..3b6a121 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/text/TextMessageFactory.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/text/TextMessageFactory.kt @@ -7,21 +7,22 @@ import com.pixelized.desktop.lwa.ui.screen.campaign.text.messages.DiminishedText import com.pixelized.desktop.lwa.ui.screen.campaign.text.messages.RollTextMessageUio import com.pixelized.desktop.lwa.ui.screen.campaign.text.messages.TextMessage import com.pixelized.shared.lwa.model.AlteredCharacterSheetFactory -import com.pixelized.shared.lwa.model.campaign.Campaign import com.pixelized.shared.lwa.model.campaign.CampaignJsonV1.CharacterInstanceJsonV1.CharacteristicV1.Damage import com.pixelized.shared.lwa.model.campaign.CampaignJsonV1.CharacterInstanceJsonV1.CharacteristicV1.Power -import com.pixelized.shared.lwa.protocol.websocket.SocketMessage import com.pixelized.shared.lwa.protocol.websocket.CampaignMessage import com.pixelized.shared.lwa.protocol.websocket.GameMasterEvent import com.pixelized.shared.lwa.protocol.websocket.RestSynchronisation import com.pixelized.shared.lwa.protocol.websocket.RollMessage +import com.pixelized.shared.lwa.protocol.websocket.SocketMessage import com.pixelized.shared.lwa.protocol.websocket.ToggleActiveAlteration import com.pixelized.shared.lwa.protocol.websocket.UpdateSkillUsageMessage import lwacharactersheet.composeapp.generated.resources.Res -import lwacharactersheet.composeapp.generated.resources.chat__characteristic__hp -import lwacharactersheet.composeapp.generated.resources.chat__characteristic__pp -import org.jetbrains.compose.resources.getString +import lwacharactersheet.composeapp.generated.resources.chat__characteristic_change__hp_down +import lwacharactersheet.composeapp.generated.resources.chat__characteristic_change__hp_up +import lwacharactersheet.composeapp.generated.resources.chat__characteristic_change__pp_down +import lwacharactersheet.composeapp.generated.resources.chat__characteristic_change__pp_up import java.text.SimpleDateFormat +import kotlin.math.abs class TextMessageFactory( private val characterSheetRepository: CharacterSheetRepository, @@ -80,30 +81,21 @@ class TextMessageFactory( val sheet = characterSheetRepository.characterDetail( characterSheetId = message.characterSheetId, ) ?: return null - val characterInstanceId = Campaign.CharacterInstance.Id( - prefix = message.prefix, - characterSheetId = message.characterSheetId, - instanceId = message.instanceId, - ) - val alterations = alterationRepository.alterations( - characterInstanceId = characterInstanceId, - ) - val alteredSheet = alteredCharacterSheetFactory.sheet( - characterSheet = sheet, - alterations = alterations, - ) + + // We are talking about damage / consumption there so old value have to be put first. + val value = message.oldValue - message.newValue + CharacteristicTextMessageUio( id = "${message.timestamp}-$id-Characteristic", timestamp = formatTime.format(time), + label = when { + message.characteristic == Damage && value < 0 -> Res.string.chat__characteristic_change__hp_down + message.characteristic == Damage -> Res.string.chat__characteristic_change__hp_up + message.characteristic == Power && value < 0 -> Res.string.chat__characteristic_change__pp_down + else -> Res.string.chat__characteristic_change__pp_up + }, character = sheet.name, - value = when (message.characteristic) { - Damage -> alteredSheet.maxHp - message.value - Power -> alteredSheet.maxPp - message.value - }, - characteristic = when (message.characteristic) { - Damage -> getString(Res.string.chat__characteristic__hp) - Power -> getString(Res.string.chat__characteristic__pp) - }, + value = abs(value), ) } diff --git a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/text/messages/CharacteristicTextMessage.kt b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/text/messages/CharacteristicTextMessage.kt index 2c28c30..9e31927 100644 --- a/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/text/messages/CharacteristicTextMessage.kt +++ b/composeApp/src/commonMain/kotlin/com/pixelized/desktop/lwa/ui/screen/campaign/text/messages/CharacteristicTextMessage.kt @@ -11,17 +11,16 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import com.pixelized.desktop.lwa.ui.theme.lwa -import lwacharactersheet.composeapp.generated.resources.Res -import lwacharactersheet.composeapp.generated.resources.chat__characteristic_change +import org.jetbrains.compose.resources.StringResource import org.jetbrains.compose.resources.stringResource @Stable data class CharacteristicTextMessageUio( override val id: String, override val timestamp: String, + val label: StringResource, val character: String, val value: Int, - val characteristic: String, ) : TextMessage @Composable @@ -53,12 +52,7 @@ fun CharacteristicTextMessage( style = MaterialTheme.lwa.typography.chat.text, overflow = TextOverflow.Ellipsis, maxLines = 1, - text = stringResource( - Res.string.chat__characteristic_change, - message.character, - message.value, - message.characteristic, - ), + text = stringResource(message.label, message.character, message.value), ) } } \ No newline at end of file diff --git a/server/src/main/kotlin/com/pixelized/server/lwa/server/Engine.kt b/server/src/main/kotlin/com/pixelized/server/lwa/server/Engine.kt index 9bda4df..288ab43 100644 --- a/server/src/main/kotlin/com/pixelized/server/lwa/server/Engine.kt +++ b/server/src/main/kotlin/com/pixelized/server/lwa/server/Engine.kt @@ -37,7 +37,7 @@ class Engine( is CampaignMessage.UpdateCharacteristic -> campaignService.updateCharacteristic( characterInstanceId = instanceId, characteristic = campaignJsonFactory.convertFromJson(json = message.characteristic), - value = message.value, + value = message.newValue, ) is CampaignMessage.UpdateDiminished -> campaignService.updateDiminished( diff --git a/shared/src/commonMain/kotlin/com/pixelized/shared/lwa/protocol/websocket/CampaignMessage.kt b/shared/src/commonMain/kotlin/com/pixelized/shared/lwa/protocol/websocket/CampaignMessage.kt index f651f15..3648abe 100644 --- a/shared/src/commonMain/kotlin/com/pixelized/shared/lwa/protocol/websocket/CampaignMessage.kt +++ b/shared/src/commonMain/kotlin/com/pixelized/shared/lwa/protocol/websocket/CampaignMessage.kt @@ -16,7 +16,8 @@ sealed interface CampaignMessage : SocketMessage, CharacterInstanceIdMessage { override val characterSheetId: String, override val instanceId: Int, val characteristic: CampaignJsonV1.CharacterInstanceJsonV1.CharacteristicV1, - val value: Int, + val oldValue: Int, + val newValue: Int, ) : CampaignMessage @Serializable