Change the damage text message message.

This commit is contained in:
Thomas Andres Gomez 2025-03-19 19:13:15 +01:00
parent 4c37d8b937
commit 49723892fc
7 changed files with 38 additions and 41 deletions

View file

@ -185,9 +185,10 @@
<string name="roll_history__item__difficulty">Difficulté</string>
<string name="chat__diminished_change">%1$s passe à %2$d d'état diminuée</string>
<string name="chat__characteristic_change">%1$s passe à %2$d %3$s</string>
<string name="chat__characteristic__hp">Hp</string>
<string name="chat__characteristic__pp">Pp</string>
<string name="chat__characteristic_change__hp_down">%1$s subit %2$d point(s) de dommage</string>
<string name="chat__characteristic_change__hp_up">%1$s récupère %2$d point(s) de vie</string>
<string name="chat__characteristic_change__pp_down">%1$s utilise %2$d point(s) de pouvoir</string>
<string name="chat__characteristic_change__pp_up">%1$s récupère %2$d point(s) de pouvoir</string>
<string name="settings__title">Paramètres de l'application</string>
<string name="settings__reset_action">Paramètres par défault</string>

View file

@ -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(

View file

@ -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
},

View file

@ -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),
)
}

View file

@ -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),
)
}
}

View file

@ -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(

View file

@ -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