/*
* To change this template, choose Tools | Templates and open the template in
* the editor.
*/
package com.wordpress.salaboy.emergencyservice.worldui.slick;
import com.wordpress.salaboy.emergencyservice.worldui.slick.graphicable.GraphicableEmergency;
import com.wordpress.salaboy.model.Emergency;
import java.io.IOException;
import java.util.Map.Entry;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.Input;
/**
*
* @author esteban
*/
public class GlobalEmergenciesRenderer implements EmergencyRenderer {
private final WorldUI ui;
public GlobalEmergenciesRenderer(WorldUI ui) {
this.ui = ui;
}
/**
* Renders all the emergencies
* @param ui
*/
@Override
public void renderPolygon(GameContainer gc, Graphics g) {
for (GraphicableEmergency renderEmergency : ui.getEmergencies().values()) {
g.draw(renderEmergency.getPolygon());
}
}
@Override
public void renderAnimation(GameContainer gc, Graphics g) {
for (GraphicableEmergency renderEmergency : ui.getEmergencies().values()) {
g.drawAnimation(renderEmergency.getAnimation(), renderEmergency.getPolygon().getX(), renderEmergency.getPolygon().getY());
}
}
@Override
public void onKeyPressed(int code, char key) {
try {
if (Input.KEY_SPACE == code) {
this.ui.addRandomGenericEmergency();
} else if (Input.KEY_ENTER == code) {
this.ui.addRandomEmergency(Emergency.EmergencyType.FIRE, 10);
} else if (Input.KEY_V == code) {
this.ui.addXYEmergency(2,1);
this.ui.addXYEmergency(2,2);
}else if (Input.KEY_ESCAPE == code) {
this.ui.goToGlobalMap();
}
} catch (IOException ex) {
Logger.getLogger(GlobalEmergenciesRenderer.class.getName()).log(Level.SEVERE, null, ex);
}
}
@Override
public void onKeyReleased(int code, char key) {
}
@Override
public void onClick(int button, int x, int y, int count) {
if (Input.MOUSE_LEFT_BUTTON == button) {
for (Entry<String, GraphicableEmergency> entry : ui.getEmergencies().entrySet()) {
if (entry.getValue().getPolygon().contains(x, y)) {
this.ui.emergencyClicked(entry.getKey());
//assumes that a single click only collides with only one emergency
return;
}
}
}
}
@Override
public void update(GameContainer gc, int delta) {
}
@Override
public void renderHighlightsAnimation(GameContainer gc, Graphics g) {
// DO NOTHING HERE
}
}