From 1372fc4079a556e3b20b0dffa326fa4574129864 Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 20 Nov 2020 12:38:16 -0500 Subject: [PATCH] Fixed sector gameover ghost bug --- android/build.gradle | 2 +- build.gradle | 11 +++++++++++ core/assets/bundles/bundle.properties | 1 + core/src/mindustry/core/GameState.java | 2 +- core/src/mindustry/type/Sector.java | 2 +- core/src/mindustry/ui/dialogs/GameOverDialog.java | 4 ++-- core/src/mindustry/ui/dialogs/PlanetDialog.java | 3 ++- core/src/mindustry/ui/fragments/HudFragment.java | 2 +- 8 files changed, 20 insertions(+), 7 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index 604676b5708..4fe5258d463 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -35,7 +35,7 @@ dependencies{ natives "com.github.Anuken.Arc:natives-box2d-android:${getArcHash()}" //android dependencies magically disappear during compilation, thanks gradle! - def sdkFile = new File((String)System.getenv("ANDROID_HOME"), "/platforms/android-29/android.jar") + def sdkFile = new File((String)findSdkDir(), "/platforms/android-29/android.jar") if(sdkFile.exists()) compileOnly files(sdkFile.absolutePath) } diff --git a/build.gradle b/build.gradle index c32278755c2..5adc73c9eeb 100644 --- a/build.gradle +++ b/build.gradle @@ -99,6 +99,17 @@ allprojects{ return project.ext.mainClassName.substring(0, project.ext.mainClassName.indexOf("desktop") - 1) } + findSdkDir = { + //null because IntelliJ doesn't get env variables + def v = System.getenv("ANDROID_HOME") + if(v != null) return v + //rootDir is null here, amazing. brilliant. + def file = new File("local.properties") + if(!file.exists()) file = new File("../local.properties") + def props = new Properties().with{p -> p.load(file.newReader()); return p } + return props.get("sdk.dir") + } + generateLocales = { def output = 'en\n' def bundles = new File(project(':core').projectDir, 'assets/bundles/') diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 961bfc2e717..0a17beb7545 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -549,6 +549,7 @@ sectors.nonelaunch = [lightgray]none (sun) sectors.rename = Rename Sector sector.curcapture = Sector Captured +sector.curlost = Sector Lost sector.missingresources = [scarlet]Insufficient Core Resources sector.attacked = Sector [accent]{0}[white] under attack! sector.lost = Sector [accent]{0}[white] lost! diff --git a/core/src/mindustry/core/GameState.java b/core/src/mindustry/core/GameState.java index 219e4acfb9d..3eed5e01648 100644 --- a/core/src/mindustry/core/GameState.java +++ b/core/src/mindustry/core/GameState.java @@ -69,7 +69,7 @@ public boolean isEditor(){ } public boolean isPaused(){ - return (is(State.paused) && !net.active()) || (gameOver && !net.active()) || (serverPaused && !isMenu()); + return (is(State.paused) && !net.active()) || (gameOver && (!net.active() || isCampaign())) || (serverPaused && !isMenu()); } public boolean isPlaying(){ diff --git a/core/src/mindustry/type/Sector.java b/core/src/mindustry/type/Sector.java index c38d3c6b041..e923468c30f 100644 --- a/core/src/mindustry/type/Sector.java +++ b/core/src/mindustry/type/Sector.java @@ -98,7 +98,7 @@ public boolean isAttacked(){ /** @return whether the player has a base here. */ public boolean hasBase(){ - return save != null && info.hasCore; + return save != null && info.hasCore && !(Vars.state.isGame() && Vars.state.rules.sector == this && state.gameOver); } /** @return whether the enemy has a generated base here. */ diff --git a/core/src/mindustry/ui/dialogs/GameOverDialog.java b/core/src/mindustry/ui/dialogs/GameOverDialog.java index 4c704f4f8ed..8c69756a3c8 100644 --- a/core/src/mindustry/ui/dialogs/GameOverDialog.java +++ b/core/src/mindustry/ui/dialogs/GameOverDialog.java @@ -31,13 +31,13 @@ public void show(Team winner){ } void rebuild(){ - title.setText("@gameover"); + title.setText(state.isCampaign() ? "@sector.curlost" : "@gameover"); buttons.clear(); cont.clear(); buttons.margin(10); - if(state.rules.pvp){ + if(state.rules.pvp && winner != null){ cont.add(Core.bundle.format("gameover.pvp", winner.localized())).pad(6); buttons.button("@menu", () -> { hide(); diff --git a/core/src/mindustry/ui/dialogs/PlanetDialog.java b/core/src/mindustry/ui/dialogs/PlanetDialog.java index ba3ac6c6b36..76745a97b0e 100644 --- a/core/src/mindustry/ui/dialogs/PlanetDialog.java +++ b/core/src/mindustry/ui/dialogs/PlanetDialog.java @@ -239,6 +239,7 @@ boolean canSelect(Sector sector){ } Sector findLauncher(Sector to){ + Sector launchSector = this.launchSector != null && this.launchSector.hasBase() ? this.launchSector : null; //directly nearby. if(to.near().contains(launchSector)) return launchSector; @@ -711,7 +712,7 @@ void updateSelected(){ if((sector.hasBase() && mode == look) || canSelect(sector) || (sector.preset != null && sector.preset.alwaysUnlocked) || debugSelect){ stable.button(mode == select ? "@sectors.select" : sector.hasBase() ? "@sectors.resume" : "@sectors.launch", Icon.play, () -> { - if(state.rules.sector == sector && !state.isMenu()){ + if(sector.isBeingPlayed()){ //already at this sector hide(); return; diff --git a/core/src/mindustry/ui/fragments/HudFragment.java b/core/src/mindustry/ui/fragments/HudFragment.java index fefaf67f422..65c0892398c 100644 --- a/core/src/mindustry/ui/fragments/HudFragment.java +++ b/core/src/mindustry/ui/fragments/HudFragment.java @@ -90,7 +90,7 @@ public void build(Group parent){ parent.fill(t -> { t.name = "paused"; t.top().visible(() -> state.isPaused() && shown).touchable = Touchable.disabled; - t.table(Styles.black5, top -> top.add("@paused").style(Styles.outlineLabel).pad(8f)).growX(); + t.table(Styles.black5, top -> top.label(() -> state.gameOver && state.isCampaign() ? "@sector.curlost" : "@paused").style(Styles.outlineLabel).pad(8f)).growX(); }); //minimap + position