X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavedroid%2Fgame%2FGameProc.java;h=fdfef6356f3634a73a63675e05aca3e032db02f7;hb=59d07dd8a43cfb159045e6313cca4d519f67a6fc;hp=b3b0d3f51a186197c5fb5c1b26185f1388b7984e;hpb=2948fcd9c40ebf588ef7d0e7cd8dd34ecaa1f9b2;p=cavedroid.git diff --git a/core/src/ru/deadsoftware/cavedroid/game/GameProc.java b/core/src/ru/deadsoftware/cavedroid/game/GameProc.java index b3b0d3f..fdfef63 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/GameProc.java +++ b/core/src/ru/deadsoftware/cavedroid/game/GameProc.java @@ -2,8 +2,10 @@ package ru.deadsoftware.cavedroid.game; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Input; +import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.utils.Disposable; import com.badlogic.gdx.utils.TimeUtils; +import com.google.common.collect.Range; import ru.deadsoftware.cavedroid.CaveGame; import ru.deadsoftware.cavedroid.GameScreen; import ru.deadsoftware.cavedroid.game.mobs.FallingGravel; @@ -11,8 +13,8 @@ import ru.deadsoftware.cavedroid.game.mobs.FallingSand; import ru.deadsoftware.cavedroid.game.mobs.Mob; import ru.deadsoftware.cavedroid.game.objects.Drop; import ru.deadsoftware.cavedroid.game.objects.Player; -import ru.deadsoftware.cavedroid.misc.ControlMode; import ru.deadsoftware.cavedroid.misc.Assets; +import ru.deadsoftware.cavedroid.misc.ControlMode; import ru.deadsoftware.cavedroid.misc.states.GameState; import java.io.Serializable; @@ -41,8 +43,11 @@ public class GameProc implements Serializable, Disposable { public ArrayList mobs; ArrayList drops; - public boolean isTouchDown, isKeyDown; - public int touchDownX, touchDownY, touchDownBtn, keyDownCode; + public boolean isKeyDown; + public int keyDownCode; + boolean isTouchDown; + float touchDownX, touchDownY; + int touchDownBtn; long touchDownTime; int curX, curY; @@ -95,12 +100,12 @@ public class GameProc implements Serializable, Disposable { int pastY = curY; if (controlMode == ControlMode.WALK && CaveGame.TOUCH) { - curX = player.getMapX(); - curY = (int) (player.pos.y + player.getWidth() / 16); - while (curY - pastY < 2 && isNotAutoselectable(curX, curY)) { + curX = player.getMapX() + (player.looksLeft() ? -1 : 1); + curY = player.getUpperMapY(); + for (int i = 0; i < 2 && isNotAutoselectable(curX, curY); i++) { curY++; } - if (!isNotAutoselectable(curX, curY)) { + if (isNotAutoselectable(curX, curY)) { curX += player.looksLeft() ? 1 : -1; } } else if (!CaveGame.TOUCH) { @@ -211,15 +216,20 @@ public class GameProc implements Serializable, Disposable { } } + private boolean insideHotbar(float x, float y) { + TextureRegion hotbar = Assets.textureRegions.get("hotbar"); + return y < hotbar.getRegionHeight() && + Range.open(renderer.getWidth() / 2 - (float) hotbar.getRegionWidth() / 2, + renderer.getWidth() / 2 + (float) hotbar.getRegionWidth() / 2).contains(x); + } + private void holdMB() { if (touchDownBtn == Input.Buttons.RIGHT) { useItem(curX, curY, player.inventory[player.slot], true); isTouchDown = false; - } else if (touchDownBtn == Input.Buttons.LEFT) { - if (touchDownY < Assets.invBar.getRegionHeight() && - touchDownX > renderer.getWidth() / 2 - (float) Assets.invBar.getRegionWidth() / 2 && - touchDownX < renderer.getWidth() / 2 + (float) Assets.invBar.getRegionWidth() / 2) { - CaveGame.GAME_STATE= GameState.CREATIVE_INV; + } else { + if (insideHotbar(touchDownX, touchDownY)) { + CaveGame.GAME_STATE = GameState.CREATIVE_INV; isTouchDown = false; } }