Exploit fixes

This commit is contained in:
Anuken
2018-08-03 12:13:17 -04:00
parent effdaefdf3
commit 58be00b3ce
7 changed files with 65 additions and 73 deletions

View File

@@ -9,7 +9,6 @@ import io.anuke.mindustry.content.Items;
import io.anuke.mindustry.core.GameState.State;
import io.anuke.mindustry.game.Team;
import io.anuke.mindustry.maps.generation.WorldGenerator.GenResult;
import io.anuke.mindustry.maps.missions.BattleMission;
import io.anuke.mindustry.maps.missions.WaveMission;
import io.anuke.mindustry.world.ColorMapper;
import io.anuke.mindustry.world.Edges;
@@ -135,13 +134,10 @@ public class Sectors{
private void initSector(Sector sector){
sector.difficulty = (int)(Mathf.dst(sector.x, sector.y)/2);
if(sector.difficulty < 1){
sector.missions.add(new WaveMission(30));
if(sector.difficulty == 0){
sector.missions.add(new WaveMission(10));
}else{
sector.missions.add(Mathf.choose(
new BattleMission(sector.difficulty),
new WaveMission(30 + sector.difficulty*5 + Mathf.randomSeed(sector.getSeed(), 0, 5)*5)
));
sector.missions.add(new WaveMission(Math.min(10 + sector.difficulty*5 + Mathf.randomSeed(sector.getSeed(), 0, 5)*5, 100)));
}
//add all ores for now since material differences aren't well handled yet

View File

@@ -1,7 +1,6 @@
package io.anuke.mindustry.maps.missions;
import io.anuke.mindustry.Vars;
import io.anuke.mindustry.content.blocks.StorageBlocks;
import io.anuke.mindustry.game.GameMode;
import io.anuke.mindustry.game.Team;
import io.anuke.mindustry.maps.Sector;
@@ -33,21 +32,8 @@ public class BattleMission implements Mission{
@Override
public void generate(Tile[][] tiles, Sector sector){
int cx = 0, cy = 0;
outer:
for(int x = 0; x < tiles.length; x++){
for(int y = 0; y < tiles[0].length; y++){
if(tiles[x][y].block() == StorageBlocks.core){
//set enemy core position to mirrored player core position
cx = tiles.length - 1 - x;
cy = tiles[0].length - 1 - y;
break outer;
}
}
}
tiles[cx][cy].setBlock(StorageBlocks.core);
tiles[cx][cy].setTeam(Team.red);
generateCoreAt(tiles, 60, 60, Team.blue);
generateCoreAt(tiles, tiles.length-1-60, tiles[0].length-1-60, Team.red);
}
@Override

View File

@@ -1,9 +1,16 @@
package io.anuke.mindustry.maps.missions;
import com.badlogic.gdx.math.Vector2;
import io.anuke.mindustry.content.blocks.Blocks;
import io.anuke.mindustry.content.blocks.StorageBlocks;
import io.anuke.mindustry.game.GameMode;
import io.anuke.mindustry.game.Team;
import io.anuke.mindustry.maps.Sector;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.Floor;
import io.anuke.ucore.noise.Noise;
import io.anuke.ucore.scene.ui.layout.Table;
import io.anuke.ucore.util.Mathf;
public interface Mission{
boolean isComplete();
@@ -12,4 +19,32 @@ public interface Mission{
void display(Table table);
default void generate(Tile[][] tiles, Sector sector){}
default void generateCoreAt(Tile[][] tiles, int coreX, int coreY, Team team){
Noise.setSeed(0);
float targetElevation = Math.max(tiles[coreX][coreY].getElevation(), 1);
int lerpDst = 20;
for(int x = -lerpDst; x <= lerpDst; x++){
for(int y = -lerpDst; y <= lerpDst; y++){
int wx = tiles.length/2 + x, wy = tiles[0].length/2 + y;
float dst = Vector2.dst(wx, wy, coreX, coreY);
float elevation = tiles[wx][wy].getElevation();
if(dst < lerpDst){
elevation = Mathf.lerp(elevation, targetElevation, Mathf.clamp(2*(1f-(dst / lerpDst))) + Noise.nnoise(wx, wy, 8f, 1f));
}
if(tiles[wx][wy].floor().liquidDrop == null){
tiles[wx][wy].setElevation((int) elevation);
}else{
tiles[wx][wy].setFloor((Floor) Blocks.sand);
}
}
}
tiles[coreX][coreY].setBlock(StorageBlocks.core);
tiles[coreX][coreY].setTeam(team);
}
}

View File

@@ -1,17 +1,11 @@
package io.anuke.mindustry.maps.missions;
import com.badlogic.gdx.math.Vector2;
import io.anuke.mindustry.content.blocks.Blocks;
import io.anuke.mindustry.content.blocks.StorageBlocks;
import io.anuke.mindustry.game.GameMode;
import io.anuke.mindustry.game.Team;
import io.anuke.mindustry.maps.Sector;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.Floor;
import io.anuke.ucore.noise.Noise;
import io.anuke.ucore.scene.ui.layout.Table;
import io.anuke.ucore.util.Bundles;
import io.anuke.ucore.util.Mathf;
import static io.anuke.mindustry.Vars.state;
@@ -24,32 +18,8 @@ public class WaveMission implements Mission{
@Override
public void generate(Tile[][] tiles, Sector sector){
Noise.setSeed(0);
int coreX = tiles.length/2, coreY = tiles.length/2;
float targetElevation = Math.max(tiles[coreX][coreY].getElevation(), 1);
int lerpDst = 20;
for(int x = -lerpDst; x <= lerpDst; x++){
for(int y = -lerpDst; y <= lerpDst; y++){
int wx = tiles.length/2 + x, wy = tiles[0].length/2 + y;
float dst = Vector2.dst(wx, wy, coreX, coreY);
float elevation = tiles[wx][wy].getElevation();
if(dst < lerpDst){
elevation = Mathf.lerp(elevation, targetElevation, Mathf.clamp(2*(1f-(dst / lerpDst))) + Noise.nnoise(wx, wy, 8f, 1f));
}
if(tiles[wx][wy].floor().liquidDrop == null){
tiles[wx][wy].setElevation((int) elevation);
}else{
tiles[wx][wy].setFloor((Floor) Blocks.sand);
}
}
}
tiles[coreX][coreY].setBlock(StorageBlocks.core);
tiles[coreX][coreY].setTeam(Team.blue);
generateCoreAt(tiles, coreX, coreY, Team.blue);
}
@Override