package com.esir.sr.sweetsnake.session; import java.rmi.RemoteException; import java.util.Collections; import java.util.LinkedList; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import com.esir.sr.sweetsnake.api.IClientCallback; import com.esir.sr.sweetsnake.enumeration.PlayerStatus; /** * * @author Herminaƫl Rougier * @author Damien Jouanno * */ @Component @Scope("prototype") public class Player { /********************************************************************************************** * [BLOCK] STATIC FIELDS **********************************************************************************************/ /** The logger */ private static final Logger log = LoggerFactory.getLogger(Player.class); /********************************************************************************************** * [BLOCK] FIELDS **********************************************************************************************/ /** The client callback */ private IClientCallback callback; /** The player name */ private String name; /** The player status */ private PlayerStatus status; /** The sent requests */ private List<String> sentRequestsIds; /** The received request id (only one at a time) */ private String receivedRequestId; /** The current game session id (only one at a time) */ private String gameSessionId; /** The current game player's number */ private int number; /** The current game player's snake id */ private String snakeId; /** The current game player's score */ private int score; /** Is the player a fictive one */ private boolean fictive; /********************************************************************************************** * [BLOCK] CONSTRUCTOR **********************************************************************************************/ /** * * @param _client */ protected Player(final IClientCallback _client) { callback = _client; sentRequestsIds = new LinkedList<String>(); try { name = callback.getName(); } catch (final RemoteException e) { log.error(e.getMessage(), e); } status = PlayerStatus.AVAILABLE; } /** * fictive player * * @param _name */ protected Player(final String _name) { name = _name; fictive = true; } /********************************************************************************************** * [BLOCK] PUBLIC METHODS **********************************************************************************************/ /** * * @param sentRequestId */ public void addSentRequestId(final String sentRequestId) { sentRequestsIds.add(sentRequestId); } /** * * @param sentRequestId */ public void removeSentRequestId(final String sentRequestId) { sentRequestsIds.remove(sentRequestId); } /* * (non-Javadoc) * * @see java.lang.Object#toString() */ @Override public String toString() { return name + "[status=" + status + "]"; } /********************************************************************************************** * [BLOCK] GETTERS **********************************************************************************************/ /** * * @return */ public IClientCallback getCallback() { return callback; } /** * * @return */ public String getName() { return name; } /** * * @return */ public PlayerStatus getStatus() { return status; } /** * * @return */ public List<String> getSentRequestsIds() { return Collections.unmodifiableList(sentRequestsIds); } /** * * @return */ public String getReceivedRequestId() { return receivedRequestId; } /** * * @return */ public String getGameSessionId() { return gameSessionId; } /** * * @return */ public int getNumber() { return number; } /** * * @return */ public String getSnakeId() { return snakeId; } /** * * @return */ public int getScore() { return score; } /** * * @return */ public boolean isFictive() { return fictive; } /********************************************************************************************** * [BLOCK] SETTERS **********************************************************************************************/ /** * * @param _status */ public void setStatus(final PlayerStatus _status) { status = _status; } /** * * @param _receivedRequestId */ public void setReceivedRequestId(final String _receivedRequestId) { receivedRequestId = _receivedRequestId; } /** * * @param _gameSession */ public void setGameSessionId(final String _gameSessionId) { gameSessionId = _gameSessionId; } /** * * @param _number */ public void setNumber(final int _number) { number = _number; } /** * * @param _snakeId * @return */ public void setSnakeId(final String _snakeId) { snakeId = _snakeId; } /** * * @param _score */ public void setScore(final int _score) { score = _score; } }