X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavecraft%2Fgame%2FGameWorld.java;h=88f435b78631f11c1296087bd6b697ca29989d61;hb=7f1f702250f9cd05c1d7f5492e09ba16a56270ae;hp=4a14c7123f7935203a6206f9ff5559475a20e862;hpb=597ab66d10b43233da31893d0d074485d5aa0bd2;p=cavedroid.git diff --git a/core/src/ru/deadsoftware/cavecraft/game/GameWorld.java b/core/src/ru/deadsoftware/cavecraft/game/GameWorld.java index 4a14c71..88f435b 100644 --- a/core/src/ru/deadsoftware/cavecraft/game/GameWorld.java +++ b/core/src/ru/deadsoftware/cavecraft/game/GameWorld.java @@ -37,7 +37,7 @@ public class GameWorld { x = transformX(x); map = foreMap[x][y]; } catch (ArrayIndexOutOfBoundsException e) { - Gdx.app.error("GameWorld",e.toString()); + //Gdx.app.error("GameWorld",e.toString()); } return map; } @@ -47,7 +47,7 @@ public class GameWorld { x = transformX(x); foreMap[x][y] = value; } catch (ArrayIndexOutOfBoundsException e) { - Gdx.app.error("GameWorld", e.toString()); + //Gdx.app.error("GameWorld", e.toString()); } } @@ -57,7 +57,7 @@ public class GameWorld { x = transformX(x); map = backMap[x][y]; } catch (ArrayIndexOutOfBoundsException e) { - Gdx.app.error("GameWorld",e.toString()); + //Gdx.app.error("GameWorld",e.toString()); } return map; } @@ -67,18 +67,47 @@ public class GameWorld { x = transformX(x); backMap[x][y] = value; } catch (ArrayIndexOutOfBoundsException e) { - Gdx.app.error("GameWorld", e.toString()); + //Gdx.app.error("GameWorld", e.toString()); + } + } + + 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) { + if (getForeMap(x,y) == 0 || value == 0 || !Items.BLOCKS.getValueAt(getForeMap(x, y)).collision) { setForeMap(x, y, value); + } else if (Items.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)) { + if (value==0 || (getBackMap(x,y) == 0 && Items.BLOCKS.getValueAt(value).collision) && + (!Items.BLOCKS.getValueAt(value).transparent || value == 18)) { setBackMap(x,y,value); } }