diff --git a/core/assets/baseparts/1591380533871.msch b/core/assets/baseparts/1591380533871.msch new file mode 100644 index 0000000000..aa42280794 --- /dev/null +++ b/core/assets/baseparts/1591380533871.msch @@ -0,0 +1,2 @@ +mschx%] GD4>jō5A0@xKfgi~Ts@Ka=(l]=JtbS\ />ct7'Vqwql1ؕ'*»IAA52Z4 +uQIZ%~jZ zz]'fa苡/U\, \ No newline at end of file diff --git a/core/assets/baseparts/1591380739339.msch b/core/assets/baseparts/1591380739339.msch new file mode 100644 index 0000000000..e7a245e2d7 --- /dev/null +++ b/core/assets/baseparts/1591380739339.msch @@ -0,0 +1,2 @@ +mschxA +!^r7|q]A|?c(h1excqʏ,,͝5MQ'SZq-Y@8:L"o@4' \ No newline at end of file diff --git a/core/assets/baseparts/1591381320600.msch b/core/assets/baseparts/1591381320600.msch new file mode 100644 index 0000000000..9ec53eaf98 --- /dev/null +++ b/core/assets/baseparts/1591381320600.msch @@ -0,0 +1,2 @@ +mschxE +0 `{>TA *g@.Ơ=on)v쎣 AlM,S&Ns/jO1!q` K,&[R(O6 E * ?ʻ.>hRSɖ-TQBTP5PA( \ No newline at end of file diff --git a/core/src/mindustry/core/World.java b/core/src/mindustry/core/World.java index e783073619..00dc23c333 100644 --- a/core/src/mindustry/core/World.java +++ b/core/src/mindustry/core/World.java @@ -235,6 +235,11 @@ public class World{ } }); + //postgenerate for bases + if(sector.preset == null){ + sector.planet.generator.postGenerate(tiles); + } + //reset rules setSectorRules(sector); diff --git a/core/src/mindustry/maps/generators/BaseGenerator.java b/core/src/mindustry/maps/generators/BaseGenerator.java index e508f8f493..1fd5754aa7 100644 --- a/core/src/mindustry/maps/generators/BaseGenerator.java +++ b/core/src/mindustry/maps/generators/BaseGenerator.java @@ -15,6 +15,7 @@ import mindustry.type.*; import mindustry.world.*; import mindustry.world.blocks.defense.*; import mindustry.world.blocks.environment.*; +import mindustry.world.blocks.power.*; import mindustry.world.blocks.production.*; import static mindustry.Vars.*; @@ -24,7 +25,7 @@ public class BaseGenerator{ private static final Schematic tmpSchem2 = new Schematic(new Array<>(), new StringMap(), 0, 0); private static final Vec2 axis = new Vec2(), rotator = new Vec2(); - private final static int range = 200; + private final static int range = 180; private Tiles tiles; private Team team; @@ -53,8 +54,6 @@ public class BaseGenerator{ Block wall = wallsSmall.getFrac(bracket), wallLarge = wallsLarge.getFrac(bracket); - //TODO random rotation - for(Tile tile : cores){ tile.clearOverlay(); Schematics.placeLoadout(coreschem.schematic, tile.x, tile.y, team, coreschem.requiredItem == null ? Blocks.oreCopper : ores.get(coreschem.requiredItem)); @@ -86,7 +85,7 @@ public class BaseGenerator{ boolean any = false; for(Point2 p : Geometry.d8){ - if(Angles.angleDist(Angles.angle(p.x, p.y), spawn.angleTo(tile.x, tile.y)) > wallAngle){ + if(Angles.angleDist(Angles.angle(p.x, p.y), spawn.angleTo(tile)) > wallAngle){ continue; } @@ -124,6 +123,14 @@ public class BaseGenerator{ } } + public void postGenerate(){ + for(Tile tile : tiles){ + if(tile.isCenter() && tile.block() instanceof PowerNode){ + tile.entity.placed(); + } + } + } + void pass(Cons cons){ Tile core = cores.first(); //for(Tile core : cores){ diff --git a/core/src/mindustry/maps/generators/WorldGenerator.java b/core/src/mindustry/maps/generators/WorldGenerator.java index c66138096e..71f5c23d34 100644 --- a/core/src/mindustry/maps/generators/WorldGenerator.java +++ b/core/src/mindustry/maps/generators/WorldGenerator.java @@ -4,4 +4,7 @@ import mindustry.world.*; public interface WorldGenerator{ void generate(Tiles tiles); + + /** Do not modify tiles here. This is only for specialized configuration. */ + default void postGenerate(Tiles tiles){} } diff --git a/core/src/mindustry/maps/planet/TODOPlanetGenerator.java b/core/src/mindustry/maps/planet/TODOPlanetGenerator.java index 41ca7cde2c..dc838ea5a4 100644 --- a/core/src/mindustry/maps/planet/TODOPlanetGenerator.java +++ b/core/src/mindustry/maps/planet/TODOPlanetGenerator.java @@ -17,6 +17,7 @@ import static mindustry.Vars.*; public class TODOPlanetGenerator extends PlanetGenerator{ Simplex noise = new Simplex(); RidgedPerlin rid = new RidgedPerlin(1, 2); + BaseGenerator basegen = new BaseGenerator(); float scl = 5f; float waterOffset = 0.07f; @@ -282,7 +283,7 @@ public class TODOPlanetGenerator extends PlanetGenerator{ Schematics.placeLoadout(Loadouts.advancedShard, spawn.x, spawn.y); if(sector.hasEnemyBase()){ - new BaseGenerator().generate(tiles, enemies.map(r -> tiles.getn(r.x, r.y)), tiles.get(spawn.x, spawn.y), state.rules.waveTeam, sector); + basegen.generate(tiles, enemies.map(r -> tiles.getn(r.x, r.y)), tiles.get(spawn.x, spawn.y), state.rules.waveTeam, sector); state.rules.attackMode = true; } @@ -290,4 +291,8 @@ public class TODOPlanetGenerator extends PlanetGenerator{ state.rules.waves = true; } + @Override + public void postGenerate(Tiles tiles){ + basegen.postGenerate(); + } }