////////////////////////////////////////
// Programming project code
// UniBw M, 2022, 2023, 2024
// www.unibw.de/inf2
// (c) Mark Minas (mark.minas@unibw.de)
////////////////////////////////////////

package pp.battleship.notification;

/**
 * Listener interface for all events implemented by subclasses of {@linkplain pp.battleship.notification.GameEvent}.
 */
public interface GameEventListener {
    /**
     * Indicates that an item has been destroyed
     *
     * @param event the received event
     */
    default void receivedEvent(ItemRemovedEvent event) { /* do nothing */ }

    /**
     * Indicates that an item has been added to a map.
     *
     * @param event the received event
     */
    default void receivedEvent(ItemAddedEvent event) { /* do nothing */ }

    /**
     * Indicates that an info text shall be shown.
     *
     * @param event the received event
     */
    default void receivedEvent(InfoTextEvent event) { /* do nothing */ }

    /**
     * Indicates that a sound shall be played.
     *
     * @param event the received event
     */
    default void receivedEvent(SoundEvent event) { /* do nothing */ }

    /**
     * Indicates that the client's state has changed.
     *
     * @param event the received event
     */
    default void receivedEvent(ClientStateEvent event) { /* do nothing */ }
}
