package com.pixelized.shared.lwa.model.campaign

import kotlinx.serialization.Serializable

@Serializable
data class CampaignJsonV1(
    val characters: Map<String, CharacterInstanceJsonV1>,
    val npcs: Map<String, CharacterInstanceJsonV1>,
    val scene: SceneJsonV1?,
    val options: OptionsJsonV1?,
) : CampaignJson {

    @Serializable
    data class CharacterInstanceJsonV1(
        val characteristic: Map<CharacteristicV1, Int>,
        val alterations: List<String>?,
        val diminished: Int?,
    ) : CampaignJson.CharacterInstanceJson {
        enum class CharacteristicV1 : CampaignJson.CharacterInstanceJson.CharacteristicJson {
            Damage,
            Power,
        }
    }

    @Serializable
    data class SceneJsonV1(
        val name: String,
    ) : CampaignJson.SceneJson

    @Serializable
    data class OptionsJsonV1(
        val showPlayer: Boolean,
        val showNpcs: Boolean,
    ) : CampaignJson.OptionJson
}
