diff --git a/core/src/ru/deadsoftware/cavedroid/game/GameProc.java b/core/src/ru/deadsoftware/cavedroid/game/GameProc.java
index b3b0d3f51a186197c5fb5c1b26185f1388b7984e..fdfef6356f3634a73a63675e05aca3e032db02f7 100644 (file)
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;
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;
public ArrayList<Mob> mobs;
ArrayList<Drop> 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;
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) {
}
}
+ 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;
}
}