diff --git a/core/src/io/anuke/mindustry/ai/Pathfinder.java b/core/src/io/anuke/mindustry/ai/Pathfinder.java index 0e141cca5d..a00a7e756d 100644 --- a/core/src/io/anuke/mindustry/ai/Pathfinder.java +++ b/core/src/io/anuke/mindustry/ai/Pathfinder.java @@ -40,6 +40,10 @@ public class Pathfinder{ }); } + public void activateTeamPath(Team team){ + createFor(team); + } + public void update(){ if(Net.client()) return; diff --git a/core/src/io/anuke/mindustry/game/Waves.java b/core/src/io/anuke/mindustry/game/Waves.java index 6917ed4f1e..4da4c37701 100644 --- a/core/src/io/anuke/mindustry/game/Waves.java +++ b/core/src/io/anuke/mindustry/game/Waves.java @@ -13,7 +13,7 @@ public class Waves{ return Array.with( new SpawnGroup(UnitTypes.dagger){{ end = 8; - unitScaling = 1; + unitScaling = 3; }}, new SpawnGroup(UnitTypes.wraith){{ diff --git a/core/src/io/anuke/mindustry/maps/Sectors.java b/core/src/io/anuke/mindustry/maps/Sectors.java index 9578973571..2c0d3a2fa4 100644 --- a/core/src/io/anuke/mindustry/maps/Sectors.java +++ b/core/src/io/anuke/mindustry/maps/Sectors.java @@ -270,6 +270,8 @@ public class Sectors{ : new BattleMission()); } + sector.spawns = new Array<>(); + for(Mission mission : sector.missions){ sector.spawns.addAll(mission.getWaves(sector)); } @@ -296,6 +298,7 @@ public class Sectors{ if(headless) return; //obviously not created or needed on server Pixmap pixmap = new Pixmap(sectorImageSize * sector.width, sectorImageSize * sector.height, Format.RGBA8888); + GenResult secResult = new GenResult(); for(int x = 0; x < pixmap.getWidth(); x++){ for(int y = 0; y < pixmap.getHeight(); y++){ @@ -303,8 +306,9 @@ public class Sectors{ int toY = y * sectorSize / sectorImageSize; GenResult result = world.generator().generateTile(sector.x, sector.y, toX, toY, false); + world.generator().generateTile(secResult, sector.x, sector.y, toX, toY + sectorSize / sectorImageSize, false, null, null); - int color = ColorMapper.colorFor(result.floor, result.wall, Team.none, result.elevation, (byte)0); + int color = ColorMapper.colorFor(result.floor, result.wall, Team.none, result.elevation, secResult.elevation > result.elevation ? (byte)(1 << 6) : (byte)0); pixmap.drawPixel(x, pixmap.getHeight() - 1 - y, color); } } diff --git a/core/src/io/anuke/mindustry/maps/TutorialSector.java b/core/src/io/anuke/mindustry/maps/TutorialSector.java index 4bb7c4314b..516a6ef3b4 100644 --- a/core/src/io/anuke/mindustry/maps/TutorialSector.java +++ b/core/src/io/anuke/mindustry/maps/TutorialSector.java @@ -49,6 +49,10 @@ public class TutorialSector{ ); } + public static boolean supressDrone(){ + return world.getSector() != null && world.getSector().x == 0 && world.getSector().y == 0; + } + private static void generateBase(){ int x = sectorSize/2, y = sectorSize/2; world.setBlock(world.tile(x, y), StorageBlocks.core, waveTeam); diff --git a/core/src/io/anuke/mindustry/maps/generation/WorldGenerator.java b/core/src/io/anuke/mindustry/maps/generation/WorldGenerator.java index 845898590d..bd76d1a5fe 100644 --- a/core/src/io/anuke/mindustry/maps/generation/WorldGenerator.java +++ b/core/src/io/anuke/mindustry/maps/generation/WorldGenerator.java @@ -322,13 +322,13 @@ public class WorldGenerator{ wall = decoration.get(floor); } - if(ores != null && ((Floor) floor).hasOres && wall == Blocks.air){ - int offsetX = 10 + x, offsetY = 10 + y; + if(ores != null && ((Floor) floor).hasOres){ + int offsetX = x + 1, offsetY = y + 15; for(int i = ores.size - 1; i >= 0; i--){ Item entry = ores.get(i); - if(sim.octaveNoise2D(1, 0.7, 1f / (10 + i * 3), offsetX, offsetY) / 4f + - Math.abs(0.5f - sim.octaveNoise2D(2, 0.7, 1f / (50 + i * 2), offsetX, offsetY)) > 0.35f && - Math.abs(0.5f - sim2.octaveNoise2D(1, 1, 1f / (55 + i * 4), offsetX, offsetY)) > 0.33f){ + if( + Math.abs(0.5f - sim.octaveNoise2D(2, 0.7, 1f / (50 + i * 2), offsetX, offsetY)) > 0.23f && + Math.abs(0.5f - sim2.octaveNoise2D(1, 1, 1f / (40 + i * 4), offsetX, offsetY)) > 0.32f){ floor = OreBlocks.get(floor, entry); break; } diff --git a/core/src/io/anuke/mindustry/maps/missions/WaveMission.java b/core/src/io/anuke/mindustry/maps/missions/WaveMission.java index 0ba837fe11..a0b06fc351 100644 --- a/core/src/io/anuke/mindustry/maps/missions/WaveMission.java +++ b/core/src/io/anuke/mindustry/maps/missions/WaveMission.java @@ -11,6 +11,8 @@ import io.anuke.mindustry.maps.generation.Generation; import io.anuke.ucore.util.Bundles; import static io.anuke.mindustry.Vars.state; +import static io.anuke.mindustry.Vars.waveTeam; +import static io.anuke.mindustry.Vars.world; public class WaveMission extends Mission{ private final int target; @@ -30,6 +32,13 @@ public class WaveMission extends Mission{ generateCoreAt(gen, coreX, coreY, Team.blue); } + @Override + public void onBegin(){ + super.onBegin(); + + world.pathfinder().activateTeamPath(waveTeam); + } + @Override public GameMode getMode(){ return GameMode.waves; diff --git a/core/src/io/anuke/mindustry/ui/dialogs/GenViewDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/GenViewDialog.java index 20eb89e5e8..e966a00693 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/GenViewDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/GenViewDialog.java @@ -4,9 +4,12 @@ import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.Pixmap; import com.badlogic.gdx.graphics.Pixmap.Format; import com.badlogic.gdx.graphics.Texture; +import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.async.AsyncExecutor; +import io.anuke.mindustry.content.Items; import io.anuke.mindustry.game.Team; import io.anuke.mindustry.maps.generation.WorldGenerator.GenResult; +import io.anuke.mindustry.type.Item; import io.anuke.mindustry.world.ColorMapper; import io.anuke.ucore.graphics.Draw; import io.anuke.ucore.scene.Element; @@ -20,6 +23,7 @@ import static io.anuke.mindustry.Vars.sectorSize; import static io.anuke.mindustry.Vars.world; public class GenViewDialog extends FloatingDialog{ + Array ores = Array.with(Items.copper, Items.lead, Items.coal); public GenViewDialog(){ super("generate view"); @@ -81,7 +85,7 @@ public class GenViewDialog extends FloatingDialog{ Pixmap pixmap = new Pixmap(sectorSize, sectorSize, Format.RGBA8888); for(int i = 0; i < sectorSize; i++){ for(int j = 0; j < sectorSize; j++){ - world.generator().generateTile(result, wx, wy, i, j, true, null, null); + world.generator().generateTile(result, wx, wy, i, j, true, null, ores); pixmap.drawPixel(i, sectorSize - 1 - j, ColorMapper.colorFor(result.floor, result.wall, Team.none, result.elevation, (byte)0)); } } diff --git a/core/src/io/anuke/mindustry/world/ColorMapper.java b/core/src/io/anuke/mindustry/world/ColorMapper.java index 00f64f10e4..14561e95dc 100644 --- a/core/src/io/anuke/mindustry/world/ColorMapper.java +++ b/core/src/io/anuke/mindustry/world/ColorMapper.java @@ -6,7 +6,6 @@ import com.badlogic.gdx.utils.ObjectIntMap; import io.anuke.mindustry.game.ContentList; import io.anuke.mindustry.game.Team; import io.anuke.mindustry.type.ContentType; -import io.anuke.ucore.util.Mathf; import static io.anuke.mindustry.Vars.content; @@ -34,8 +33,8 @@ public class ColorMapper implements ContentList{ Color tmpColor = tmpColors.get(); tmpColor.set(color); float maxMult = 1f/Math.max(Math.max(tmpColor.r, tmpColor.g), tmpColor.b) ; - float mul = Math.min(1.1f + elevation / 4f, maxMult); - if((cliffs & Mathf.pow2(6)) != 0){ + float mul = Math.min(0.7f + elevation / 5f, maxMult); + if((cliffs & ((1 << 6))) != 0){ mul -= 0.5f; } tmpColor.mul(mul, mul, mul, 1f); diff --git a/core/src/io/anuke/mindustry/world/blocks/storage/CoreBlock.java b/core/src/io/anuke/mindustry/world/blocks/storage/CoreBlock.java index 958994594f..f1410621e9 100644 --- a/core/src/io/anuke/mindustry/world/blocks/storage/CoreBlock.java +++ b/core/src/io/anuke/mindustry/world/blocks/storage/CoreBlock.java @@ -16,6 +16,7 @@ import io.anuke.mindustry.entities.units.UnitType; import io.anuke.mindustry.gen.Call; import io.anuke.mindustry.graphics.Palette; import io.anuke.mindustry.graphics.Shaders; +import io.anuke.mindustry.maps.TutorialSector; import io.anuke.mindustry.net.Net; import io.anuke.mindustry.type.Item; import io.anuke.mindustry.type.ItemType; @@ -225,7 +226,7 @@ public class CoreBlock extends StorageBlock{ } } - if(!found){ + if(!found && !TutorialSector.supressDrone()){ BaseUnit unit = droneType.create(tile.getTeam()); unit.setSpawner(tile); unit.setDead(true);