package com.pixelized.shared.lwa.protocol.websocket

import kotlinx.serialization.Serializable

@Serializable
sealed interface CampaignEvent : SocketMessage {

    // TODO Will probably be moved when the scene become more complex, (should already actually)
    @Serializable
    data class UpdateScene(
        override val timestamp: Long,
        val name: String,
    ) : CampaignEvent

    @Serializable
    data class CharacterRemoved(
        override val timestamp: Long,
        override val characterSheetId: String,
    ) : CampaignEvent, CharacterSheetIdMessage

    @Serializable
    data class CharacterAdded(
        override val timestamp: Long,
        override val characterSheetId: String,
    ) : CampaignEvent, CharacterSheetIdMessage

    @Serializable
    data class NpcRemoved(
        override val timestamp: Long,
        override val characterSheetId: String,
    ) : CampaignEvent, CharacterSheetIdMessage

    @Serializable
    data class NpcAdded(
        override val timestamp: Long,
        override val characterSheetId: String,
    ) : CampaignEvent, CharacterSheetIdMessage
}