Bugfixes / Better topological map

This commit is contained in:
Anuken 2018-09-23 18:41:08 -04:00
parent 6bab6c57f2
commit 06763b34c3
9 changed files with 37 additions and 12 deletions

View File

@ -40,6 +40,10 @@ public class Pathfinder{
});
}
public void activateTeamPath(Team team){
createFor(team);
}
public void update(){
if(Net.client()) return;

View File

@ -13,7 +13,7 @@ public class Waves{
return Array.with(
new SpawnGroup(UnitTypes.dagger){{
end = 8;
unitScaling = 1;
unitScaling = 3;
}},
new SpawnGroup(UnitTypes.wraith){{

View File

@ -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);
}
}

View File

@ -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);

View File

@ -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;
}

View File

@ -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;

View File

@ -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<Item> 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));
}
}

View File

@ -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);

View File

@ -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);