Functional presets

This commit is contained in:
Anuken
2020-05-17 13:07:46 -04:00
parent d9751dbc6d
commit 7b3a5ad227
12 changed files with 34 additions and 27 deletions
+2 -1
View File
@@ -9,7 +9,7 @@ import mindustry.type.*;
public class Planets implements ContentList{ public class Planets implements ContentList{
public static Planet public static Planet
sun, sun,
starter; starter; //TODO rename
@Override @Override
public void load(){ public void load(){
@@ -31,6 +31,7 @@ public class Planets implements ContentList{
); );
}}; }};
//TODO rename
starter = new Planet("TODO", sun, 3, 1){{ starter = new Planet("TODO", sun, 3, 1){{
generator = new TODOPlanetGenerator(); generator = new TODOPlanetGenerator();
meshLoader = () -> new HexMesh(this, 6); meshLoader = () -> new HexMesh(this, 6);
@@ -1,15 +1,13 @@
package mindustry.content; package mindustry.content;
import mindustry.ctype.*; import mindustry.ctype.*;
import mindustry.game.Objectives.*;
import mindustry.type.*; import mindustry.type.*;
import static arc.struct.Array.with; import static mindustry.content.Items.copper;
import static mindustry.content.Items.*;
import static mindustry.content.Planets.starter; import static mindustry.content.Planets.starter;
import static mindustry.type.ItemStack.list; import static mindustry.type.ItemStack.list;
public class Zones implements ContentList{ public class SectorPresets implements ContentList{
public static SectorPreset public static SectorPreset
groundZero, desertWastes, groundZero, desertWastes,
craters, frozenForest, ruinousShores, stainedMountains, tarFields, fungalPass, craters, frozenForest, ruinousShores, stainedMountains, tarFields, fungalPass,
@@ -19,7 +17,7 @@ public class Zones implements ContentList{
@Override @Override
public void load(){ public void load(){
groundZero = new SectorPreset("groundZero", starter){{ groundZero = new SectorPreset("groundZero", starter, 15){{
baseLaunchCost = list(copper, -60); baseLaunchCost = list(copper, -60);
startingItems = list(copper, 60); startingItems = list(copper, 60);
alwaysUnlocked = true; alwaysUnlocked = true;
@@ -80,6 +78,7 @@ public class Zones implements ContentList{
); );
}};*/ }};*/
/*
saltFlats = new SectorPreset("saltFlats", starter){{ saltFlats = new SectorPreset("saltFlats", starter){{
startingItems = list(copper, 200, Items.silicon, 200, lead, 200); startingItems = list(copper, 200, Items.silicon, 200, lead, 200);
loadout = Loadouts.basicFoundation; loadout = Loadouts.basicFoundation;
@@ -194,7 +193,7 @@ public class Zones implements ContentList{
); );
}}; }};
/*
crags = new Zone("crags", new MapGenerator("crags").dist(2f)){{ crags = new Zone("crags", new MapGenerator("crags").dist(2f)){{
loadout = Loadouts.basicFoundation; loadout = Loadouts.basicFoundation;
baseLaunchCost = ItemStack.with(); baseLaunchCost = ItemStack.with();
@@ -204,7 +203,7 @@ public class Zones implements ContentList{
requirements = with(stainedMountains, 40); requirements = with(stainedMountains, 40);
blockRequirements = new Block[]{Blocks.thermalGenerator}; blockRequirements = new Block[]{Blocks.thermalGenerator};
resources = Array.with(Items.copper, Items.scrap, Items.lead, Items.coal, Items.sand}; resources = Array.with(Items.copper, Items.scrap, Items.lead, Items.coal, Items.sand};
}};*/ }};
nuclearComplex = new SectorPreset("nuclearComplex", starter){{ nuclearComplex = new SectorPreset("nuclearComplex", starter){{
loadout = Loadouts.basicNucleus; loadout = Loadouts.basicNucleus;
@@ -218,7 +217,7 @@ public class Zones implements ContentList{
); );
}}; }};
/*
impact0078 = new SectorPreset("impact0078"){{ impact0078 = new SectorPreset("impact0078"){{
loadout = Loadouts.basicNucleus; loadout = Loadouts.basicNucleus;
baseLaunchCost = ItemStack.list(); baseLaunchCost = ItemStack.list();
+2 -2
View File
@@ -40,7 +40,7 @@ public class ContentLoader{
new TechTree(), new TechTree(),
new Weathers(), new Weathers(),
new Planets(), new Planets(),
new Zones() new SectorPresets()
}; };
public ContentLoader(){ public ContentLoader(){
@@ -267,7 +267,7 @@ public class ContentLoader{
} }
public Array<SectorPreset> zones(){ public Array<SectorPreset> zones(){
return getBy(ContentType.zone); return getBy(ContentType.sector);
} }
public Array<UnitType> units(){ public Array<UnitType> units(){
+1
View File
@@ -427,6 +427,7 @@ public class World{
} }
private class Context implements WorldContext{ private class Context implements WorldContext{
@Override @Override
public Tile tile(int index){ public Tile tile(int index){
return tiles.geti(index); return tiles.geti(index);
+1 -1
View File
@@ -11,7 +11,7 @@ public enum ContentType{
unit, unit,
weather, weather,
effect_UNUSED, effect_UNUSED,
zone, sector,
loadout_UNUSED, loadout_UNUSED,
typeid_UNUSED, typeid_UNUSED,
error, error,
+1 -1
View File
@@ -91,7 +91,7 @@ public class JsonIO{
@Override @Override
public SectorPreset read(Json json, JsonValue jsonData, Class type){ 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());
} }
}); });
@@ -22,9 +22,10 @@ public class FileMapGenerator implements WorldGenerator{
@Override @Override
public void generate(Tiles tiles){ public void generate(Tiles tiles){
tiles.fill();
SaveIO.load(map.file); SaveIO.load(map.file);
world.beginMapLoad();
tiles = world.tiles;
for(Tile tile : tiles){ for(Tile tile : tiles){
if(tile.block() instanceof StorageBlock && !(tile.block() instanceof CoreBlock) && state.hasSector()){ if(tile.block() instanceof StorageBlock && !(tile.block() instanceof CoreBlock) && state.hasSector()){
@@ -39,6 +40,7 @@ public class FileMapGenerator implements WorldGenerator{
boolean anyCores = false; boolean anyCores = false;
for(Tile tile : tiles){ for(Tile tile : tiles){
if(tile.overlay() == Blocks.spawn){ if(tile.overlay() == Blocks.spawn){
int rad = 10; int rad = 10;
Geometry.circle(tile.x, tile.y, tiles.width, tiles.height, rad, (wx, wy) -> { 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 //TODO PLACE THE (CORRECT) LOADOUT
Schematics.placeLoadout(Loadouts.basicFoundation, tile.x, tile.y); Schematics.placeLoadout(Loadouts.basicShard, tile.x, tile.y);
anyCores = true; anyCores = true;
} }
} }
if(!anyCores){ if(!anyCores){
throw new IllegalArgumentException("All zone maps must have a core."); throw new IllegalArgumentException("All maps must have a core.");
} }
state.map = map; state.map = map;
@@ -1,7 +1,7 @@
package mindustry.maps.generators; package mindustry.maps.generators;
import arc.math.geom.*; import arc.math.geom.*;
import mindustry.graphics.g3d.HexMesher; import mindustry.graphics.g3d.*;
import mindustry.type.*; import mindustry.type.*;
import mindustry.world.*; import mindustry.world.*;
@@ -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.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.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.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.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.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.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.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}, {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},
+2 -2
View File
@@ -291,8 +291,8 @@ public class ContentParser{
return unit; return unit;
}, },
ContentType.item, parser(ContentType.item, Item::new), ContentType.item, parser(ContentType.item, Item::new),
ContentType.liquid, parser(ContentType.liquid, Liquid::new), ContentType.liquid, parser(ContentType.liquid, Liquid::new)
ContentType.zone, parser(ContentType.zone, SectorPreset::new) //ContentType.sector, parser(ContentType.sector, SectorPreset::new)
); );
private String getString(JsonValue value, String key){ private String getString(JsonValue value, String key){
+7 -3
View File
@@ -31,15 +31,19 @@ public class SectorPreset extends UnlockableContent{
protected Array<ItemStack> launchCost; protected Array<ItemStack> launchCost;
protected Array<ItemStack> defaultStartingItems = new Array<>(); protected Array<ItemStack> defaultStartingItems = new Array<>();
public SectorPreset(String name, Planet planet){ public SectorPreset(String name, Planet planet, int sector){
super(name); super(name);
this.generator = new FileMapGenerator(name); this.generator = new FileMapGenerator(name);
this.planet = planet; this.planet = planet;
planet.preset(sector, this);
} }
//TODO
/*
public SectorPreset(String name){ public SectorPreset(String name){
this(name, Planets.starter); this(name, Planets.starter);
} }*/
public Rules getRules(){ public Rules getRules(){
return generator.map.rules(); return generator.map.rules();
@@ -181,7 +185,7 @@ public class SectorPreset extends UnlockableContent{
@Override @Override
public ContentType getContentType(){ public ContentType getContentType(){
return ContentType.zone; return ContentType.sector;
} }
} }
@@ -348,7 +348,7 @@ public class PlanetDialog extends FloatingDialog{
//TODO add strings to bundle after prototyping is done //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.image().color(Pal.accent).fillX().height(3f).pad(3f).row();
stable.add(selected.save != null ? selected.save.getPlayTime() : "[lightgray]Unexplored").row(); stable.add(selected.save != null ? selected.save.getPlayTime() : "[lightgray]Unexplored").row();