package com.rzg.zombieland.server.comunicacion.controlador; import com.google.gson.Gson; import com.rzg.zombieland.comunes.comunicacion.respuesta.RespuestaGenerica; import com.rzg.zombieland.comunes.comunicacion.respuesta.RespuestaUnirsePartida; import com.rzg.zombieland.comunes.misc.Log; import com.rzg.zombieland.comunes.misc.ZombielandException; import com.rzg.zombieland.server.meta.Partida; import com.rzg.zombieland.server.meta.ServicioPartidas; import com.rzg.zombieland.server.sesion.ManejadorSesion; /** * Maneja unirse a una partida r�pidamente. * @author nicolas * */ public class ControladorUnirseRapido extends ControladorConSesion { private static final String MENSAJE_SIN_PARTIDAS = "No hay partidas para unirse r�pidamente."; /** * Crea un controlador de unirse r�pidamente a partida. * @param manejadorSesion * @throws ZombielandException */ public ControladorUnirseRapido(ManejadorSesion manejadorSesion) { super(manejadorSesion); } @Override public String procesarAutenticado(String linea) { Gson gson = new Gson(); Partida partida = ServicioPartidas.getInstancia().getPartidaAleatoria(); if (partida == null) return gson.toJson(new RespuestaGenerica(MENSAJE_SIN_PARTIDAS)); try { partida.addJugador(getSesion().getJugador()); getSesion().setPartida(partida); } catch (ZombielandException e) { return gson.toJson(new RespuestaGenerica(e.getMessage())); } Log.debug("El jugador " + getSesion().getJugador().getNombre() + " se ha unido a una partida."); return gson.toJson(new RespuestaUnirsePartida(partida.getPOJO(getSesion().getJugador()))); } }