diff --git a/core/src/ru/deadsoftware/cavecraft/game/GameWorld.java b/core/src/ru/deadsoftware/cavecraft/game/GameWorld.java
index 42050e2fb2d1b06f5bf5a24d888f7ef6f76e2e0b..25d3660fc1cf29d9a01b25560e9a2b16baaa4a46 100644 (file)
package ru.deadsoftware.cavecraft.game;
-import com.badlogic.gdx.Gdx;
-import com.badlogic.gdx.math.Vector2;
+import ru.deadsoftware.cavecraft.game.objects.Drop;
public class GameWorld {
return HEIGHT;
}
+ public float getWidthPx() {
+ return WIDTH * 16f;
+ }
+
+ public float getHeightPx() {
+ return HEIGHT * 16f;
+ }
+
public int[][] getFullForeMap() {
return foreMap;
}
}
private int transformX(int x) {
- x = x%getWidth();
- if (x<0) x=getWidth()-Math.abs(x);
+ x = x % getWidth();
+ if (x < 0) x = getWidth() - Math.abs(x);
return x;
}
}
}
+ private void placeSlab(int x, int y, int value) {
+ switch (value) {
+ case 51:
+ setForeMap(x, y, 52);
+ break;
+ case 53:
+ setForeMap(x, y, 21);
+ break;
+ case 54:
+ setForeMap(x, y, 5);
+ break;
+ case 55:
+ setForeMap(x, y, 4);
+ break;
+ case 56:
+ setForeMap(x, y, 28);
+ break;
+ case 58:
+ setForeMap(x, y, 57);
+ break;
+ }
+ }
+
public void placeToForeground(int x, int y, int value) {
- if (getForeMap(x,y) == 0 || value == 0 || !Items.BLOCKS.getValueAt(getForeMap(x, y)).collision) {
+ if (getForeMap(x, y) == 0 || value == 0 || !GameItems.getBlock(getForeMap(x, y)).hasCollision()) {
setForeMap(x, y, value);
- GameProc.UPD_X = x-8;
- GameProc.UPD_Y = y-8;
- GameProc.DO_UPD = true;
+ } else if (GameItems.isSlab(value) && getForeMap(x, y) == value) {
+ placeSlab(x, y, value);
}
+ GameProc.UPD_X = x - 8;
+ GameProc.UPD_Y = y - 8;
+ GameProc.DO_UPD = true;
}
public void placeToBackground(int x, int y, int value) {
- if (value==0 || (getBackMap(x,y) == 0 && Items.BLOCKS.getValueAt(value).collision) &&
- (!Items.BLOCKS.getValueAt(value).transparent || value == 18)) {
- setBackMap(x,y,value);
+ if (value == 0 || (getBackMap(x, y) == 0 && GameItems.getBlock(value).hasCollision()) &&
+ (!GameItems.getBlock(value).isTransparent() || value == 18)) {
+ setBackMap(x, y, value);
}
}
- public Vector2 getSpawnPoint() {
- int x=0,y=0;
- while (true) {
- y++;
- if (getForeMap(x,y)>0 && Items.BLOCKS.getValueAt(getForeMap(x,y)).collision) break;
- }
- x = x*16 + 4;
- y = y*16 - 32;
- return new Vector2(x,y);
+ public void destroyForeMap(int x, int y, GameProc gp) {
+ if (GameItems.getBlock(getForeMap(x, y)).getDrop() > 0)
+ gp.drops.add(new Drop(transformX(x) * 16 + 4, y * 16 + 4, GameItems.getBlock(getForeMap(x, y)).getDrop()));
+ placeToForeground(x, y, 0);
+ }
+
+ public void destroyBackMap(int x, int y, GameProc gp) {
+ if (GameItems.getBlock(getBackMap(x, y)).getDrop() > 0)
+ gp.drops.add(new Drop(transformX(x) * 16 + 4, y * 16 + 4, GameItems.getBlock(getBackMap(x, y)).getDrop()));
+ placeToBackground(x, y, 0);
}
public void generate(int w, int h) {
WIDTH = w;
HEIGHT = h;
- WorldGen.genWorld(WIDTH,HEIGHT);
+ WorldGen.genWorld(WIDTH, HEIGHT);
foreMap = WorldGen.getForeMap();
backMap = WorldGen.getBackMap();
WorldGen.clear();