package com.rzg.zombieland.server.juego;
import com.rzg.zombieland.comunes.misc.Avatar;
import com.rzg.zombieland.comunes.misc.Coordenada;
import com.rzg.zombieland.server.sesion.Jugador;
/**
* Personaje cuyo �nico deseo en el mundo es comer cerebros. RAWR!
*
* @author nicolas
*
*/
public class Zombie extends Personaje {
// TODO definir sprite.
private final String SPRITE = "zombie.jpg";
public Zombie(Jugador jugador, Coordenada posicion, Tablero tablero) {
super(jugador, posicion, tablero);
}
@Override
public void colisionar(EntidadTablero entidad) {
if (entidad.esPersonaje()) {
Personaje personaje = (Personaje)entidad;
if (!personaje.esZombie()) {
// Cambio al humano por un nuevo zombie.
Coordenada posicion = entidad.getPosicion();
Zombie zombie = new Zombie(personaje.getJugador(), posicion, getTablero());
getTablero().remplazarEntidadEn(posicion, zombie);
getTablero().addPersonajeConvertido(zombie);
}
}
}
public boolean esPersonaje() {
return true;
}
@Override
public boolean esZombie() {
return true;
}
@Override
public Coordenada[] getRectanguloVision() {
return new Coordenada[] { new Coordenada(0, 0), getTablero().getEsquinaInferiorDerecha() };
}
/* (non-Javadoc)
* @see java.lang.Object#hashCode()
*/
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((SPRITE == null) ? 0 : SPRITE.hashCode());
return result;
}
@Override
public Avatar getAvatar() {
return Avatar.ZOMBIE;
}
}