New placement unit tests / Placing bugfix

This commit is contained in:
Anuken
2018-12-09 14:42:22 -05:00
parent 061c55614b
commit 35b16c7292
5 changed files with 102 additions and 11 deletions

View File

@@ -2,6 +2,7 @@ package io.anuke.mindustry.entities.traits;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.utils.Array;
import com.badlogic.gdx.utils.Queue;
import io.anuke.mindustry.Vars;
import io.anuke.mindustry.content.blocks.Blocks;
@@ -29,9 +30,7 @@ import io.anuke.ucore.graphics.Fill;
import io.anuke.ucore.graphics.Lines;
import io.anuke.ucore.graphics.Shapes;
import io.anuke.ucore.util.Angles;
import io.anuke.ucore.util.Geometry;
import io.anuke.ucore.util.Mathf;
import io.anuke.ucore.util.Translator;
import java.io.DataInput;
import java.io.DataOutput;
@@ -47,6 +46,7 @@ public interface BuilderTrait extends Entity{
//these are not instance variables!
float placeDistance = 150f;
float mineDistance = 70f;
Array<BuildRequest> removal = new Array<>();
/**Returns the queue for storing build requests.*/
Queue<BuildRequest> getPlaceQueue();
@@ -171,6 +171,19 @@ public interface BuilderTrait extends Entity{
* This includes mining.
*/
default void updateBuilding(Unit unit){
//remove already completed build requests
removal.clear();
for(BuildRequest request : getPlaceQueue()){
if((request.breaking && world.tile(request.x, request.y).block() == Blocks.air) ||
(!request.breaking && world.tile(request.x, request.y).block() == request.recipe.result)){
removal.add(request);
}
}
for(BuildRequest req : removal){
getPlaceQueue().removeValue(req, true);
}
BuildRequest current = getCurrentRequest();
//update mining here
@@ -373,5 +386,18 @@ public interface BuilderTrait extends Entity{
this.recipe = Recipe.getByResult(world.tile(x, y).block());
this.breaking = true;
}
@Override
public String toString(){
return "BuildRequest{" +
"x=" + x +
", y=" + y +
", rotation=" + rotation +
", recipe=" + recipe +
", breaking=" + breaking +
", progress=" + progress +
", initialized=" + initialized +
'}';
}
}
}

View File

@@ -352,7 +352,7 @@ public class Drone extends FlyingUnit implements BuilderTrait{
@Override
public boolean canCreateBlocks(){
return false;
return true;
}
@Override

View File

@@ -14,7 +14,7 @@ import java.util.zip.InflaterInputStream;
import static io.anuke.mindustry.Vars.*;
public class SaveIO{
public static final IntArray breakingVersions = IntArray.with(47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58);
public static final IntArray breakingVersions = IntArray.with(47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 63);
public static final IntMap<SaveFileVersion> versions = new IntMap<>();
public static final Array<SaveFileVersion> versionArray = Array.with(
new Save16()

View File

@@ -45,9 +45,9 @@ public class Build{
for(int dx = 0; dx < previous.size; dx++){
for(int dy = 0; dy < previous.size; dy++){
int worldx = dx + offsetx + x;
int worldy = dy + offsety + y;
if(!(worldx == x && worldy == y)){
int worldx = dx + offsetx + tile.x;
int worldy = dy + offsety + tile.y;
if(!(worldx == tile.x && worldy == tile.y)){
Tile toplace = world.tile(worldx, worldy);
if(toplace != null){
toplace.setLinked((byte) (dx + offsetx), (byte) (dy + offsety));