ReModel of the ActiveAlteration system into the Campaign.

This commit is contained in:
Thomas Andres Gomez 2025-03-21 18:06:03 +01:00
parent ecb0a6705f
commit b314a28f82
22 changed files with 254 additions and 317 deletions

View file

@ -6,8 +6,11 @@ data class Campaign(
val scene: Scene,
val options: Options,
) {
val instances = characters + npcs
data class CharacterInstance(
val characteristic: Map<Characteristic, Int>,
val alterations: List<String>,
val diminished: Int,
) {
data class Id(
@ -39,6 +42,7 @@ data class Campaign(
companion object {
fun empty() = CharacterInstance(
characteristic = emptyMap(),
alterations = emptyList(),
diminished = 0,
)
}

View file

@ -13,6 +13,7 @@ data class CampaignJsonV1(
@Serializable
data class CharacterInstanceJsonV1(
val characteristic: Map<CharacteristicV1, Int>,
val alterations: List<String>?,
val diminished: Int?,
) : CampaignJson.CharacterInstanceJson {
enum class CharacteristicV1 : CampaignJson.CharacterInstanceJson.CharacteristicJson {

View file

@ -79,6 +79,7 @@ class CampaignJsonFactory(
characteristic = data.characteristic
.map { char -> convertToJson(characteristic = char.key) to char.value }
.toMap(),
alterations = data.alterations,
diminished = data.diminished,
)
}

View file

@ -49,6 +49,7 @@ class CampaignJsonV1Factory {
characteristic = characterInstanceJson.characteristic
.mapKeys { convertFromV1(characteristicJson = it.key) }
.toMap(),
alterations = characterInstanceJson.alterations ?: emptyList(),
diminished = characterInstanceJson.diminished ?: 0,
)
}

View file

@ -28,4 +28,14 @@ sealed interface CampaignMessage : SocketMessage, CharacterInstanceIdMessage {
override val instanceId: Int,
val diminished: Int,
) : CampaignMessage
@Serializable
data class ToggleActiveAlteration(
override val timestamp: Long,
override val characterSheetId: String,
override val prefix: Char,
override val instanceId: Int,
val alterationId: String,
val active: Boolean,
) : CampaignMessage, CharacterInstanceIdMessage
}

View file

@ -1,13 +0,0 @@
package com.pixelized.shared.lwa.protocol.websocket
import kotlinx.serialization.Serializable
@Serializable
data class ToggleActiveAlteration(
override val timestamp: Long,
override val characterSheetId: String,
override val prefix: Char,
override val instanceId: Int,
val alterationId: String,
val active: Boolean,
) : SocketMessage, CharacterInstanceIdMessage