From 597d58e8434074bd869d7071ac9333ca627a0a66 Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 5 Jun 2020 14:23:57 -0400 Subject: [PATCH] Power network base support --- core/assets/baseparts/1591380533871.msch | 2 ++ core/assets/baseparts/1591380739339.msch | 2 ++ core/assets/baseparts/1591381320600.msch | 2 ++ core/src/mindustry/core/World.java | 5 +++++ .../mindustry/maps/generators/BaseGenerator.java | 15 +++++++++++---- .../mindustry/maps/generators/WorldGenerator.java | 3 +++ .../maps/planet/TODOPlanetGenerator.java | 7 ++++++- 7 files changed, 31 insertions(+), 5 deletions(-) create mode 100644 core/assets/baseparts/1591380533871.msch create mode 100644 core/assets/baseparts/1591380739339.msch create mode 100644 core/assets/baseparts/1591381320600.msch 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@Ûxù¶KÍþfgöƒ�i íŒ~ÉTs@KÉaÚÙ=(l޼]Òæ=ú™JátbÌÑS²ö\ />cÂtÄ7'âÂVô•qwqŸŸ¹l1Ø•'*â·Â»Íñ™¸IAA52Z4 +uQ²I´ZšºÚ%ºú~ÄjêþZ ˜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 @@ +mschxœŠA +!Û…À^rÈ7|”q‡]A•|?cº(h‚ƒï©1üexœcéÍqÊ�Ÿ,í»Æ,ÒãÍ�5MQ¼ç'õ’S�—–Zq–É-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 @@ +mschxœE�� +ƒ0 „¯¦þÀ`{Ž>T¦A µ–*Œ½ûÀõg°@øÂå.�Æ  =o‚n)Õãv쎣 ìÅA¯lºMü,ý“ÏSâã&ÓÊÞNìÌ­s¸/‘ÃjO1!Êq` ûK¢ñû,&�[ÀÿR Œ¤(O€®»6 EÖ * ?»Ê».¡šëº>hRSÉ–-êTQBTP5PýAÙù–Ø(¢ \ 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(); + } }