1 package ru
.deadsoftware
.cavecraft
.game
;
3 import com
.badlogic
.gdx
.math
.Vector2
;
5 public class GameWorld
{
7 private int WIDTH
, HEIGHT
;
8 private int[][] foreMap
;
9 private int[][] backMap
;
11 public int getWidth() {
15 public int getHeight() {
19 public int[][] getFullForeMap() {
23 public int[][] getFullBackMap() {
27 private int transformX(int x
) {
29 if (x
< 0) x
= getWidth() - Math
.abs(x
);
33 public int getForeMap(int x
, int y
) {
38 } catch (ArrayIndexOutOfBoundsException e
) {
39 //Gdx.app.error("GameWorld",e.toString());
44 public void setForeMap(int x
, int y
, int value
) {
47 foreMap
[x
][y
] = value
;
48 } catch (ArrayIndexOutOfBoundsException e
) {
49 //Gdx.app.error("GameWorld", e.toString());
53 public int getBackMap(int x
, int y
) {
58 } catch (ArrayIndexOutOfBoundsException e
) {
59 //Gdx.app.error("GameWorld",e.toString());
64 public void setBackMap(int x
, int y
, int value
) {
67 backMap
[x
][y
] = value
;
68 } catch (ArrayIndexOutOfBoundsException e
) {
69 //Gdx.app.error("GameWorld", e.toString());
73 private void placeSlab(int x
, int y
, int value
) {
96 public void placeToForeground(int x
, int y
, int value
) {
97 if (getForeMap(x
, y
) == 0 || value
== 0 || !Items
.BLOCKS
.getValueAt(getForeMap(x
, y
)).collision
) {
98 setForeMap(x
, y
, value
);
99 } else if (Items
.isSlab(value
) && getForeMap(x
, y
) == value
) {
100 placeSlab(x
, y
, value
);
102 GameProc
.UPD_X
= x
- 8;
103 GameProc
.UPD_Y
= y
- 8;
104 GameProc
.DO_UPD
= true;
107 public void placeToBackground(int x
, int y
, int value
) {
108 if (value
== 0 || (getBackMap(x
, y
) == 0 && Items
.BLOCKS
.getValueAt(value
).collision
) &&
109 (!Items
.BLOCKS
.getValueAt(value
).transparent
|| value
== 18)) {
110 setBackMap(x
, y
, value
);
114 public Vector2
getSpawnPoint() {
118 if (getForeMap(x
, y
) > 0 && Items
.BLOCKS
.getValueAt(getForeMap(x
, y
)).collision
) break;
122 return new Vector2(x
, y
);
125 public void generate(int w
, int h
) {
128 WorldGen
.genWorld(WIDTH
, HEIGHT
);
129 foreMap
= WorldGen
.getForeMap();
130 backMap
= WorldGen
.getBackMap();
134 public void setMaps(int[][] foreMap
, int[][] backMap
) {
135 this.foreMap
= foreMap
.clone();
136 this.backMap
= backMap
.clone();
137 WIDTH
= foreMap
.length
;
138 HEIGHT
= foreMap
[0].length
;