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

import kotlinx.serialization.Serializable

@Serializable
data class CampaignJsonV2(
    val characters: Set<String>,
    val npcs: Set<String>,
    val map: MiniMapJson?,
    val scene: SceneJsonV2?,
    val options: OptionsJsonV2?,
) : CampaignJson {

    @Serializable
    data class MiniMapJson(
        val id: String,
        val camera: CameraJson?,
    ): CampaignJson.MiniMap {
        @Serializable
        data class CameraJson(
            val zoom: Float,
            val offsetX: Int,
            val offsetY: Int,
        )
    }

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

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