package fr.lyrgard.hexScape.server.listener; import com.google.common.eventbus.Subscribe; import fr.lyrgard.hexScape.bus.CoreMessageBus; import fr.lyrgard.hexScape.message.PieceMovedMessage; import fr.lyrgard.hexScape.message.PiecePlacedMessage; import fr.lyrgard.hexScape.message.PieceRemovedMessage; import fr.lyrgard.hexScape.message.PieceSelectedMessage; import fr.lyrgard.hexScape.message.PieceUnselectedMessage; import fr.lyrgard.hexScape.model.Universe; import fr.lyrgard.hexScape.model.card.CardInstance; import fr.lyrgard.hexScape.model.map.Direction; import fr.lyrgard.hexScape.model.piece.PieceInstance; import fr.lyrgard.hexScape.model.player.Player; import fr.lyrgard.hexScape.model.player.User; import fr.lyrgard.hexscape.server.network.ServerNetwork; public class PieceMessageListener { private static PieceMessageListener INSTANCE = new PieceMessageListener(); public static void start() { CoreMessageBus.register(INSTANCE); } private PieceMessageListener() { } @Subscribe public void onPiecePlaced(PiecePlacedMessage message) { String userId = message.getSessionUserId(); String cardId = message.getCardInstanceId(); String modelId = message.getModelId(); String pieceId = message.getPieceId(); Direction direction = message.getDirection(); int x = message.getX(); int y = message.getY(); int z = message.getZ(); User user = Universe.getInstance().getUsersByIds().get(userId); if (user.getGame() != null && user.getPlayer() != null) { for (Player owner : user.getGame().getPlayers()) { if (owner.getArmy() != null) { CardInstance card = owner.getArmy().getCard(cardId); if (card != null) { PieceInstance pieceInstance = new PieceInstance(pieceId, modelId, card); pieceInstance.setDirection(direction); pieceInstance.setX(x); pieceInstance.setY(y); pieceInstance.setZ(z); card.addPiece(pieceInstance); ServerNetwork.getInstance().sendMessageToGameExceptUser(message, user.getGameId(), user.getId()); return; } } } } } @Subscribe public void onPieceMoved(PieceMovedMessage message) { String userId = message.getSessionUserId(); String pieceId = message.getPieceId(); Direction direction = message.getDirection(); int x = message.getX(); int y = message.getY(); int z = message.getZ(); User user = Universe.getInstance().getUsersByIds().get(userId); if (user != null && user.getGame() != null && user.getPlayer() != null) { for (Player owner : user.getGame().getPlayers()) { if (owner.getArmy() != null) { for (CardInstance card : owner.getArmy().getCards()) { PieceInstance piece = card.getPiece(pieceId); if (piece != null) { piece.setDirection(direction); piece.setX(x); piece.setY(y); piece.setZ(z); ServerNetwork.getInstance().sendMessageToGameExceptUser(message, user.getGameId(), user.getId()); return; } } } } } } @Subscribe public void onPieceRemoved(PieceRemovedMessage message) { String userId = message.getSessionUserId(); String pieceId = message.getPieceId(); User user = Universe.getInstance().getUsersByIds().get(userId); if (user != null && user.getGame() != null && user.getPlayer() != null) { for (Player owner : user.getGame().getPlayers()) { if (owner.getArmy() != null) { for (CardInstance card : owner.getArmy().getCards()) { PieceInstance piece = card.getPiece(pieceId); if (piece != null) { card.getPieces().remove(piece); card.getPieceLeftToPlace().add(piece.getModelId()); ServerNetwork.getInstance().sendMessageToGameExceptUser(message, user.getGameId(), user.getId()); return; } } } } } } @Subscribe public void onPieceSelected(PieceSelectedMessage message) { String userId = message.getSessionUserId(); User user = Universe.getInstance().getUsersByIds().get(userId); if (user != null && user.getGame() != null && user.getPlayer() != null) { ServerNetwork.getInstance().sendMessageToGameExceptUser(message, user.getGameId(), user.getId()); } } @Subscribe public void onPieceUnselected(PieceUnselectedMessage message) { String userId = message.getSessionUserId(); User user = Universe.getInstance().getUsersByIds().get(userId); if (user != null && user.getGame() != null && user.getPlayer() != null) { ServerNetwork.getInstance().sendMessageToGameExceptUser(message, user.getGameId(), user.getId()); } } }