Bugfixes / Better topological map
This commit is contained in:
@@ -40,6 +40,10 @@ public class Pathfinder{
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void activateTeamPath(Team team){
|
||||||
|
createFor(team);
|
||||||
|
}
|
||||||
|
|
||||||
public void update(){
|
public void update(){
|
||||||
if(Net.client()) return;
|
if(Net.client()) return;
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ public class Waves{
|
|||||||
return Array.with(
|
return Array.with(
|
||||||
new SpawnGroup(UnitTypes.dagger){{
|
new SpawnGroup(UnitTypes.dagger){{
|
||||||
end = 8;
|
end = 8;
|
||||||
unitScaling = 1;
|
unitScaling = 3;
|
||||||
}},
|
}},
|
||||||
|
|
||||||
new SpawnGroup(UnitTypes.wraith){{
|
new SpawnGroup(UnitTypes.wraith){{
|
||||||
|
|||||||
@@ -270,6 +270,8 @@ public class Sectors{
|
|||||||
: new BattleMission());
|
: new BattleMission());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sector.spawns = new Array<>();
|
||||||
|
|
||||||
for(Mission mission : sector.missions){
|
for(Mission mission : sector.missions){
|
||||||
sector.spawns.addAll(mission.getWaves(sector));
|
sector.spawns.addAll(mission.getWaves(sector));
|
||||||
}
|
}
|
||||||
@@ -296,6 +298,7 @@ public class Sectors{
|
|||||||
if(headless) return; //obviously not created or needed on server
|
if(headless) return; //obviously not created or needed on server
|
||||||
|
|
||||||
Pixmap pixmap = new Pixmap(sectorImageSize * sector.width, sectorImageSize * sector.height, Format.RGBA8888);
|
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 x = 0; x < pixmap.getWidth(); x++){
|
||||||
for(int y = 0; y < pixmap.getHeight(); y++){
|
for(int y = 0; y < pixmap.getHeight(); y++){
|
||||||
@@ -303,8 +306,9 @@ public class Sectors{
|
|||||||
int toY = y * sectorSize / sectorImageSize;
|
int toY = y * sectorSize / sectorImageSize;
|
||||||
|
|
||||||
GenResult result = world.generator().generateTile(sector.x, sector.y, toX, toY, false);
|
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);
|
pixmap.drawPixel(x, pixmap.getHeight() - 1 - y, color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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(){
|
private static void generateBase(){
|
||||||
int x = sectorSize/2, y = sectorSize/2;
|
int x = sectorSize/2, y = sectorSize/2;
|
||||||
world.setBlock(world.tile(x, y), StorageBlocks.core, waveTeam);
|
world.setBlock(world.tile(x, y), StorageBlocks.core, waveTeam);
|
||||||
|
|||||||
@@ -322,13 +322,13 @@ public class WorldGenerator{
|
|||||||
wall = decoration.get(floor);
|
wall = decoration.get(floor);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(ores != null && ((Floor) floor).hasOres && wall == Blocks.air){
|
if(ores != null && ((Floor) floor).hasOres){
|
||||||
int offsetX = 10 + x, offsetY = 10 + y;
|
int offsetX = x + 1, offsetY = y + 15;
|
||||||
for(int i = ores.size - 1; i >= 0; i--){
|
for(int i = ores.size - 1; i >= 0; i--){
|
||||||
Item entry = ores.get(i);
|
Item entry = ores.get(i);
|
||||||
if(sim.octaveNoise2D(1, 0.7, 1f / (10 + i * 3), offsetX, offsetY) / 4f +
|
if(
|
||||||
Math.abs(0.5f - sim.octaveNoise2D(2, 0.7, 1f / (50 + i * 2), offsetX, offsetY)) > 0.35f &&
|
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 / (55 + i * 4), offsetX, offsetY)) > 0.33f){
|
Math.abs(0.5f - sim2.octaveNoise2D(1, 1, 1f / (40 + i * 4), offsetX, offsetY)) > 0.32f){
|
||||||
floor = OreBlocks.get(floor, entry);
|
floor = OreBlocks.get(floor, entry);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,8 @@ import io.anuke.mindustry.maps.generation.Generation;
|
|||||||
import io.anuke.ucore.util.Bundles;
|
import io.anuke.ucore.util.Bundles;
|
||||||
|
|
||||||
import static io.anuke.mindustry.Vars.state;
|
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{
|
public class WaveMission extends Mission{
|
||||||
private final int target;
|
private final int target;
|
||||||
@@ -30,6 +32,13 @@ public class WaveMission extends Mission{
|
|||||||
generateCoreAt(gen, coreX, coreY, Team.blue);
|
generateCoreAt(gen, coreX, coreY, Team.blue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onBegin(){
|
||||||
|
super.onBegin();
|
||||||
|
|
||||||
|
world.pathfinder().activateTeamPath(waveTeam);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public GameMode getMode(){
|
public GameMode getMode(){
|
||||||
return GameMode.waves;
|
return GameMode.waves;
|
||||||
|
|||||||
@@ -4,9 +4,12 @@ import com.badlogic.gdx.Gdx;
|
|||||||
import com.badlogic.gdx.graphics.Pixmap;
|
import com.badlogic.gdx.graphics.Pixmap;
|
||||||
import com.badlogic.gdx.graphics.Pixmap.Format;
|
import com.badlogic.gdx.graphics.Pixmap.Format;
|
||||||
import com.badlogic.gdx.graphics.Texture;
|
import com.badlogic.gdx.graphics.Texture;
|
||||||
|
import com.badlogic.gdx.utils.Array;
|
||||||
import com.badlogic.gdx.utils.async.AsyncExecutor;
|
import com.badlogic.gdx.utils.async.AsyncExecutor;
|
||||||
|
import io.anuke.mindustry.content.Items;
|
||||||
import io.anuke.mindustry.game.Team;
|
import io.anuke.mindustry.game.Team;
|
||||||
import io.anuke.mindustry.maps.generation.WorldGenerator.GenResult;
|
import io.anuke.mindustry.maps.generation.WorldGenerator.GenResult;
|
||||||
|
import io.anuke.mindustry.type.Item;
|
||||||
import io.anuke.mindustry.world.ColorMapper;
|
import io.anuke.mindustry.world.ColorMapper;
|
||||||
import io.anuke.ucore.graphics.Draw;
|
import io.anuke.ucore.graphics.Draw;
|
||||||
import io.anuke.ucore.scene.Element;
|
import io.anuke.ucore.scene.Element;
|
||||||
@@ -20,6 +23,7 @@ import static io.anuke.mindustry.Vars.sectorSize;
|
|||||||
import static io.anuke.mindustry.Vars.world;
|
import static io.anuke.mindustry.Vars.world;
|
||||||
|
|
||||||
public class GenViewDialog extends FloatingDialog{
|
public class GenViewDialog extends FloatingDialog{
|
||||||
|
Array<Item> ores = Array.with(Items.copper, Items.lead, Items.coal);
|
||||||
|
|
||||||
public GenViewDialog(){
|
public GenViewDialog(){
|
||||||
super("generate view");
|
super("generate view");
|
||||||
@@ -81,7 +85,7 @@ public class GenViewDialog extends FloatingDialog{
|
|||||||
Pixmap pixmap = new Pixmap(sectorSize, sectorSize, Format.RGBA8888);
|
Pixmap pixmap = new Pixmap(sectorSize, sectorSize, Format.RGBA8888);
|
||||||
for(int i = 0; i < sectorSize; i++){
|
for(int i = 0; i < sectorSize; i++){
|
||||||
for(int j = 0; j < sectorSize; j++){
|
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));
|
pixmap.drawPixel(i, sectorSize - 1 - j, ColorMapper.colorFor(result.floor, result.wall, Team.none, result.elevation, (byte)0));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import com.badlogic.gdx.utils.ObjectIntMap;
|
|||||||
import io.anuke.mindustry.game.ContentList;
|
import io.anuke.mindustry.game.ContentList;
|
||||||
import io.anuke.mindustry.game.Team;
|
import io.anuke.mindustry.game.Team;
|
||||||
import io.anuke.mindustry.type.ContentType;
|
import io.anuke.mindustry.type.ContentType;
|
||||||
import io.anuke.ucore.util.Mathf;
|
|
||||||
|
|
||||||
import static io.anuke.mindustry.Vars.content;
|
import static io.anuke.mindustry.Vars.content;
|
||||||
|
|
||||||
@@ -34,8 +33,8 @@ public class ColorMapper implements ContentList{
|
|||||||
Color tmpColor = tmpColors.get();
|
Color tmpColor = tmpColors.get();
|
||||||
tmpColor.set(color);
|
tmpColor.set(color);
|
||||||
float maxMult = 1f/Math.max(Math.max(tmpColor.r, tmpColor.g), tmpColor.b) ;
|
float maxMult = 1f/Math.max(Math.max(tmpColor.r, tmpColor.g), tmpColor.b) ;
|
||||||
float mul = Math.min(1.1f + elevation / 4f, maxMult);
|
float mul = Math.min(0.7f + elevation / 5f, maxMult);
|
||||||
if((cliffs & Mathf.pow2(6)) != 0){
|
if((cliffs & ((1 << 6))) != 0){
|
||||||
mul -= 0.5f;
|
mul -= 0.5f;
|
||||||
}
|
}
|
||||||
tmpColor.mul(mul, mul, mul, 1f);
|
tmpColor.mul(mul, mul, mul, 1f);
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import io.anuke.mindustry.entities.units.UnitType;
|
|||||||
import io.anuke.mindustry.gen.Call;
|
import io.anuke.mindustry.gen.Call;
|
||||||
import io.anuke.mindustry.graphics.Palette;
|
import io.anuke.mindustry.graphics.Palette;
|
||||||
import io.anuke.mindustry.graphics.Shaders;
|
import io.anuke.mindustry.graphics.Shaders;
|
||||||
|
import io.anuke.mindustry.maps.TutorialSector;
|
||||||
import io.anuke.mindustry.net.Net;
|
import io.anuke.mindustry.net.Net;
|
||||||
import io.anuke.mindustry.type.Item;
|
import io.anuke.mindustry.type.Item;
|
||||||
import io.anuke.mindustry.type.ItemType;
|
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());
|
BaseUnit unit = droneType.create(tile.getTeam());
|
||||||
unit.setSpawner(tile);
|
unit.setSpawner(tile);
|
||||||
unit.setDead(true);
|
unit.setDead(true);
|
||||||
|
|||||||
Reference in New Issue
Block a user