X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavecraft%2Fgame%2FGameInputHandler.java;h=c288afface0331516b5feb2969414f3fecfd1c46;hb=e5f474791112f95004f7e8f8ec96661884d7373f;hp=c3aa564c9b25c0ad45c104eaa6e0effe537db918;hpb=a6ec412e508cfa8679dcf32e69600fbb939122af;p=cavedroid.git diff --git a/core/src/ru/deadsoftware/cavecraft/game/GameInputHandler.java b/core/src/ru/deadsoftware/cavecraft/game/GameInputHandler.java index c3aa564..c288aff 100644 --- a/core/src/ru/deadsoftware/cavecraft/game/GameInputHandler.java +++ b/core/src/ru/deadsoftware/cavecraft/game/GameInputHandler.java @@ -1,7 +1,11 @@ package ru.deadsoftware.cavecraft.game; +import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Input; import com.badlogic.gdx.utils.TimeUtils; +import ru.deadsoftware.cavecraft.Assets; +import ru.deadsoftware.cavecraft.GameScreen; +import ru.deadsoftware.cavecraft.Items; public class GameInputHandler { @@ -12,35 +16,74 @@ public class GameInputHandler { } public void keyDown(int keyCode) { - if (keyCode == Input.Keys.LEFT) { - gameProc.player.moveX.add(-GamePhysics.PL_SPEED,0); - gameProc.player.dir = 0; + if (gameProc.ctrlMode==0) { + if (keyCode == Input.Keys.A) { + gameProc.player.moveX.add(-GamePhysics.PL_SPEED, 0); + gameProc.player.dir = 0; + } + if (keyCode == Input.Keys.D) { + gameProc.player.moveX.add(GamePhysics.PL_SPEED, 0); + gameProc.player.dir = 1; + } + } else { + if (keyCode == Input.Keys.A) { + gameProc.cursorX--; + } + if (keyCode == Input.Keys.D) { + gameProc.cursorX++; + } + if (keyCode == Input.Keys.W) { + gameProc.cursorY--; + } + if (keyCode == Input.Keys.S) { + gameProc.cursorY++; + } + if (gameProc.cursorX < 0) + gameProc.cursorX = 0; + if (gameProc.cursorX >= gameProc.world.getWidth()) + gameProc.cursorX = gameProc.world.getWidth()-1; + if (gameProc.cursorY < 0) + gameProc.cursorY = 0; + if (gameProc.cursorY >= gameProc.world.getHeight()) + gameProc.cursorY = gameProc.world.getHeight()-1; } - if (keyCode == Input.Keys.RIGHT) { - gameProc.player.moveX.add(GamePhysics.PL_SPEED,0); - gameProc.player.dir = 1; + if (keyCode == Input.Keys.ALT_LEFT) { + gameProc.ctrlMode++; + gameProc.cursorX = (int)(gameProc.player.position.x/16); + gameProc.cursorY = (int)(gameProc.player.position.y/16); + if (gameProc.ctrlMode > 1) gameProc.ctrlMode = 0; + } + if (keyCode == Input.Keys.SPACE) { + if (gameProc.player.canJump) { + gameProc.player.moveY.add(0, -7); + } else if (!gameProc.player.flyMode) { + gameProc.player.flyMode = true; + gameProc.player.moveY.setZero(); + } else { + gameProc.player.moveY.y = -GamePhysics.PL_SPEED; + } + } + if (keyCode == Input.Keys.CONTROL_LEFT) { + gameProc.player.moveY.y = GamePhysics.PL_SPEED; + } + if (keyCode == Input.Keys.E) { + gameProc.renderer.showCreative = !gameProc.renderer.showCreative; } - if (keyCode == Input.Keys.UP) gameProc.player.moveY.add(0,-12); } public void keyUp(int keyCode) { - if (keyCode == Input.Keys.RIGHT || keyCode == Input.Keys.LEFT) { + if (keyCode == Input.Keys.A || keyCode == Input.Keys.D) { gameProc.player.moveX.x = 0; } + if (keyCode == Input.Keys.SPACE) { + if (gameProc.player.flyMode) gameProc.player.moveY.setZero(); + } + if (keyCode == Input.Keys.CONTROL_LEFT) { + if (gameProc.player.flyMode) gameProc.player.moveY.setZero(); + } } public void mouseMoved(int screenX, int screenY) { - gameProc.cursorX = (int)((screenX+gameProc.renderer.camera.position.x)/16); - gameProc.cursorY = (int)((screenY+gameProc.renderer.camera.position.y)/16); - if (gameProc.cursorX < 0) - gameProc.cursorX = 0; - if (gameProc.cursorX >= gameProc.world.getWidth()) - gameProc.cursorX = gameProc.world.getWidth()-1; - if (gameProc.cursorY < 0) - gameProc.cursorY = 0; - if (gameProc.cursorY >= gameProc.world.getHeight()) - gameProc.cursorY = gameProc.world.getHeight()-1; - } public void touchDown(int screenX, int screenY, int button) { @@ -48,12 +91,26 @@ public class GameInputHandler { gameProc.touchDownY = screenY; gameProc.touchDownTime = TimeUtils.millis(); gameProc.isTouchDown = true; + if (gameProc.renderer.showCreative) { + try { + int ix = (int)(screenX-(gameProc.renderer.camera.viewportWidth/2-Assets.creativeInv.getRegionWidth()/2+8))/18; + int iy = (int)(screenY-(gameProc.renderer.camera.viewportHeight/2 - Assets.creativeInv.getRegionHeight()/2+18))/18; + int item = ix+iy*8; + for (int i=8; i>0; i--) { + gameProc.player.inventory[i] = gameProc.player.inventory[i-1]; + } + if (item>=0 && item 0) { gameProc.world.placeToForeground(gameProc.cursorX, gameProc.cursorY, 0); @@ -66,11 +123,12 @@ public class GameInputHandler { } public void touchDragged(int screenX, int screenY) { - gameProc.renderer.camera.position.x += (gameProc.touchDownX-screenX); - gameProc.renderer.camera.position.y += (gameProc.touchDownY-screenY); - gameProc.touchDownX = screenX; - gameProc.touchDownY = screenY; - gameProc.isTouchDown = false; + } + + public void scrolled(int amount) { + gameProc.invSlot += amount; + if (gameProc.invSlot < 0) gameProc.invSlot = 8; + if (gameProc.invSlot > 8) gameProc.invSlot = 0; } }