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.misc.Log;
import com.rzg.zombieland.comunes.misc.Movimiento;
import com.rzg.zombieland.comunes.misc.Movimiento.Direccion;
import com.rzg.zombieland.comunes.misc.ZombielandException;
import com.rzg.zombieland.server.juego.Personaje;
import com.rzg.zombieland.server.sesion.ManejadorSesion;
/**
* Maneja mover a un personaje.
* @author nicolas
*
*/
public class ControladorMovimiento extends ControladorConSesion {
private static final String MENSAJE_SIN_PARTIDA = "No hay una partida en progreso";
/**
* Crea un controlador de mover al personaje.
* @param manejadorSesion
* @throws ZombielandException
*/
public ControladorMovimiento(ManejadorSesion manejadorSesion) {
super(manejadorSesion);
}
@Override
public String procesarAutenticado(String linea) {
Gson gson = new Gson();
Personaje personaje = getSesion().getPersonaje();
if (personaje == null)
return gson.toJson(new RespuestaGenerica(MENSAJE_SIN_PARTIDA));
Direccion direccion = gson.fromJson(linea, Direccion.class);
personaje.setSiguienteMovimiento(new Movimiento(direccion));
Log.debug("El jugador " + getSesion().getJugador().getNombre() + " se ha movido en "
+ "direcci�n " + direccion.name() + ".");
return gson.toJson(new RespuestaGenerica());
}
}