Major improvements to Android touch controls, many bugfixes
This commit is contained in:
@@ -18,6 +18,8 @@ import io.anuke.ucore.util.Mathf;
|
||||
|
||||
public class AndroidInput extends InputAdapter{
|
||||
public static float mousex, mousey;
|
||||
public static PlaceMode mode = PlaceMode.cursor;
|
||||
public static boolean brokeBlock = false;
|
||||
private static float lmousex, lmousey;
|
||||
private static float warmup;
|
||||
private static float warmupDelay = 20;
|
||||
@@ -30,6 +32,12 @@ public class AndroidInput extends InputAdapter{
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean touchUp (int screenX, int screenY, int pointer, int button) {
|
||||
brokeBlock = false;
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean touchDown (int screenX, int screenY, int pointer, int button) {
|
||||
ui.hideTooltip();
|
||||
@@ -49,7 +57,9 @@ public class AndroidInput extends InputAdapter{
|
||||
public static void breakBlock(){
|
||||
Tile tile = selected();
|
||||
player.breaktime += Timers.delta();
|
||||
|
||||
if(player.breaktime >= tile.block().breaktime){
|
||||
brokeBlock = true;
|
||||
if(tile.block().drops != null){
|
||||
Inventory.addItem(tile.block().drops.item, tile.block().drops.amount);
|
||||
}
|
||||
@@ -92,9 +102,11 @@ public class AndroidInput extends InputAdapter{
|
||||
public static void doInput(){
|
||||
if(Gdx.input.isTouched(0)
|
||||
&& Mathf.near2d(lmousex, lmousey, Gdx.input.getX(0), Gdx.input.getY(0), 50)
|
||||
&& !ui.hasMouse() && player.recipe == null){
|
||||
&& !ui.hasMouse() /*&& (player.recipe == null || mode == PlaceMode.touch)*/){
|
||||
warmup += Timers.delta();
|
||||
|
||||
float lx = mousex, ly = mousey;
|
||||
|
||||
mousex = Gdx.input.getX(0);
|
||||
mousey = Gdx.input.getY(0);
|
||||
|
||||
@@ -110,6 +122,9 @@ public class AndroidInput extends InputAdapter{
|
||||
player.breaktime = 0;
|
||||
}
|
||||
}
|
||||
|
||||
mousex = lx;
|
||||
mousey = ly;
|
||||
}else{
|
||||
warmup = 0;
|
||||
lmousex = Gdx.input.getX(0);
|
||||
|
||||
@@ -6,13 +6,9 @@ import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.input.GestureDetector.GestureAdapter;
|
||||
import com.badlogic.gdx.math.Vector2;
|
||||
|
||||
import io.anuke.mindustry.GameState;
|
||||
import io.anuke.mindustry.GameState.State;
|
||||
import io.anuke.mindustry.Inventory;
|
||||
import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.mindustry.world.World;
|
||||
import io.anuke.mindustry.world.blocks.Blocks;
|
||||
import io.anuke.ucore.core.*;
|
||||
import io.anuke.mindustry.Vars;
|
||||
import io.anuke.ucore.core.Core;
|
||||
import io.anuke.ucore.scene.ui.layout.Unit;
|
||||
|
||||
public class GestureHandler extends GestureAdapter{
|
||||
@@ -23,6 +19,7 @@ public class GestureHandler extends GestureAdapter{
|
||||
|
||||
@Override
|
||||
public boolean longPress(float x, float y){
|
||||
/*
|
||||
Tile tile = World.cursorTile();
|
||||
player.breaktime += Timers.delta();
|
||||
if(!GameState.is(State.menu) && player.breaktime >= tile.block().breaktime){
|
||||
@@ -31,16 +28,28 @@ public class GestureHandler extends GestureAdapter{
|
||||
tile.setBlock(Blocks.air);
|
||||
player.breaktime = 0f;
|
||||
Sounds.play("break");
|
||||
}*/
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean tap (float x, float y, int count, int button) {
|
||||
if(AndroidInput.mode == PlaceMode.touch && !ui.hasMouse() && player.recipe != null &&
|
||||
Inventory.hasItems(player.recipe.requirements) && !Vars.ui.hasMouse() && !AndroidInput.brokeBlock){
|
||||
AndroidInput.mousex = x;
|
||||
AndroidInput.mousey = y;
|
||||
AndroidInput.place();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean pan(float x, float y, float deltaX, float deltaY){
|
||||
if(player.recipe == null || !Inventory.hasItems(player.recipe.requirements)){
|
||||
if(player.recipe == null || !Inventory.hasItems(player.recipe.requirements) || AndroidInput.mode == PlaceMode.touch){
|
||||
player.x -= deltaX*Core.camera.zoom/Core.cameraScale;
|
||||
player.y += deltaY*Core.camera.zoom/Core.cameraScale;
|
||||
}else{
|
||||
}else if(AndroidInput.mode == PlaceMode.cursor){
|
||||
AndroidInput.mousex += deltaX;
|
||||
AndroidInput.mousey += deltaY;
|
||||
}
|
||||
|
||||
5
core/src/io/anuke/mindustry/input/PlaceMode.java
Normal file
5
core/src/io/anuke/mindustry/input/PlaceMode.java
Normal file
@@ -0,0 +1,5 @@
|
||||
package io.anuke.mindustry.input;
|
||||
|
||||
public enum PlaceMode{
|
||||
cursor, touch;
|
||||
}
|
||||
Reference in New Issue
Block a user