package com.esir.sr.sweetsnake.api;
import java.util.List;
import com.esir.sr.sweetsnake.dto.GameBoardDTO;
import com.esir.sr.sweetsnake.dto.GameRequestDTO;
import com.esir.sr.sweetsnake.dto.GameSessionDTO;
import com.esir.sr.sweetsnake.dto.PlayerDTO;
/**
*
* This interface represents which methods a Graphic User Interface for the game must be able to provide.<br />
* All the methods below are intented to be called by the client according to the events it processed.
*
* @author Herminaƫl Rougier
* @author Damien Jouanno
*
*/
public interface IGuiForClient
{
/**
*
*/
void serverReachable();
/**
*
*/
void serverNotReachable();
/**
*
*/
void connectedToServer();
/**
*
*/
void disconnectedFromServer();
/**
*
* @param playersList
*/
void refreshPlayersList(List<PlayerDTO> playersList);
/**
*
* @param sessionsList
*/
void refreshSessionsList(List<GameSessionDTO> sessionsList);
/**
*
* @param request
*/
void requestSent(GameRequestDTO request);
/**
*
* @param request
* @return
*/
int requestReceived(GameRequestDTO request);
/**
*
* @param request
*/
void requestDenied(GameRequestDTO request);
/**
*
* @param session
* @param playerNb
*/
void sessionJoined(GameSessionDTO session, int playerNb); // TODO remove other parameters
/**
*
* @param session
* @param playerNb
*/
void sessionStarted(GameSessionDTO session, int playerNb);
/**
*
* @param session
* @param leaver
* @param stopped
* @param finished
*/
void sessionLeft(GameSessionDTO session, PlayerDTO leaver, boolean stopped, boolean finished);
/**
*
* @param session
*/
void sessionFinished(GameSessionDTO session);
/**
*
* @param gameBoard
*/
void refreshGameboard(GameBoardDTO gameBoard);
/**
*
* @param players
*/
void refreshScores(List<PlayerDTO> players);
/**
*
* @param message
*/
void displayErrorMessage(String message);
}