From 6ececea004a2b8459d92b089e678b82f0dc60b07 Mon Sep 17 00:00:00 2001 From: Joshua Fan Date: Sat, 5 Dec 2020 00:58:56 -0800 Subject: [PATCH 1/3] Enable double-click to play sector --- .../mindustry/ui/dialogs/PlanetDialog.java | 115 ++++++++++-------- 1 file changed, 62 insertions(+), 53 deletions(-) diff --git a/core/src/mindustry/ui/dialogs/PlanetDialog.java b/core/src/mindustry/ui/dialogs/PlanetDialog.java index 6df80b6311..84fd58cc51 100644 --- a/core/src/mindustry/ui/dialogs/PlanetDialog.java +++ b/core/src/mindustry/ui/dialogs/PlanetDialog.java @@ -412,6 +412,10 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ public void tap(InputEvent event, float x, float y, int count, KeyCode button){ if(showing()) return; + if(selected == hovered){ + playSelected(); + } + if(hovered != null && (canSelect(hovered) || debugSelect)){ selected = hovered; } @@ -761,59 +765,8 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ sector.isBeingPlayed() ? "@sectors.resume" : sector.hasBase() ? "@sectors.go" : locked ? "@locked" : "@sectors.launch", - locked ? Icon.lock :Icon.play, () -> { - - if(sector.isBeingPlayed()){ - //already at this sector - hide(); - return; - } - - if(sector.preset != null && sector.preset.locked()){ - return; - } - - boolean shouldHide = true; - - //save before launch. - if(control.saves.getCurrent() != null && state.isGame() && mode != select){ - try{ - control.saves.getCurrent().save(); - }catch(Throwable e){ - e.printStackTrace(); - ui.showException("[accent]" + Core.bundle.get("savefail"), e); - } - } - - if(mode == look && !sector.hasBase()){ - shouldHide = false; - Sector from = findLauncher(sector); - if(from == null){ - //clear loadout information, so only the basic loadout gets used - universe.clearLoadoutInfo(); - //free launch. - control.playSector(sector); - }else{ - CoreBlock block = from.info.bestCoreType instanceof CoreBlock b ? b : (CoreBlock)Blocks.coreShard; - - loadouts.show(block, from, () -> { - from.removeItems(universe.getLastLoadout().requirements()); - from.removeItems(universe.getLaunchResources()); - - launching = true; - zoom = 0.5f; - - ui.hudfrag.showLaunchDirect(); - Time.runTask(launchDuration, () -> control.playSector(from, sector)); - }); - } - }else if(mode == select){ - listener.get(sector); - }else{ - control.playSector(sector); - } - - if(shouldHide) hide(); + locked ? Icon.lock : Icon.play, () -> { + playSelected(); }).growX().height(54f).minWidth(170f).padTop(4).disabled(locked); } @@ -840,6 +793,62 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ stable.act(0f); } + void playSelected(){ + Sector sector = selected; + + if(sector.isBeingPlayed()){ + //already at this sector + hide(); + return; + } + + if(sector.preset != null && sector.preset.locked()){ + return; + } + + boolean shouldHide = true; + + //save before launch. + if(control.saves.getCurrent() != null && state.isGame() && mode != select){ + try{ + control.saves.getCurrent().save(); + }catch(Throwable e){ + e.printStackTrace(); + ui.showException("[accent]" + Core.bundle.get("savefail"), e); + } + } + + if(mode == look && !sector.hasBase()){ + shouldHide = false; + Sector from = findLauncher(sector); + if(from == null){ + //clear loadout information, so only the basic loadout gets used + universe.clearLoadoutInfo(); + //free launch. + control.playSector(sector); + }else{ + CoreBlock block = from.info.bestCoreType instanceof CoreBlock b ? b : (CoreBlock)Blocks.coreShard; + + loadouts.show(block, from, () -> { + from.removeItems(universe.getLastLoadout().requirements()); + from.removeItems(universe.getLaunchResources()); + + launching = true; + zoom = 0.5f; + + ui.hudfrag.showLaunchDirect(); + Time.runTask(launchDuration, () -> control.playSector(from, sector)); + }); + } + }else if(mode == select){ + listener.get(sector); + }else{ + control.playSector(sector); + } + + if(shouldHide) hide(); + } + public enum Mode{ /** Look around for existing sectors. Can only deploy. */ look, From 58c1718d01e438aab503837d12d110954edc9696 Mon Sep 17 00:00:00 2001 From: Joshua Fan Date: Sat, 5 Dec 2020 22:07:09 -0800 Subject: [PATCH 2/3] Detect double-tap --- core/assets/contributors | 1 + core/src/mindustry/ui/dialogs/PlanetDialog.java | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/core/assets/contributors b/core/assets/contributors index ae608ab089..61b6bc135b 100644 --- a/core/assets/contributors +++ b/core/assets/contributors @@ -84,6 +84,7 @@ amrsoll ねらひかだ Draco Quezler +killall -q Alicila Daniel Dusek DeltaNedas diff --git a/core/src/mindustry/ui/dialogs/PlanetDialog.java b/core/src/mindustry/ui/dialogs/PlanetDialog.java index 84fd58cc51..2e84352f57 100644 --- a/core/src/mindustry/ui/dialogs/PlanetDialog.java +++ b/core/src/mindustry/ui/dialogs/PlanetDialog.java @@ -405,6 +405,8 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ stack( new Element(){ + long tapMillis; + { //add listener to the background rect, so it doesn't get unnecessary touch input addListener(new ElementGestureListener(){ @@ -412,12 +414,13 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ public void tap(InputEvent event, float x, float y, int count, KeyCode button){ if(showing()) return; - if(selected == hovered){ + if(selected == hovered && Time.timeSinceMillis(tapMillis) < 500){ playSelected(); } if(hovered != null && (canSelect(hovered) || debugSelect)){ selected = hovered; + tapMillis = Time.millis(); } if(selected != null){ From 70cc6d07b09e7f3138f61a15be23ebd2629c28ec Mon Sep 17 00:00:00 2001 From: Joshua Fan Date: Sun, 6 Dec 2020 07:52:50 -0800 Subject: [PATCH 3/3] Detect double-tap using count --- core/src/mindustry/ui/dialogs/PlanetDialog.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/core/src/mindustry/ui/dialogs/PlanetDialog.java b/core/src/mindustry/ui/dialogs/PlanetDialog.java index 14f8b7d768..7074c89a7d 100644 --- a/core/src/mindustry/ui/dialogs/PlanetDialog.java +++ b/core/src/mindustry/ui/dialogs/PlanetDialog.java @@ -406,8 +406,6 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ stack( new Element(){ - long tapMillis; - { //add listener to the background rect, so it doesn't get unnecessary touch input addListener(new ElementGestureListener(){ @@ -415,13 +413,12 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ public void tap(InputEvent event, float x, float y, int count, KeyCode button){ if(showing()) return; - if(selected == hovered && Time.timeSinceMillis(tapMillis) < 500){ + if(selected == hovered && count == 2){ playSelected(); } if(hovered != null && (canSelect(hovered) || debugSelect)){ selected = hovered; - tapMillis = Time.millis(); } if(selected != null){