From 7bd05ad9ad32f02013f9a4846cad2be1ffb1b3e7 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 15 Nov 2020 17:11:52 -0500 Subject: [PATCH] New campaign map / Fixed #3414 --- .../src/mindustry/android/AndroidLauncher.java | 2 +- core/assets/bundles/bundle.properties | 1 + core/assets/maps/crags.msav | Bin 15772 -> 0 bytes core/assets/maps/extractionOutpost.msav | Bin 0 -> 19511 bytes core/src/mindustry/ai/BaseAI.java | 2 +- core/src/mindustry/content/SectorPresets.java | 9 +++++++-- core/src/mindustry/content/TechTree.java | 13 ++++++++++++- core/src/mindustry/game/Rules.java | 2 +- core/src/mindustry/mod/ContentParser.java | 4 +++- .../src/mindustry/ui/fragments/HudFragment.java | 2 +- 10 files changed, 27 insertions(+), 8 deletions(-) delete mode 100644 core/assets/maps/crags.msav create mode 100644 core/assets/maps/extractionOutpost.msav diff --git a/android/src/mindustry/android/AndroidLauncher.java b/android/src/mindustry/android/AndroidLauncher.java index 6e3a05c11d..d558e2542b 100644 --- a/android/src/mindustry/android/AndroidLauncher.java +++ b/android/src/mindustry/android/AndroidLauncher.java @@ -145,7 +145,7 @@ public class AndroidLauncher extends AndroidApplication{ @Override public void showMultiFileChooser(Cons cons, String... extensions){ - showFileChooser(true, cons, extensions); + showFileChooser(true, "@open", cons, extensions); } @Override diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 1ee30c7c21..c72baca84d 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -566,6 +566,7 @@ sector.saltFlats.name = Salt Flats sector.fungalPass.name = Fungal Pass sector.biomassFacility.name = Biomass Synthesis Facility sector.windsweptIslands.name = Windswept Islands +sector.extractionOutpost.name = Extraction Outpost #unused #sector.crags.name = Crags diff --git a/core/assets/maps/crags.msav b/core/assets/maps/crags.msav deleted file mode 100644 index 1fb64c01e77cc02b82c8f45be2cc8683c425e0d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15772 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 L{xg<;`dR@16qu`5 literal 0 HcmV?d00001 diff --git a/core/src/mindustry/ai/BaseAI.java b/core/src/mindustry/ai/BaseAI.java index 2c1fb11617..a4fb6404e9 100644 --- a/core/src/mindustry/ai/BaseAI.java +++ b/core/src/mindustry/ai/BaseAI.java @@ -54,7 +54,7 @@ public class BaseAI{ } //only schedule when there's something to build. - if(data.blocks.isEmpty() && timer.get(timerStep, step)){ + if(data.blocks.isEmpty() && timer.get(timerStep, Mathf.lerp(20f, 4f, data.team.rules().aiTier))){ if(!triedWalls){ tryWalls(); triedWalls = true; diff --git a/core/src/mindustry/content/SectorPresets.java b/core/src/mindustry/content/SectorPresets.java index cacb98406c..52b96e66bf 100644 --- a/core/src/mindustry/content/SectorPresets.java +++ b/core/src/mindustry/content/SectorPresets.java @@ -8,8 +8,8 @@ import static mindustry.content.Planets.*; public class SectorPresets implements ContentList{ public static SectorPreset groundZero, - craters, biomassFacility, frozenForest, ruinousShores, windsweptIslands, stainedMountains, tarFields, fungalPass, - saltFlats, overgrowth, + craters, biomassFacility, frozenForest, ruinousShores, windsweptIslands, stainedMountains, tarFields, + fungalPass, extractionOutpost, saltFlats, overgrowth, impact0078, desolateRift, nuclearComplex; @Override @@ -56,6 +56,11 @@ public class SectorPresets implements ContentList{ difficulty = 3; }}; + extractionOutpost = new SectorPreset("extractionOutpost", serpulo, 165){{ + difficulty = 5; + useAI = false; + }}; + fungalPass = new SectorPreset("fungalPass", serpulo, 21){{ difficulty = 4; useAI = false; diff --git a/core/src/mindustry/content/TechTree.java b/core/src/mindustry/content/TechTree.java index e1873a4c6b..ad9603ecd5 100644 --- a/core/src/mindustry/content/TechTree.java +++ b/core/src/mindustry/content/TechTree.java @@ -29,7 +29,7 @@ public class TechTree implements ContentList{ node(junction, () -> { node(router, () -> { - node(launchPad, () -> { + node(launchPad, Seq.with(new SectorComplete(extractionOutpost)), () -> { }); node(distributor); @@ -473,6 +473,17 @@ public class TechTree implements ContentList{ }); }); + node(extractionOutpost, Seq.with( + new SectorComplete(stainedMountains), + new SectorComplete(windsweptIslands), + new Research(groundFactory), + new Research(nova), + new Research(airFactory), + new Research(mono) + ), () -> { + + }); + node(saltFlats, Seq.with( new SectorComplete(windsweptIslands), new Research(groundFactory), diff --git a/core/src/mindustry/game/Rules.java b/core/src/mindustry/game/Rules.java index 2a927cc59b..3f9e104a68 100644 --- a/core/src/mindustry/game/Rules.java +++ b/core/src/mindustry/game/Rules.java @@ -105,7 +105,7 @@ public class Rules{ /** Whether to use building AI. */ public boolean ai; /** TODO Tier of blocks/designs that the AI uses for building. [0, 1]*/ - public float aiTier = 0f; + public float aiTier = 1f; /** Whether, when AI is enabled, ships should be spawned from the core. */ public boolean aiCoreSpawn = true; /** If true, blocks don't require power or resources. */ diff --git a/core/src/mindustry/mod/ContentParser.java b/core/src/mindustry/mod/ContentParser.java index 472b5acdaa..153981ed98 100644 --- a/core/src/mindustry/mod/ContentParser.java +++ b/core/src/mindustry/mod/ContentParser.java @@ -43,6 +43,7 @@ public class ContentParser{ private static final boolean ignoreUnknownFields = true; ObjectMap, ContentType> contentTypes = new ObjectMap<>(); ObjectSet> implicitNullable = ObjectSet.with(TextureRegion.class, TextureRegion[].class, TextureRegion[][].class); + ObjectMap sounds = new ObjectMap<>(); ObjectMap, FieldParser> classParsers = new ObjectMap<>(){{ put(Effect.class, (type, data) -> { @@ -96,10 +97,11 @@ public class ContentParser{ String name = "sounds/" + data.asString(); String path = Vars.tree.get(name + ".ogg").exists() ? name + ".ogg" : name + ".mp3"; - if(Core.assets.contains(path, Sound.class)) return Core.assets.get(path, Sound.class); + if(sounds.containsKey(path)) return ((SoundParameter)sounds.get(path).params).sound; var sound = new Sound(); AssetDescriptor desc = Core.assets.load(path, Sound.class, new SoundParameter(sound)); desc.errored = Throwable::printStackTrace; + sounds.put(path, desc); return sound; }); put(Objectives.Objective.class, (type, data) -> { diff --git a/core/src/mindustry/ui/fragments/HudFragment.java b/core/src/mindustry/ui/fragments/HudFragment.java index 01589c3c37..3fe5148b45 100644 --- a/core/src/mindustry/ui/fragments/HudFragment.java +++ b/core/src/mindustry/ui/fragments/HudFragment.java @@ -181,7 +181,7 @@ 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)); + ui.announce(Core.bundle.format("showui", Core.keybinds.get(Binding.toggle_menus).key.toString(), 11)); }); toggleMenus(); }