diff --git a/core/src/ru/deadsoftware/cavedroid/game/world/GameWorld.java b/core/src/ru/deadsoftware/cavedroid/game/world/GameWorld.java
index f8a5cc970e1749d34eb8abeb7f0f7acacb8df382..686f1c946c81f55fb90ef5d4578538a6d85e3c2f 100644 (file)
private final Block[][] mForeMap;
private final Block[][] mBackMap;
+ private final WorldGeneratorConfig mWorldConfig = WorldGeneratorConfig.Companion.getDefault();
+
@Inject
public GameWorld(DropController dropController,
MobsController mobsController,
boolean isNewGame = foreMap == null || backMap == null;
if (isNewGame) {
- final WorldGeneratorConfig config = WorldGeneratorConfig.Companion.getDefault();
- mWidth = config.getWidth();
- mHeight = config.getHeight();
- Pair<Block[][], Block[][]> maps = new GameWorldGenerator(config, mGameItemsHolder).generate();
+ mWidth = mWorldConfig.getWidth();
+ mHeight = mWorldConfig.getHeight();
+ Pair<Block[][], Block[][]> maps = new GameWorldGenerator(mWorldConfig, mGameItemsHolder).generate();
mForeMap = maps.getFirst();
mBackMap = maps.getSecond();
mMobsController.getPlayer().respawn(this, mGameItemsHolder);
private Block getMap(int x, int y, int layer) {
Block map = mGameItemsHolder.getFallbackBlock();
- try {
- x = transformX(x);
- map = (layer == 0) ? mForeMap[x][y] : mBackMap[x][y];
- } catch (ArrayIndexOutOfBoundsException ignored) {
+
+ if (y < 0 || y >= getHeight()) {
+ return map;
+ }
+
+ x = transformX(x);
+
+ if (x < 0 || x >= getWidth()) {
+ return map;
}
+
+ map = (layer == 0) ? mForeMap[x][y] : mBackMap[x][y];
+
return map;
}
private void setMap(int x, int y, int layer, Block value) {
- try {
- x = transformX(x);
- if (layer == 0) {
- mForeMap[x][y] = value;
- } else {
- mBackMap[x][y] = value;
- }
- } catch (ArrayIndexOutOfBoundsException ignored) {
+ if (y < 0 || y >= getHeight()) {
+ return;
+ }
+
+ x = transformX(x);
+
+ if (x < 0 || x >= getWidth()) {
+ return;
+ }
+
+ if (layer == 0) {
+ mForeMap[x][y] = value;
+ } else {
+ mBackMap[x][y] = value;
}
}
}
private void playerDurateTool() {
- final InventoryItem playerCurrentItem = mMobsController.getPlayer().getCurrentItem();
- if (mMobsController.getPlayer().getCurrentItem().getItem().isTool()) {
+ final InventoryItem playerCurrentItem = mMobsController.getPlayer().inventory.getActiveItem();
+ if (playerCurrentItem.getItem().isTool()) {
mMobsController.getPlayer().decreaseCurrentItemCount(mGameItemsHolder);
}
}
private boolean shouldDrop(Block block) {
- final Item item = mMobsController.getPlayer().getCurrentItem().getItem();
- int toolLevel = item.isTool() ? ((Item.Tool)item).getLevel() : 0;
+ final Item item = mMobsController.getPlayer().inventory.getActiveItem().getItem();
+ int toolLevel = item.isTool() ? ((Item.Tool) item).getLevel() : 0;
if (item.isTool() && block.getParams().getToolType() != item.getClass()) {
toolLevel = 0;
}
placeToForeground(x, y, mGameItemsHolder.getFallbackBlock());
}
-
+ public WorldGeneratorConfig getWorldConfig() {
+ return mWorldConfig;
+ }
public void destroyBackMap(int x, int y) {
Block block = getBackMap(x, y);