2007-03-29 23:21:00 +00:00
|
|
|
package ei.game.scene;
|
|
|
|
|
|
2007-04-04 17:36:11 +00:00
|
|
|
import ei.engine.math.Vector2f;
|
2007-04-04 16:00:09 +00:00
|
|
|
import ei.engine.math.Vector2i;
|
2007-03-29 23:21:00 +00:00
|
|
|
import ei.engine.math.Vector3f;
|
|
|
|
|
import ei.engine.scene.Node;
|
|
|
|
|
import ei.engine.scene.Sprite;
|
|
|
|
|
|
|
|
|
|
public class Map {
|
|
|
|
|
private static final int POS_SIZE = 50;
|
|
|
|
|
private int width;
|
|
|
|
|
private int hight;
|
|
|
|
|
private GameEntity[][] map;
|
|
|
|
|
private Node mapNode;
|
|
|
|
|
|
|
|
|
|
public Map(int w, int h){
|
|
|
|
|
this.width = w;
|
|
|
|
|
this.hight = h;
|
|
|
|
|
init();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void init(){
|
|
|
|
|
map = new GameEntity[width][hight];
|
|
|
|
|
|
|
|
|
|
// init textures
|
|
|
|
|
mapNode = new Node("MapNode");
|
|
|
|
|
for(int i=0; i<width ;i++){
|
|
|
|
|
for(int j=0; j<hight ;j++){
|
|
|
|
|
Sprite s = new Sprite("MapPos("+i+","+j+")","data/map/sand.jpg");
|
|
|
|
|
s.setLocation(new Vector3f(i*POS_SIZE,j*POS_SIZE,0));
|
2007-04-15 18:52:42 +00:00
|
|
|
s.setSize(new Vector2f(POS_SIZE,POS_SIZE));
|
2007-03-29 23:21:00 +00:00
|
|
|
mapNode.add(s);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2007-04-04 17:39:10 +00:00
|
|
|
/**
|
|
|
|
|
* Returns the pos of the map by the pixel
|
|
|
|
|
* @param x x pixels
|
|
|
|
|
* @param y y pixels
|
|
|
|
|
* @return The pos thats in the coordinates
|
|
|
|
|
*/
|
2007-04-04 16:00:09 +00:00
|
|
|
public Vector2i getPosByPixel(float x, float y){
|
|
|
|
|
x = x/POS_SIZE;
|
|
|
|
|
y = y/POS_SIZE;
|
|
|
|
|
return new Vector2i((int)x,(int)y);
|
|
|
|
|
}
|
|
|
|
|
|
2007-04-04 17:39:10 +00:00
|
|
|
/**
|
|
|
|
|
* The coordinate of the map pos
|
|
|
|
|
* @param x x pos
|
|
|
|
|
* @param y y pos
|
|
|
|
|
* @return The coordinate of the pos
|
|
|
|
|
*/
|
2007-04-15 19:09:56 +00:00
|
|
|
public Vector2f getPixelByPos(int x, int y){
|
|
|
|
|
x = (int)(POS_SIZE*x);
|
|
|
|
|
y = (int)(POS_SIZE*y);
|
2007-04-04 17:36:11 +00:00
|
|
|
return new Vector2f((int)x,(int)y);
|
2007-04-04 16:00:09 +00:00
|
|
|
}
|
|
|
|
|
|
2007-03-29 23:21:00 +00:00
|
|
|
/**
|
|
|
|
|
* Returns if the pos inthe map is empty
|
|
|
|
|
*
|
|
|
|
|
* @param x The x pos
|
|
|
|
|
* @param y The y pos
|
|
|
|
|
* @return True if empty else false
|
|
|
|
|
*/
|
|
|
|
|
public boolean isPosEmpty(int x, int y){
|
2007-04-04 18:28:59 +00:00
|
|
|
if(map[x][y] == null){
|
2007-03-29 23:21:00 +00:00
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns the object at the pos
|
|
|
|
|
*
|
|
|
|
|
* @param x The x pos
|
|
|
|
|
* @param y The y pos
|
|
|
|
|
* @return The object in that pos
|
|
|
|
|
*/
|
|
|
|
|
public GameEntity getPos(int x, int y){
|
|
|
|
|
return map[x][y];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Sets an object at the pos
|
|
|
|
|
*
|
|
|
|
|
* @param e The object
|
|
|
|
|
* @param x The x pos
|
|
|
|
|
* @param y The y pos
|
|
|
|
|
*/
|
|
|
|
|
public void setPos(GameEntity e, int x, int y){
|
|
|
|
|
map[x][y] = e;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Removes a object from that pos
|
|
|
|
|
*
|
|
|
|
|
* @param x The x pos
|
|
|
|
|
* @param y The y pos
|
|
|
|
|
*/
|
|
|
|
|
public void removePos(int x, int y){
|
|
|
|
|
map[x][y] = null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns the map node
|
|
|
|
|
*
|
|
|
|
|
* @return The map node
|
|
|
|
|
*/
|
|
|
|
|
public Node getMapNode(){
|
|
|
|
|
return mapNode;
|
|
|
|
|
}
|
2007-04-04 18:28:59 +00:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Prints all the units on the map
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
public void printAllUnits(){
|
|
|
|
|
for(int i=0; i<width ;i++){
|
|
|
|
|
for(int j=0; j<hight ;j++){
|
|
|
|
|
if(map[i][j] != null){
|
|
|
|
|
System.out.println("LOL: "+i+" "+j);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2007-03-29 23:21:00 +00:00
|
|
|
}
|