package demo.tilemap;
import java.awt.Point;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.Input;
import org.newdawn.slick.ShapeFill;
import org.newdawn.slick.fills.GradientFill;
import org.newdawn.slick.geom.Shape;
import kku.cs.fgl.Color;
import kku.cs.fgl.IsometricViewPort;
import kku.cs.fgl.Scene;
import kku.cs.fgl.SpriteCell;
import kku.cs.fgl.actor.LabelActor;
public class IsometricScene1 extends Scene {
IsometricViewPort v;
Point selected = null;
LabelActor label = new LabelActor(300, 20, "");
public IsometricScene1(int id) {
super(id);
}
@Override
public void enter() {
// TODO Auto-generated method stub
}
Color scolor = new Color(0, 200, 0);
@Override
public void init() {
v = new IsometricViewPort(2, this, 0, 0) {
GradientFill gr = new GradientFill(0, 0, Color.red, 60, 60,
Color.blue);
@Override
public void paintCell(Graphics g, int tx, int ty, Shape r,
SpriteCell cell) {
super.paintCell(g, tx, ty, r, cell);
if (selected != null && tx == selected.x && ty == selected.y) {
g.setColor(scolor);
g.fill(r);
}
Point p = getTileLocation(tx, ty);
g.drawString(tx + "," + ty, p.x + 15, p.y - 10);
}
};
v.setMapSize(20, 20);
v.setTileWidth(60);
v.setDrawGrid(true);
add(label);
}
@Override
public void leave() {
// TODO Auto-generated method stub
}
@Override
public void mouseMoved(int oldx, int oldy, int newx, int newy) {
if (oldx != newx || oldy != newy) {
selected = v.getCellFromScreenXY(newx, newy);
label.setText("x=" + selected.x + " y=" + selected.y);
}
}
@Override
public void update(int delta) {
super.update(delta);
Input p = screen.getInput();
int mx = p.getMouseX();
int my = p.getMouseY();
if (mx >= 780) {
v.move(5, 0);
}
if (mx < 10) {
v.move(-5, 0);
}
}
}