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

package pp.battleship.game.client;

import pp.battleship.game.singlemode.BattleshipClientConfig;

/**
 * Interface representing a Battleship client.
 * Provides methods to access game logic, configuration, and to enqueue tasks.
 */
public interface BattleshipClient {

    /**
     * Returns the game logic associated with this client.
     *
     * @return the ClientGameLogic instance
     */
    ClientGameLogic getGameLogic();

    /**
     * Returns the configuration associated with this client.
     *
     * @return the BattleshipConfig instance
     */
    BattleshipClientConfig getConfig();

    /**
     * Enqueues a task to be executed by the client.
     *
     * @param runnable the task to be executed
     */
    void enqueue(Runnable runnable);
}
