package com.esir.sr.sweetsnake.factory;
import java.util.LinkedList;
import java.util.List;
import com.esir.sr.sweetsnake.api.IComponent;
import com.esir.sr.sweetsnake.dto.ComponentDTO;
import com.esir.sr.sweetsnake.dto.GameBoardDTO;
import com.esir.sr.sweetsnake.dto.GameBoardRefreshDTO;
import com.esir.sr.sweetsnake.dto.GameRequestDTO;
import com.esir.sr.sweetsnake.dto.GameSessionDTO;
import com.esir.sr.sweetsnake.dto.PlayerDTO;
import com.esir.sr.sweetsnake.game.board.GameBoard;
import com.esir.sr.sweetsnake.game.board.GameBoardRefresh;
import com.esir.sr.sweetsnake.session.GameRequest;
import com.esir.sr.sweetsnake.session.GameSession;
import com.esir.sr.sweetsnake.session.Player;
/**
*
* @author Herminaƫl Rougier
* @author Damien Jouanno
*
*/
public class DtoConverterFactory
{
/**********************************************************************************************
* [BLOCK] PUBLIC METHODS
**********************************************************************************************/
/**
*
* @param request
* @return
*/
public static GameRequestDTO convertGameRequest(final GameRequest request) {
return new GameRequestDTO(request.getId(), request.getSessionid(), convertPlayer(request.getRequestingPlayer()), convertPlayer(request.getRequestedPlayer()));
}
/**
*
* @param session
* @return
*/
public static GameSessionDTO convertGameSession(final GameSession session) {
if (session.getGameEngine() == null) {
return new GameSessionDTO(session.getId(), convertPlayers(session.getPlayers()), null, session.getCallback(), session.allReady(), session.isStarted());
}
return new GameSessionDTO(session.getId(), convertPlayers(session.getPlayers()), convertGameBoard(session.getGameEngine().getGameBoard()), session.getCallback(), session.allReady(), session.isStarted());
}
/**
*
* @param player
* @return
*/
public static PlayerDTO convertPlayer(final Player player) {
return new PlayerDTO(player.getName(), player.getStatus(), player.getSnakeId(), player.getNumber(), player.getScore(), player.isFictive());
}
/**
*
* @param players
* @return
*/
public static List<PlayerDTO> convertPlayers(final List<Player> players) {
final List<PlayerDTO> playersDto = new LinkedList<PlayerDTO>();
for (final Player player : players) {
playersDto.add(convertPlayer(player));
}
return playersDto;
}
/**
*
* @param gameBoard
* @return
*/
public static GameBoardDTO convertGameBoard(final GameBoard gameBoard) {
return new GameBoardDTO(gameBoard.getWidth(), gameBoard.getHeight(), gameBoard.getNbSweets(), convertGameBoardRefreshes(gameBoard.getRefreshes()));
}
/**
*
* @param refreshes
* @return
*/
public static List<GameBoardRefreshDTO> convertGameBoardRefreshes(final List<GameBoardRefresh> refreshes) {
final List<GameBoardRefreshDTO> refreshesDto = new LinkedList<GameBoardRefreshDTO>();
for (final GameBoardRefresh refresh : refreshes) {
final ComponentDTO componentDto = convertComponent(refresh.getComponent());
refreshesDto.add(new GameBoardRefreshDTO(componentDto, refresh.getAction()));
}
return refreshesDto;
}
/**
*
* @param component
* @return
*/
public static ComponentDTO convertComponent(final IComponent component) {
return new ComponentDTO(component.getId(), component.getXPos(), component.getYPos(), component.getType());
}
}