Implemented touch/scrollwheel zooming, fixed many Android bugs

This commit is contained in:
Anuken
2017-09-21 22:10:09 -04:00
parent f68de4d69f
commit 41c6f90ca3
14 changed files with 96 additions and 69 deletions

View File

@@ -10,11 +10,13 @@ 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.ucore.scene.ui.layout.Unit;
public class GestureHandler extends GestureAdapter{
Vector2 pinch1 = new Vector2(-1, -1), pinch2 = pinch1.cpy();
Vector2 vector = new Vector2();
float initzoom = -1;
boolean zoomed = false;
@Override
public boolean longPress(float x, float y){
@@ -66,15 +68,17 @@ public class GestureHandler extends GestureAdapter{
@Override
public boolean zoom(float initialDistance, float distance){
if(initzoom <= 0)
if(initzoom < 0){
initzoom = initialDistance;
}
control.targetzoom /= (distance/initzoom);
control.clampZoom();
control.camera.update();
initzoom = distance;
if(Math.abs(distance - initzoom) > Unit.dp.inPixels(100f) && !zoomed){
int amount = (distance > initzoom ? 1 : -1);
control.scaleCamera(Math.round(Unit.dp.inPixels(amount)));
initzoom = distance;
zoomed = true;
return true;
}
return false;
}
@@ -83,6 +87,7 @@ public class GestureHandler extends GestureAdapter{
public void pinchStop () {
initzoom = -1;
pinch2.set(pinch1.set(-1, -1));
zoomed = false;
}
int touches(){

View File

@@ -6,6 +6,7 @@ import com.badlogic.gdx.Input.Buttons;
import com.badlogic.gdx.Input.Keys;
import io.anuke.mindustry.Inventory;
import io.anuke.mindustry.Vars;
import io.anuke.mindustry.resource.ItemStack;
import io.anuke.mindustry.resource.Weapon;
import io.anuke.mindustry.world.Tile;
@@ -14,7 +15,6 @@ import io.anuke.mindustry.world.blocks.Blocks;
import io.anuke.mindustry.world.blocks.ProductionBlocks;
import io.anuke.ucore.core.*;
import io.anuke.ucore.scene.utils.Cursors;
import io.anuke.ucore.util.Mathf;
public class Input{
@@ -23,12 +23,16 @@ public class Input{
if(player.health <= 0) return;
if(Inputs.scrolled()){
Vars.control.scaleCamera(Inputs.scroll());
//TODO
/*
int index = currentWeapon();
index -= Inputs.scroll();
player.weapon = control.getWeapons().get(Mathf.clamp(index, 0, control.getWeapons().size-1));
ui.updateWeapons();
*/
}
if(Inputs.keyUp("rotate"))