From 7b3a5ad22742d9e250d2c4f75ef9adf1b48b21c9 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 17 May 2020 13:07:46 -0400 Subject: [PATCH] Functional presets --- core/src/mindustry/content/Planets.java | 3 ++- .../content/{Zones.java => SectorPresets.java} | 15 +++++++-------- core/src/mindustry/core/ContentLoader.java | 4 ++-- core/src/mindustry/core/World.java | 1 + core/src/mindustry/ctype/ContentType.java | 2 +- core/src/mindustry/io/JsonIO.java | 2 +- .../maps/generators/FileMapGenerator.java | 12 +++++++----- .../maps/generators/PlanetGenerator.java | 2 +- .../maps/planet/TODOPlanetGenerator.java | 4 ++-- core/src/mindustry/mod/ContentParser.java | 4 ++-- core/src/mindustry/type/SectorPreset.java | 10 +++++++--- core/src/mindustry/ui/dialogs/PlanetDialog.java | 2 +- 12 files changed, 34 insertions(+), 27 deletions(-) rename core/src/mindustry/content/{Zones.java => SectorPresets.java} (97%) diff --git a/core/src/mindustry/content/Planets.java b/core/src/mindustry/content/Planets.java index 04371e86f1..e04c4bed27 100644 --- a/core/src/mindustry/content/Planets.java +++ b/core/src/mindustry/content/Planets.java @@ -9,7 +9,7 @@ import mindustry.type.*; public class Planets implements ContentList{ public static Planet sun, - starter; + starter; //TODO rename @Override public void load(){ @@ -31,6 +31,7 @@ public class Planets implements ContentList{ ); }}; + //TODO rename starter = new Planet("TODO", sun, 3, 1){{ generator = new TODOPlanetGenerator(); meshLoader = () -> new HexMesh(this, 6); diff --git a/core/src/mindustry/content/Zones.java b/core/src/mindustry/content/SectorPresets.java similarity index 97% rename from core/src/mindustry/content/Zones.java rename to core/src/mindustry/content/SectorPresets.java index decfb74554..b47176592a 100644 --- a/core/src/mindustry/content/Zones.java +++ b/core/src/mindustry/content/SectorPresets.java @@ -1,15 +1,13 @@ package mindustry.content; import mindustry.ctype.*; -import mindustry.game.Objectives.*; import mindustry.type.*; -import static arc.struct.Array.with; -import static mindustry.content.Items.*; +import static mindustry.content.Items.copper; import static mindustry.content.Planets.starter; import static mindustry.type.ItemStack.list; -public class Zones implements ContentList{ +public class SectorPresets implements ContentList{ public static SectorPreset groundZero, desertWastes, craters, frozenForest, ruinousShores, stainedMountains, tarFields, fungalPass, @@ -19,7 +17,7 @@ public class Zones implements ContentList{ @Override public void load(){ - groundZero = new SectorPreset("groundZero", starter){{ + groundZero = new SectorPreset("groundZero", starter, 15){{ baseLaunchCost = list(copper, -60); startingItems = list(copper, 60); alwaysUnlocked = true; @@ -80,6 +78,7 @@ public class Zones implements ContentList{ ); }};*/ + /* saltFlats = new SectorPreset("saltFlats", starter){{ startingItems = list(copper, 200, Items.silicon, 200, lead, 200); loadout = Loadouts.basicFoundation; @@ -194,7 +193,7 @@ public class Zones implements ContentList{ ); }}; - /* + crags = new Zone("crags", new MapGenerator("crags").dist(2f)){{ loadout = Loadouts.basicFoundation; baseLaunchCost = ItemStack.with(); @@ -204,7 +203,7 @@ public class Zones implements ContentList{ requirements = with(stainedMountains, 40); blockRequirements = new Block[]{Blocks.thermalGenerator}; resources = Array.with(Items.copper, Items.scrap, Items.lead, Items.coal, Items.sand}; - }};*/ + }}; nuclearComplex = new SectorPreset("nuclearComplex", starter){{ loadout = Loadouts.basicNucleus; @@ -218,7 +217,7 @@ public class Zones implements ContentList{ ); }}; - /* + impact0078 = new SectorPreset("impact0078"){{ loadout = Loadouts.basicNucleus; baseLaunchCost = ItemStack.list(); diff --git a/core/src/mindustry/core/ContentLoader.java b/core/src/mindustry/core/ContentLoader.java index f08d00a906..12cd8617f4 100644 --- a/core/src/mindustry/core/ContentLoader.java +++ b/core/src/mindustry/core/ContentLoader.java @@ -40,7 +40,7 @@ public class ContentLoader{ new TechTree(), new Weathers(), new Planets(), - new Zones() + new SectorPresets() }; public ContentLoader(){ @@ -267,7 +267,7 @@ public class ContentLoader{ } public Array zones(){ - return getBy(ContentType.zone); + return getBy(ContentType.sector); } public Array units(){ diff --git a/core/src/mindustry/core/World.java b/core/src/mindustry/core/World.java index 8103418fd9..3c7be3c4e5 100644 --- a/core/src/mindustry/core/World.java +++ b/core/src/mindustry/core/World.java @@ -427,6 +427,7 @@ public class World{ } private class Context implements WorldContext{ + @Override public Tile tile(int index){ return tiles.geti(index); diff --git a/core/src/mindustry/ctype/ContentType.java b/core/src/mindustry/ctype/ContentType.java index 2c8faaa1ff..bc147d8c81 100644 --- a/core/src/mindustry/ctype/ContentType.java +++ b/core/src/mindustry/ctype/ContentType.java @@ -11,7 +11,7 @@ public enum ContentType{ unit, weather, effect_UNUSED, - zone, + sector, loadout_UNUSED, typeid_UNUSED, error, diff --git a/core/src/mindustry/io/JsonIO.java b/core/src/mindustry/io/JsonIO.java index 9809effd95..095637536d 100644 --- a/core/src/mindustry/io/JsonIO.java +++ b/core/src/mindustry/io/JsonIO.java @@ -91,7 +91,7 @@ public class JsonIO{ @Override public SectorPreset read(Json json, JsonValue jsonData, Class type){ - return Vars.content.getByName(ContentType.zone, jsonData.asString()); + return Vars.content.getByName(ContentType.sector, jsonData.asString()); } }); diff --git a/core/src/mindustry/maps/generators/FileMapGenerator.java b/core/src/mindustry/maps/generators/FileMapGenerator.java index 78592073ce..0f319a037e 100644 --- a/core/src/mindustry/maps/generators/FileMapGenerator.java +++ b/core/src/mindustry/maps/generators/FileMapGenerator.java @@ -22,9 +22,10 @@ public class FileMapGenerator implements WorldGenerator{ @Override public void generate(Tiles tiles){ - tiles.fill(); - SaveIO.load(map.file); + world.beginMapLoad(); + + tiles = world.tiles; for(Tile tile : tiles){ if(tile.block() instanceof StorageBlock && !(tile.block() instanceof CoreBlock) && state.hasSector()){ @@ -39,6 +40,7 @@ public class FileMapGenerator implements WorldGenerator{ boolean anyCores = false; for(Tile tile : tiles){ + if(tile.overlay() == Blocks.spawn){ int rad = 10; Geometry.circle(tile.x, tile.y, tiles.width, tiles.height, rad, (wx, wy) -> { @@ -48,15 +50,15 @@ public class FileMapGenerator implements WorldGenerator{ }); } - if(tile.block() instanceof CoreBlock && tile.team() == state.rules.defaultTeam){ + if(tile.block() instanceof CoreBlock && tile.team() == state.rules.defaultTeam && !anyCores){ //TODO PLACE THE (CORRECT) LOADOUT - Schematics.placeLoadout(Loadouts.basicFoundation, tile.x, tile.y); + Schematics.placeLoadout(Loadouts.basicShard, tile.x, tile.y); anyCores = true; } } if(!anyCores){ - throw new IllegalArgumentException("All zone maps must have a core."); + throw new IllegalArgumentException("All maps must have a core."); } state.map = map; diff --git a/core/src/mindustry/maps/generators/PlanetGenerator.java b/core/src/mindustry/maps/generators/PlanetGenerator.java index 8dfd297197..132eaf9ae0 100644 --- a/core/src/mindustry/maps/generators/PlanetGenerator.java +++ b/core/src/mindustry/maps/generators/PlanetGenerator.java @@ -1,7 +1,7 @@ package mindustry.maps.generators; import arc.math.geom.*; -import mindustry.graphics.g3d.HexMesher; +import mindustry.graphics.g3d.*; import mindustry.type.*; import mindustry.world.*; diff --git a/core/src/mindustry/maps/planet/TODOPlanetGenerator.java b/core/src/mindustry/maps/planet/TODOPlanetGenerator.java index 3528b2380a..b8a2f7a0f9 100644 --- a/core/src/mindustry/maps/planet/TODOPlanetGenerator.java +++ b/core/src/mindustry/maps/planet/TODOPlanetGenerator.java @@ -24,10 +24,10 @@ public class TODOPlanetGenerator extends PlanetGenerator{ {Blocks.water, Blocks.darksandWater, Blocks.darksand, Blocks.darksand, Blocks.sand, Blocks.sand, Blocks.sand, Blocks.sand, Blocks.sand, Blocks.darksandTaintedWater, Blocks.snow, Blocks.snow, Blocks.ice}, {Blocks.water, Blocks.darksandWater, Blocks.darksand, Blocks.sand, Blocks.salt, Blocks.sand, Blocks.sand, Blocks.sand, Blocks.sand, Blocks.darksandTaintedWater, Blocks.snow, Blocks.ice, Blocks.ice}, {Blocks.water, Blocks.sandWater, Blocks.sand, Blocks.salt, Blocks.salt, Blocks.salt, Blocks.sand, Blocks.sand, Blocks.iceSnow, Blocks.snow, Blocks.snow, Blocks.ice, Blocks.ice}, - {Blocks.deepwater, Blocks.water, Blocks.sandWater, Blocks.sand, Blocks.salt, Blocks.sand, Blocks.sand, Blocks.moss, Blocks.snow, Blocks.snow, Blocks.snow, Blocks.snow, Blocks.ice}, + {Blocks.deepwater, Blocks.water, Blocks.sandWater, Blocks.sand, Blocks.salt, Blocks.sand, Blocks.sand, Blocks.ignarock, Blocks.snow, Blocks.snow, Blocks.snow, Blocks.snow, Blocks.ice}, {Blocks.deepwater, Blocks.water, Blocks.sandWater, Blocks.sand, Blocks.sand, Blocks.sand, Blocks.moss, Blocks.iceSnow, Blocks.snow, Blocks.snow, Blocks.ice, Blocks.snow, Blocks.ice}, {Blocks.deepwater, Blocks.sandWater, Blocks.sand, Blocks.sand, Blocks.moss, Blocks.moss, Blocks.moss, Blocks.snow, Blocks.snow, Blocks.ice, Blocks.ice, Blocks.snow, Blocks.ice}, - {Blocks.taintedWater, Blocks.darksandTaintedWater, Blocks.darksand, Blocks.darksand, Blocks.darksandTaintedWater, Blocks.moss, Blocks.snow, Blocks.snow, Blocks.snow, Blocks.ice, Blocks.snow, Blocks.ice, Blocks.ice}, + {Blocks.taintedWater, Blocks.darksandTaintedWater, Blocks.darksand, Blocks.darksand, Blocks.ignarock, Blocks.moss, Blocks.snow, Blocks.snow, Blocks.snow, Blocks.ice, Blocks.snow, Blocks.ice, Blocks.ice}, {Blocks.darksandWater, Blocks.darksand, Blocks.darksand, Blocks.darksand, Blocks.moss, Blocks.sporeMoss, Blocks.snow, Blocks.snow, Blocks.snow, Blocks.snow, Blocks.snow, Blocks.ice, Blocks.ice}, {Blocks.darksandWater, Blocks.darksand, Blocks.darksand, Blocks.sporeMoss, Blocks.ice, Blocks.ice, Blocks.snow, Blocks.snow, Blocks.snow, Blocks.snow, Blocks.ice, Blocks.ice, Blocks.ice}, {Blocks.taintedWater, Blocks.darksandTaintedWater, Blocks.darksand, Blocks.sporeMoss, Blocks.sporeMoss, Blocks.ice, Blocks.ice, Blocks.snow, Blocks.snow, Blocks.ice, Blocks.ice, Blocks.ice, Blocks.ice}, diff --git a/core/src/mindustry/mod/ContentParser.java b/core/src/mindustry/mod/ContentParser.java index 79695a181e..b26cf3f4f5 100644 --- a/core/src/mindustry/mod/ContentParser.java +++ b/core/src/mindustry/mod/ContentParser.java @@ -291,8 +291,8 @@ public class ContentParser{ return unit; }, ContentType.item, parser(ContentType.item, Item::new), - ContentType.liquid, parser(ContentType.liquid, Liquid::new), - ContentType.zone, parser(ContentType.zone, SectorPreset::new) + ContentType.liquid, parser(ContentType.liquid, Liquid::new) + //ContentType.sector, parser(ContentType.sector, SectorPreset::new) ); private String getString(JsonValue value, String key){ diff --git a/core/src/mindustry/type/SectorPreset.java b/core/src/mindustry/type/SectorPreset.java index 33bca1f802..de02361a78 100644 --- a/core/src/mindustry/type/SectorPreset.java +++ b/core/src/mindustry/type/SectorPreset.java @@ -31,15 +31,19 @@ public class SectorPreset extends UnlockableContent{ protected Array launchCost; protected Array defaultStartingItems = new Array<>(); - public SectorPreset(String name, Planet planet){ + public SectorPreset(String name, Planet planet, int sector){ super(name); this.generator = new FileMapGenerator(name); this.planet = planet; + + planet.preset(sector, this); } + //TODO + /* public SectorPreset(String name){ this(name, Planets.starter); - } + }*/ public Rules getRules(){ return generator.map.rules(); @@ -181,7 +185,7 @@ public class SectorPreset extends UnlockableContent{ @Override public ContentType getContentType(){ - return ContentType.zone; + return ContentType.sector; } } diff --git a/core/src/mindustry/ui/dialogs/PlanetDialog.java b/core/src/mindustry/ui/dialogs/PlanetDialog.java index 14b1c18c7a..eb60f86a09 100644 --- a/core/src/mindustry/ui/dialogs/PlanetDialog.java +++ b/core/src/mindustry/ui/dialogs/PlanetDialog.java @@ -348,7 +348,7 @@ public class PlanetDialog extends FloatingDialog{ //TODO add strings to bundle after prototyping is done - stable.add("[accent]" + selected.id).row(); + stable.add("[accent]" + (selected.preset == null ? selected.id : selected.preset.localizedName)).row(); stable.image().color(Pal.accent).fillX().height(3f).pad(3f).row(); stable.add(selected.save != null ? selected.save.getPlayTime() : "[lightgray]Unexplored").row();