Add GM & NPC (UI) support. Change the Id system.

This commit is contained in:
Thomas Andres Gomez 2025-03-15 17:49:12 +01:00
parent 6b86a6c075
commit 27dba5438e
54 changed files with 816 additions and 426 deletions

View file

@ -10,9 +10,25 @@ data class Campaign(
val diminished: Int,
) {
data class Id(
val prefix: Char,
val characterSheetId: String,
val instanceId: Int,
)
) {
fun equals(
prefix: Char,
characterSheetId: String?,
instanceId: Int?,
): Boolean {
return this.prefix == prefix &&
this.characterSheetId == characterSheetId &&
this.instanceId == instanceId
}
companion object {
const val PLAYER = 'c'
const val NPC = 'n'
}
}
enum class Characteristic {
Damage,

View file

@ -65,7 +65,7 @@ class CampaignJsonFactory(
fun convertToJson(
id: Campaign.CharacterInstance.Id,
): String {
return "${String.format("%03d", id.instanceId)}-${id.characterSheetId}"
return "${id.prefix}-${String.format("%03d", id.instanceId)}-${id.characterSheetId}"
}
fun convertToJson(

View file

@ -33,8 +33,9 @@ class CampaignJsonV1Factory {
characterInstanceIdJson: String,
): Campaign.CharacterInstance.Id {
return Campaign.CharacterInstance.Id(
characterSheetId = characterInstanceIdJson.drop(4), // drop first 3 number then the -
instanceId = characterInstanceIdJson.take(3).toIntOrNull() ?: 0,
prefix = characterInstanceIdJson.take(1)[0],
characterSheetId = characterInstanceIdJson.drop(2 + 4), // drop the char then the - then the first 3 number then the -
instanceId = characterInstanceIdJson.drop(2).take(3).toIntOrNull() ?: 0,
)
}

View file

@ -5,11 +5,13 @@ import kotlinx.serialization.Serializable
@Serializable
sealed interface CampaignMessage : MessagePayload {
val prefix: Char
val characterSheetId: String
val instanceId: Int
@Serializable
data class UpdateCharacteristic(
override val prefix: Char,
override val characterSheetId: String,
override val instanceId: Int,
val characteristic: CampaignJsonV1.CharacterInstanceJsonV1.CharacteristicV1,
@ -18,6 +20,7 @@ sealed interface CampaignMessage : MessagePayload {
@Serializable
data class UpdateDiminished(
override val prefix: Char,
override val characterSheetId: String,
override val instanceId: Int,
val diminished: Int,

View file

@ -6,7 +6,9 @@ import java.util.UUID
@Serializable
data class RollMessage(
val id: RollId,
val prefix: Char,
val characterSheetId: String,
val instanceId: Int?,
val skillLabel: String,
val rollValue: Int,
val resultLabel: String? = null,