/**
* This method gets a message from the server and performs an appropriate action
*/
private void getMessage() {
Message message = null;
try {
message = (Message) input.readObject();
} catch (ClassNotFoundException e) {
e.printStackTrace();
System.exit(1);
} catch (IOException e) {
Debugger.printLine("Error receiving message");
if (!this.isInterrupted()) {
onServerDisconnect();
}
return;
}
Debugger.printLine(message.getMessageType().name() + " message received" + " time "
+ System.currentTimeMillis());
if (message.getMessageType() == Message.Type.POSITIONS) {
this.eventsHandler.objectPositionsReceivedEvent((Position[]) message.getContent());
sendMovementInformation();
} else if (message.getMessageType() == Message.Type.MATCH_BEGINS) {
final Integer roundsNumber = (Integer) message.getContent();
this.eventsHandler.matchBeginsEvent(roundsNumber);
} else if (message.getMessageType() == Message.Type.ROUND_BEGINS) {
this.eventsHandler.roundBeginsEvent();
} else if (message.getMessageType() == Message.Type.ROUND_END) {
final Boolean won = (Boolean) message.getContent();
this.eventsHandler.roundEndEvent(won);
} else if (message.getMessageType() == Message.Type.OTHER_DISCONNECTED) {
this.eventsHandler.otherDisconnectedWhilePlayingEvent();
} else if (message.getMessageType() == Message.Type.YOUR_PLAYER_INDEX) {
final Integer playerIndex = (Integer) message.getContent();
this.eventsHandler.playerIndexReceivedEvent(playerIndex);
}
assert message.getMessageType() == Message.Type.ARE_YOU_ALIVE;
}