package com.flexpoker.table.command.framework; import java.util.UUID; import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonTypeInfo; import com.flexpoker.framework.event.Event; import com.flexpoker.table.command.events.ActionOnChangedEvent; import com.flexpoker.table.command.events.CardsShuffledEvent; import com.flexpoker.table.command.events.FlopCardsDealtEvent; import com.flexpoker.table.command.events.HandCompletedEvent; import com.flexpoker.table.command.events.HandDealtEvent; import com.flexpoker.table.command.events.LastToActChangedEvent; import com.flexpoker.table.command.events.PlayerBustedTableEvent; import com.flexpoker.table.command.events.PlayerCalledEvent; import com.flexpoker.table.command.events.PlayerCheckedEvent; import com.flexpoker.table.command.events.PlayerFoldedEvent; import com.flexpoker.table.command.events.PlayerForceCheckedEvent; import com.flexpoker.table.command.events.PlayerForceFoldedEvent; import com.flexpoker.table.command.events.PlayerRaisedEvent; import com.flexpoker.table.command.events.PotAmountIncreasedEvent; import com.flexpoker.table.command.events.PotClosedEvent; import com.flexpoker.table.command.events.PotCreatedEvent; import com.flexpoker.table.command.events.RiverCardDealtEvent; import com.flexpoker.table.command.events.RoundCompletedEvent; import com.flexpoker.table.command.events.TableCreatedEvent; import com.flexpoker.table.command.events.TurnCardDealtEvent; import com.flexpoker.table.command.events.WinnersDeterminedEvent; @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type") @JsonSubTypes({ @JsonSubTypes.Type(value = ActionOnChangedEvent.class, name = "ActionOnChanged"), @JsonSubTypes.Type(value = CardsShuffledEvent.class, name = "CardsShuffled"), @JsonSubTypes.Type(value = FlopCardsDealtEvent.class, name = "FlopCardsDealt"), @JsonSubTypes.Type(value = HandCompletedEvent.class, name = "HandCompleted"), @JsonSubTypes.Type(value = HandDealtEvent.class, name = "HandDealt"), @JsonSubTypes.Type(value = LastToActChangedEvent.class, name = "LastToActChanged"), @JsonSubTypes.Type(value = PlayerBustedTableEvent.class, name = "PlayerBustedTableEvent"), @JsonSubTypes.Type(value = PlayerCalledEvent.class, name = "PlayerCalled"), @JsonSubTypes.Type(value = PlayerCheckedEvent.class, name = "PlayerChecked"), @JsonSubTypes.Type(value = PlayerForceCheckedEvent.class, name = "PlayerForceChecked"), @JsonSubTypes.Type(value = PlayerFoldedEvent.class, name = "PlayerFolded"), @JsonSubTypes.Type(value = PlayerForceFoldedEvent.class, name = "PlayerForceFolded"), @JsonSubTypes.Type(value = PlayerRaisedEvent.class, name = "PlayerRaised"), @JsonSubTypes.Type(value = PotAmountIncreasedEvent.class, name = "PotAmountIncreased"), @JsonSubTypes.Type(value = PotClosedEvent.class, name = "PotClosed"), @JsonSubTypes.Type(value = PotCreatedEvent.class, name = "PotCreated"), @JsonSubTypes.Type(value = RiverCardDealtEvent.class, name = "RiverCardDealt"), @JsonSubTypes.Type(value = RoundCompletedEvent.class, name = "RoundCompleted"), @JsonSubTypes.Type(value = TableCreatedEvent.class, name = "TableCreated"), @JsonSubTypes.Type(value = TurnCardDealtEvent.class, name = "TurnCardDealt"), @JsonSubTypes.Type(value = WinnersDeterminedEvent.class, name = "WinnersDetermined") }) public interface TableEvent extends Event { UUID getGameId(); }