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

@@ -37,6 +37,7 @@ public class AssetsAnnotationProcessor extends AbstractProcessor{
path = Paths.get(Utils.filer.createResource(StandardLocation.CLASS_OUTPUT, "no", "no") path = Paths.get(Utils.filer.createResource(StandardLocation.CLASS_OUTPUT, "no", "no")
.toUri().toURL().toString().substring(System.getProperty("os.name").contains("Windows") ? 6 : "file:".length())) .toUri().toURL().toString().substring(System.getProperty("os.name").contains("Windows") ? 6 : "file:".length()))
.getParent().getParent().getParent().getParent().getParent().getParent().toString(); .getParent().getParent().getParent().getParent().getParent().getParent().toString();
path = path.replace("%20", " ");
processSounds("Sounds", path + "/assets/sounds", "io.anuke.arc.audio.Sound"); processSounds("Sounds", path + "/assets/sounds", "io.anuke.arc.audio.Sound");
processSounds("Musics", path + "/assets/music", "io.anuke.arc.audio.Music"); processSounds("Musics", path + "/assets/music", "io.anuke.arc.audio.Music");

View File

@@ -211,7 +211,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
if(request.breaking){ if(request.breaking){
drawBreaking(request.x, request.y); drawBreaking(request.x, request.y);
}else{ }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){ for(BrokenBlock req : state.teams.get(player.getTeam()).brokenBlocks){
Block block = content.block(req.block); Block block = content.block(req.block);
if(block.bounds(req.x, req.y, Tmp.r2).overlaps(Tmp.r1)){ 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 wx = x1 + x * Mathf.sign(x2 - x1);
int wy = y1 + y * Mathf.sign(y2 - y1); int wy = y1 + y * Mathf.sign(y2 - y1);
Tile tile = world.ltile(wx, wy);
if(tile == null) continue;
if(!flush){ if(!flush){
tryBreakBlock(wx, wy); tryBreakBlock(wx, wy);
}else{ }else if(validBreak(tile.x, tile.y) && !selectRequests.contains(r -> r.tile() != null && r.tile().link() == tile)){
selectRequests.add(new BuildRequest(wx, wy)); selectRequests.add(new BuildRequest(tile.x, tile.y));
} }
} }
} }
//remove build requests //remove build requests
Tmp.r1.set(result.x * tilesize, result.y * tilesize, (result.x2 - result.x) * tilesize, (result.y2 - result.y) * tilesize); 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(); Iterator<BuildRequest> it = player.buildQueue().iterator();
while(it.hasNext()){ while(it.hasNext()){
BuildRequest req = it.next(); 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 //remove blocks to rebuild
Iterator<BrokenBlock> broken = state.teams.get(player.getTeam()).brokenBlocks.iterator(); Iterator<BrokenBlock> broken = state.teams.get(player.getTeam()).brokenBlocks.iterator();
while(broken.hasNext()){ 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); 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); drawRequest(request);
//draw last placed request //draw last placed request
@@ -327,8 +328,10 @@ public class MobileInput extends InputHandler implements GestureListener{
@Override @Override
protected void drawRequest(BuildRequest request){ protected void drawRequest(BuildRequest request){
if(request.breaking){
drawSelected(request.x, request.y, request.block, Pal.remove);
}else{
drawRequest(request.x, request.y, request.block, request.rotation); drawRequest(request.x, request.y, request.block, request.rotation);
if(!request.breaking){
drawSelected(request.x, request.y, request.block, Pal.accent); drawSelected(request.x, request.y, request.block, Pal.accent);
} }
} }
@@ -456,12 +459,16 @@ public class MobileInput extends InputHandler implements GestureListener{
@Override @Override
public void update(){ public void update(){
if(state.is(State.menu) || player.isDead()){ if(state.is(State.menu) ){
selectRequests.clear(); selectRequests.clear();
removals.clear(); removals.clear();
mode = none; mode = none;
} }
if(player.isDead()){
mode = none;
}
//zoom things //zoom things
if(Math.abs(Core.input.axisTap(Binding.zoom)) > 0 && (Core.input.keyDown(Binding.zoom_hold))){ if(Math.abs(Core.input.axisTap(Binding.zoom)) > 0 && (Core.input.keyDown(Binding.zoom_hold))){
renderer.scaleCamera(Core.input.axisTap(Binding.zoom)); renderer.scaleCamera(Core.input.axisTap(Binding.zoom));
@@ -487,8 +494,6 @@ public class MobileInput extends InputHandler implements GestureListener{
if(mode == none){ if(mode == none){
selecting = false; selecting = false;
lineMode = false; lineMode = false;
removals.addAll(selectRequests);
selectRequests.clear();
} }
if(lineMode && mode == placing && block == null){ 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. */ /** @return the loaded mod found by class, or null if not found. */
public @Nullable public @Nullable LoadedMod getMod(Class<? extends Mod> type){
LoadedMod getMod(Class<? extends Mod> type){
return loaded.find(l -> l.mod.getClass() == type); return loaded.find(l -> l.mod.getClass() == type);
} }