diff --git a/core/src/ru/deadsoftware/cavedroid/game/GameInput.java b/core/src/ru/deadsoftware/cavedroid/game/GameInput.java
index ca603176453f1ac7e219c6d825c11dfeb1f8f528..29c8188d9d6c44f07946a8f464913a01fab1e0ea 100644 (file)
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
+import com.badlogic.gdx.math.MathUtils;
import com.badlogic.gdx.utils.TimeUtils;
import com.google.common.collect.Range;
import ru.deadsoftware.cavedroid.MainConfig;
import ru.deadsoftware.cavedroid.game.mobs.Pig;
import ru.deadsoftware.cavedroid.game.mobs.Player;
import ru.deadsoftware.cavedroid.game.objects.DropController;
+import ru.deadsoftware.cavedroid.game.world.GameWorld;
import ru.deadsoftware.cavedroid.misc.Assets;
import ru.deadsoftware.cavedroid.misc.ControlMode;
if (checkSwim()) {
mPlayer.swim = true;
} else if (mPlayer.canJump()) {
- mPlayer.getMove().add(0, -7);
+ mPlayer.getVelocity().add(0, GamePhysics.PL_JUMP_VELOCITY);
} else if (!mPlayer.isFlyMode() && mPlayer.gameMode == 1) {
mPlayer.setFlyMode(true);
- mPlayer.getMove().y = 0;
+ mPlayer.getVelocity().y = 0;
} else if (mPlayer.isFlyMode()) {
- mPlayer.getMove().y = -GamePhysics.PL_SPEED;
+ mPlayer.getVelocity().y = -GamePhysics.PL_SPEED;
}
}
if (mControlMode == ControlMode.WALK || !mMainConfig.isTouch()) {
switch (keycode) {
case Input.Keys.A:
- mPlayer.getMove().x = -GamePhysics.PL_SPEED;
+ mPlayer.getVelocity().x = -GamePhysics.PL_SPEED;
mPlayer.setDir(Mob.Direction.LEFT);
if (mMainConfig.isTouch() && checkSwim()) {
mPlayer.swim = true;
}
break;
case Input.Keys.D:
- mPlayer.getMove().x = GamePhysics.PL_SPEED;
+ mPlayer.getVelocity().x = GamePhysics.PL_SPEED;
mPlayer.setDir(Mob.Direction.RIGHT);
if (mMainConfig.isTouch() && checkSwim()) {
mPlayer.swim = true;
break;
case Input.Keys.S:
case Input.Keys.CONTROL_LEFT:
- mPlayer.getMove().y = GamePhysics.PL_SPEED;
+ mPlayer.getVelocity().y = GamePhysics.PL_SPEED;
break;
}
} else {
mCurX += mPlayer.looksLeft() ? 1 : -1;
}
} else if (!mMainConfig.isTouch()) {
- mCurX = (int) (Gdx.input.getX() * (mMainConfig.getWidth() /
- Gdx.graphics.getWidth()) + gameRenderer.getCamX()) / 16;
+ final int tmpX = (int) (Gdx.input.getX() * (mMainConfig.getWidth() /
+ Gdx.graphics.getWidth()) + gameRenderer.getCamX());
+ mCurX = tmpX / 16;
- mCurY = (int) (Gdx.input.getY() * (mMainConfig.getHeight() /
- Gdx.graphics.getHeight()) + gameRenderer.getCamY()) / 16;
- if (mCurX < 0) {
+ final int tmpY = (int) (Gdx.input.getY() * (mMainConfig.getHeight() /
+ Gdx.graphics.getHeight()) + gameRenderer.getCamY());
+ mCurY = tmpY / 16;
+
+ if (tmpX < 0) {
mCurX--;
}
+
+ final double a = tmpX - mPlayer.x;
+ final double b = tmpY - mPlayer.y;
+
+ mPlayer.headRotation = (float) Math.atan(b / a) * MathUtils.radDeg;
}
if (pastX != mCurX || pastY != mCurY) {
switch (keycode) {
case Input.Keys.A:
case Input.Keys.D:
- mPlayer.getMove().x = 0;
+ mPlayer.getVelocity().x = 0;
if (mMainConfig.isTouch() && mPlayer.swim) {
mPlayer.swim = false;
}
case Input.Keys.SPACE:
case Input.Keys.CONTROL_LEFT:
if (mPlayer.isFlyMode()) {
- mPlayer.getMove().y = 0;
+ mPlayer.getVelocity().y = 0;
}
if (mPlayer.swim) {
mPlayer.swim = false;
}
public void touchDragged(float screenX, float screenY) {
+ if (Math.abs(screenX - mTouchDownX) < 16 && Math.abs(screenY - mTouchDownY) < 16) {
+ return;
+ }
+
mDragging = true;
if (mMainConfig.checkGameUiWindow(GameUiWindow.CREATIVE_INVENTORY) && Math.abs(screenY - mTouchDownY) > 16) {
if (insideCreativeInv(screenX, screenY)) {
}
}
- public void scrolled(int amount) {
+ public void scrolled(float amountX, float amountY) {
switch (mMainConfig.getGameUiWindow()) {
case NONE:
- mPlayer.slot += amount;
+ mPlayer.slot += (int) amountY;
if (mPlayer.slot < 0) {
mPlayer.slot = 8;
}
}
break;
case CREATIVE_INVENTORY:
- mCreativeScroll += amount;
+ mCreativeScroll += (int) amountY;
if (mCreativeScroll < 0) {
mCreativeScroll = 0;
}