diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index caa42eb78e..1ee30c7c21 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -290,6 +290,7 @@ cancelbuilding = [accent][[{0}][] to clear plan selectschematic = [accent][[{0}][] to select+copy pausebuilding = [accent][[{0}][] to pause building resumebuilding = [scarlet][[{0}][] to resume building +showui = UI hidden.\nPress [accent][[{0}][] to show UI. wave = [accent]Wave {0} wave.cap = [accent]Wave {0}/{1} wave.waiting = [lightgray]Wave in {0} diff --git a/core/assets/maps/fungalPass.msav b/core/assets/maps/fungalPass.msav index a97ca7706d..f0edb0987b 100644 Binary files a/core/assets/maps/fungalPass.msav and b/core/assets/maps/fungalPass.msav differ diff --git a/core/src/mindustry/Vars.java b/core/src/mindustry/Vars.java index 6d94538c3f..c62c621d45 100644 --- a/core/src/mindustry/Vars.java +++ b/core/src/mindustry/Vars.java @@ -389,7 +389,6 @@ public class Vars implements Loadable{ } Locale.setDefault(locale); - Core.bundle = I18NBundle.createBundle(handle, locale); //router diff --git a/core/src/mindustry/content/SectorPresets.java b/core/src/mindustry/content/SectorPresets.java index 808905f967..cacb98406c 100644 --- a/core/src/mindustry/content/SectorPresets.java +++ b/core/src/mindustry/content/SectorPresets.java @@ -58,6 +58,7 @@ public class SectorPresets implements ContentList{ fungalPass = new SectorPreset("fungalPass", serpulo, 21){{ difficulty = 4; + useAI = false; }}; overgrowth = new SectorPreset("overgrowth", serpulo, 134){{ diff --git a/core/src/mindustry/core/Logic.java b/core/src/mindustry/core/Logic.java index 85cb166237..4a5d7175af 100644 --- a/core/src/mindustry/core/Logic.java +++ b/core/src/mindustry/core/Logic.java @@ -101,9 +101,12 @@ public class Logic implements ApplicationListener{ Events.on(WorldLoadEvent.class, e -> { //enable infinite ammo for wave team by default state.rules.waveTeam.rules().infiniteAmmo = true; + if(state.isCampaign()){ - //enable building AI - state.rules.waveTeam.rules().ai = true; + //enable building AI on campaign unless the preset disables it + if(!(state.getSector().preset != null && !state.getSector().preset.useAI)){ + state.rules.waveTeam.rules().ai = true; + } state.rules.waveTeam.rules().infiniteResources = true; } diff --git a/core/src/mindustry/type/SectorPreset.java b/core/src/mindustry/type/SectorPreset.java index ab7f9b234b..997e014c63 100644 --- a/core/src/mindustry/type/SectorPreset.java +++ b/core/src/mindustry/type/SectorPreset.java @@ -15,6 +15,7 @@ public class SectorPreset extends UnlockableContent{ public int captureWave = 0; public Cons rules = rules -> rules.winWave = captureWave; + public boolean useAI = true; /** Difficulty, 0-10. */ public float difficulty; public boolean addStartingItems = false; diff --git a/core/src/mindustry/ui/fragments/HudFragment.java b/core/src/mindustry/ui/fragments/HudFragment.java index 2a6717cde4..01589c3c37 100644 --- a/core/src/mindustry/ui/fragments/HudFragment.java +++ b/core/src/mindustry/ui/fragments/HudFragment.java @@ -180,6 +180,9 @@ public class HudFragment extends Fragment{ cont.update(() -> { if(Core.input.keyTap(Binding.toggle_menus) && !ui.chatfrag.shown() && !Core.scene.hasDialog() && !(Core.scene.getKeyboardFocus() instanceof TextField)){ + Core.settings.getBoolOnce("ui-hidden", () -> { + ui.announce(Core.bundle.format("showui", Core.keybinds.get(Binding.toggle_menus).key.toString(), 10)); + }); toggleMenus(); } });