Mobile input fixes

This commit is contained in:
Anuken
2019-10-10 22:13:45 -04:00
parent 80a4e67ddf
commit 204332a76a
4 changed files with 38 additions and 11 deletions

View File

@@ -211,7 +211,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
if(request.breaking){
drawBreaking(request.x, request.y);
}else{
drawSelected(request.x, request.y, request.block, Pal.remove);
drawSelected(request.x, request.y, request.tile().block(), Pal.remove);
}
}
@@ -288,6 +288,14 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
}
}
/*
for(BuildRequest req : selectRequests){
if(req.breaking) continue;
if(req.bounds(Tmp.r2).overlaps(Tmp.r1)){
drawBreaking(req);
}
}*/
for(BrokenBlock req : state.teams.get(player.getTeam()).brokenBlocks){
Block block = content.block(req.block);
if(block.bounds(req.x, req.y, Tmp.r2).overlaps(Tmp.r1)){
@@ -342,16 +350,21 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
int wx = x1 + x * Mathf.sign(x2 - x1);
int wy = y1 + y * Mathf.sign(y2 - y1);
Tile tile = world.ltile(wx, wy);
if(tile == null) continue;
if(!flush){
tryBreakBlock(wx, wy);
}else{
selectRequests.add(new BuildRequest(wx, wy));
}else if(validBreak(tile.x, tile.y) && !selectRequests.contains(r -> r.tile() != null && r.tile().link() == tile)){
selectRequests.add(new BuildRequest(tile.x, tile.y));
}
}
}
//remove build requests
Tmp.r1.set(result.x * tilesize, result.y * tilesize, (result.x2 - result.x) * tilesize, (result.y2 - result.y) * tilesize);
Iterator<BuildRequest> it = player.buildQueue().iterator();
while(it.hasNext()){
BuildRequest req = it.next();
@@ -360,6 +373,15 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
}
}
/*
it = selectRequests.iterator();
while(it.hasNext()){
BuildRequest req = it.next();
if(!req.breaking && req.bounds(Tmp.r2).overlaps(Tmp.r1)){
it.remove();
}
}*/
//remove blocks to rebuild
Iterator<BrokenBlock> broken = state.teams.get(player.getTeam()).brokenBlocks.iterator();
while(broken.hasNext()){

View File

@@ -270,7 +270,8 @@ public class MobileInput extends InputHandler implements GestureListener{
if(request.block.rotate) drawArrow(request.block, tile.x, tile.y, request.rotation);
}
Draw.mixcol(Tmp.c1, 1f);
//Draw.mixcol(Tmp.c1, 1f);
Draw.reset();
drawRequest(request);
//draw last placed request
@@ -327,8 +328,10 @@ public class MobileInput extends InputHandler implements GestureListener{
@Override
protected void drawRequest(BuildRequest request){
drawRequest(request.x, request.y, request.block, request.rotation);
if(!request.breaking){
if(request.breaking){
drawSelected(request.x, request.y, request.block, Pal.remove);
}else{
drawRequest(request.x, request.y, request.block, request.rotation);
drawSelected(request.x, request.y, request.block, Pal.accent);
}
}
@@ -456,12 +459,16 @@ public class MobileInput extends InputHandler implements GestureListener{
@Override
public void update(){
if(state.is(State.menu) || player.isDead()){
if(state.is(State.menu) ){
selectRequests.clear();
removals.clear();
mode = none;
}
if(player.isDead()){
mode = none;
}
//zoom things
if(Math.abs(Core.input.axisTap(Binding.zoom)) > 0 && (Core.input.keyDown(Binding.zoom_hold))){
renderer.scaleCamera(Core.input.axisTap(Binding.zoom));
@@ -487,8 +494,6 @@ public class MobileInput extends InputHandler implements GestureListener{
if(mode == none){
selecting = false;
lineMode = false;
removals.addAll(selectRequests);
selectRequests.clear();
}
if(lineMode && mode == placing && block == null){

View File

@@ -47,8 +47,7 @@ public class Mods implements Loadable{
}
/** @return the loaded mod found by class, or null if not found. */
public @Nullable
LoadedMod getMod(Class<? extends Mod> type){
public @Nullable LoadedMod getMod(Class<? extends Mod> type){
return loaded.find(l -> l.mod.getClass() == type);
}