package fr.lyrgard.hexScape.message.json; import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonTypeInfo; import com.fasterxml.jackson.annotation.JsonSubTypes.Type; import fr.lyrgard.hexScape.message.ConnectedToServerMessage; import fr.lyrgard.hexScape.message.ArmyLoadedMessage; import fr.lyrgard.hexScape.message.CreateGameMessage; import fr.lyrgard.hexScape.message.DiceThrownMessage; import fr.lyrgard.hexScape.message.DisconnectedFromServerMessage; import fr.lyrgard.hexScape.message.ErrorMessage; import fr.lyrgard.hexScape.message.GameCreatedMessage; import fr.lyrgard.hexScape.message.GameEndedMessage; import fr.lyrgard.hexScape.message.GameJoinedMessage; import fr.lyrgard.hexScape.message.GameLeftMessage; import fr.lyrgard.hexScape.message.GameMessagePostedMessage; import fr.lyrgard.hexScape.message.GameObservedMessage; import fr.lyrgard.hexScape.message.GameStartedMessage; import fr.lyrgard.hexScape.message.HeartBeatMessage; import fr.lyrgard.hexScape.message.InfoMessage; import fr.lyrgard.hexScape.message.JoinGameMessage; import fr.lyrgard.hexScape.message.JoinRoomMessage; import fr.lyrgard.hexScape.message.LeaveGameMessage; import fr.lyrgard.hexScape.message.LeaveRoomMessage; import fr.lyrgard.hexScape.message.MarkerPlacedMessage; import fr.lyrgard.hexScape.message.MarkerRemovedMessage; import fr.lyrgard.hexScape.message.MarkerRevealedMessage; import fr.lyrgard.hexScape.message.ObserveGameMessage; import fr.lyrgard.hexScape.message.PostGameMessageMessage; import fr.lyrgard.hexScape.message.RestoreGameMessage; import fr.lyrgard.hexScape.message.RoomMessagePostedMessage; import fr.lyrgard.hexScape.message.PieceMovedMessage; import fr.lyrgard.hexScape.message.PiecePlacedMessage; import fr.lyrgard.hexScape.message.PieceRemovedMessage; import fr.lyrgard.hexScape.message.PieceSelectedMessage; import fr.lyrgard.hexScape.message.PieceUnselectedMessage; import fr.lyrgard.hexScape.message.PlaceMarkerMessage; import fr.lyrgard.hexScape.message.UserJoinedRoomMessage; import fr.lyrgard.hexScape.message.PostRoomMessageMessage; import fr.lyrgard.hexScape.message.RemoveMarkerMessage; import fr.lyrgard.hexScape.message.RevealMarkerMessage; import fr.lyrgard.hexScape.message.RoomJoinedMessage; import fr.lyrgard.hexScape.message.RoomLeftMessage; import fr.lyrgard.hexScape.message.StartGameMessage; import fr.lyrgard.hexScape.message.ThrowDiceMessage; import fr.lyrgard.hexScape.message.UserIdAllocatedMessage; import fr.lyrgard.hexScape.message.UserInformationMessage; import fr.lyrgard.hexScape.message.WarningMessage; @JsonTypeInfo( use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type") @JsonSubTypes({ @Type(value = ArmyLoadedMessage.class, name = "ArmyLoadedMessage"), @Type(value = ConnectedToServerMessage.class, name = "ConnectedToServerMessage"), @Type(value = CreateGameMessage.class, name = "CreateGameMessage"), @Type(value = ErrorMessage.class, name = "ErrorMessage"), @Type(value = DiceThrownMessage.class, name = "DiceThrownMessage"), @Type(value = DisconnectedFromServerMessage.class, name = "DisconnectedFromServerMessage"), @Type(value = GameCreatedMessage.class, name = "GameCreatedMessage"), @Type(value = GameEndedMessage.class, name = "GameEndedMessage"), @Type(value = GameJoinedMessage.class, name = "GameJoinedMessage"), @Type(value = GameLeftMessage.class, name = "GameLeftMessage"), @Type(value = GameMessagePostedMessage.class, name = "GameMessagePostedMessage"), @Type(value = GameObservedMessage.class, name = "GameObservedMessage"), @Type(value = GameStartedMessage.class, name = "GameStartedMessage"), @Type(value = HeartBeatMessage.class, name = "HeartBeatMessage"), @Type(value = InfoMessage.class, name = "InfoMessage"), @Type(value = JoinGameMessage.class, name = "JoinGameMessage"), @Type(value = JoinRoomMessage.class, name = "JoinRoomMessage"), @Type(value = LeaveGameMessage.class, name = "LeaveGameMessage"), @Type(value = LeaveRoomMessage.class, name = "LeaveRoomMessage"), @Type(value = MarkerPlacedMessage.class, name = "MarkerPlacedMessage"), @Type(value = MarkerRemovedMessage.class, name = "MarkerRemovedMessage"), @Type(value = MarkerRevealedMessage.class, name = "MarkerRevealedMessage"), @Type(value = RestoreGameMessage.class, name = "RestoreGameMessage"), @Type(value = RoomMessagePostedMessage.class, name = "MessagePostedMessage"), @Type(value = PlaceMarkerMessage.class, name = "PlaceMarkerMessage"), @Type(value = UserJoinedRoomMessage.class, name = "PlayerJoinedRoomMessage"), @Type(value = ObserveGameMessage.class, name = "ObserveGameMessage"), @Type(value = PieceMovedMessage.class, name = "PieceMovedMessage"), @Type(value = PiecePlacedMessage.class, name = "PiecePlacedMessage"), @Type(value = PieceRemovedMessage.class, name = "PieceRemovedMessage"), @Type(value = PieceSelectedMessage.class, name = "PieceSelectedMessage"), @Type(value = PieceUnselectedMessage.class, name = "PieceUnselectedMessage"), @Type(value = PostGameMessageMessage.class, name = "PostGameMessageMessage"), @Type(value = PostRoomMessageMessage.class, name = "PostMessageMessage"), @Type(value = RemoveMarkerMessage.class, name = "RemoveMarkerMessage"), @Type(value = RevealMarkerMessage.class, name = "RevealMarkerMessage"), @Type(value = RoomJoinedMessage.class, name = "RoomJoinedMessage"), @Type(value = RoomLeftMessage.class, name = "RoomLeftMessage"), @Type(value = StartGameMessage.class, name = "StartGameMessage"), @Type(value = ThrowDiceMessage.class, name = "ThrowDiceMessage"), @Type(value = UserIdAllocatedMessage.class, name = "UserIdAllocatedMessage"), @Type(value = UserInformationMessage.class, name = "UserInformationMessage"), @Type(value = WarningMessage.class, name = "WarningMessage") }) public interface PolymorphicMessageMixIn { }