Update/draw payload buildings (broken)
This commit is contained in:
@@ -26,6 +26,7 @@ import mindustry.maps.*;
|
|||||||
import mindustry.mod.*;
|
import mindustry.mod.*;
|
||||||
import mindustry.net.*;
|
import mindustry.net.*;
|
||||||
import mindustry.service.*;
|
import mindustry.service.*;
|
||||||
|
import mindustry.world.*;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.nio.charset.*;
|
import java.nio.charset.*;
|
||||||
@@ -195,6 +196,8 @@ public class Vars implements Loadable{
|
|||||||
public static Fi launchIDFile;
|
public static Fi launchIDFile;
|
||||||
/** empty map, indicates no current map */
|
/** empty map, indicates no current map */
|
||||||
public static Map emptyMap;
|
public static Map emptyMap;
|
||||||
|
/** empty tile for payloads */
|
||||||
|
public static Tile emptyTile;
|
||||||
/** map file extension */
|
/** map file extension */
|
||||||
public static final String mapExtension = "msav";
|
public static final String mapExtension = "msav";
|
||||||
/** save file extension */
|
/** save file extension */
|
||||||
@@ -310,6 +313,10 @@ public class Vars implements Loadable{
|
|||||||
|
|
||||||
modDirectory.mkdirs();
|
modDirectory.mkdirs();
|
||||||
|
|
||||||
|
Events.on(ContentInitEvent.class, e -> {
|
||||||
|
emptyTile = new Tile(Short.MAX_VALUE - 20, Short.MAX_VALUE - 20);
|
||||||
|
});
|
||||||
|
|
||||||
mods.load();
|
mods.load();
|
||||||
maps.load();
|
maps.load();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -291,7 +291,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
|
|||||||
}
|
}
|
||||||
|
|
||||||
public byte relativeTo(Building tile){
|
public byte relativeTo(Building tile){
|
||||||
return relativeTo(tile.tile());
|
return relativeTo(tile.tile);
|
||||||
}
|
}
|
||||||
|
|
||||||
public byte relativeToEdge(Tile other){
|
public byte relativeToEdge(Tile other){
|
||||||
@@ -923,6 +923,10 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
|
|||||||
drawTeamTop();
|
drawTeamTop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void payloadDraw(){
|
||||||
|
draw();
|
||||||
|
}
|
||||||
|
|
||||||
public void drawTeamTop(){
|
public void drawTeamTop(){
|
||||||
if(block.teamRegion.found()){
|
if(block.teamRegion.found()){
|
||||||
if(block.teamRegions[team.id] == block.teamRegion) Draw.color(team.color);
|
if(block.teamRegions[team.id] == block.teamRegion) Draw.color(team.color);
|
||||||
|
|||||||
@@ -61,6 +61,7 @@ abstract class PayloadComp implements Posc, Rotc, Hitboxc, Unitc{
|
|||||||
void pickup(Building tile){
|
void pickup(Building tile){
|
||||||
tile.pickedUp();
|
tile.pickedUp();
|
||||||
tile.tile.remove();
|
tile.tile.remove();
|
||||||
|
tile.tile = Vars.emptyTile;
|
||||||
payloads.add(new BuildPayload(tile));
|
payloads.add(new BuildPayload(tile));
|
||||||
Fx.unitPickup.at(tile);
|
Fx.unitPickup.at(tile);
|
||||||
Events.fire(new PickupEvent(self(), tile));
|
Events.fire(new PickupEvent(self(), tile));
|
||||||
|
|||||||
@@ -155,6 +155,7 @@ public class Saves{
|
|||||||
SaveSlot slot = new SaveSlot(getNextSlotFile());
|
SaveSlot slot = new SaveSlot(getNextSlotFile());
|
||||||
slot.importFile(file);
|
slot.importFile(file);
|
||||||
slot.setName(file.nameWithoutExtension());
|
slot.setName(file.nameWithoutExtension());
|
||||||
|
|
||||||
saves.add(slot);
|
saves.add(slot);
|
||||||
slot.meta = SaveIO.getMeta(slot.file);
|
slot.meta = SaveIO.getMeta(slot.file);
|
||||||
current = slot;
|
current = slot;
|
||||||
@@ -330,6 +331,10 @@ public class Saves{
|
|||||||
public void importFile(Fi from) throws IOException{
|
public void importFile(Fi from) throws IOException{
|
||||||
try{
|
try{
|
||||||
from.copyTo(file);
|
from.copyTo(file);
|
||||||
|
if(previewFile().exists()){
|
||||||
|
requestedPreview = false;
|
||||||
|
previewFile().delete();
|
||||||
|
}
|
||||||
}catch(Exception e){
|
}catch(Exception e){
|
||||||
throw new IOException(e);
|
throw new IOException(e);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -132,7 +132,7 @@ public class Conveyor extends Block implements Autotiler{
|
|||||||
public float minitem = 1;
|
public float minitem = 1;
|
||||||
|
|
||||||
public int blendbits, blending;
|
public int blendbits, blending;
|
||||||
public int blendsclx, blendscly;
|
public int blendsclx = 1, blendscly = 1;
|
||||||
|
|
||||||
public float clogHeat = 0f;
|
public float clogHeat = 0f;
|
||||||
|
|
||||||
@@ -169,6 +169,11 @@ public class Conveyor extends Block implements Autotiler{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void payloadDraw(){
|
||||||
|
Draw.rect(block.fullIcon,x, y);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void drawCracks(){
|
public void drawCracks(){
|
||||||
Draw.z(Layer.block - 0.15f);
|
Draw.z(Layer.block - 0.15f);
|
||||||
|
|||||||
@@ -184,6 +184,11 @@ public class ItemBridge extends Block{
|
|||||||
public boolean wasMoved, moved;
|
public boolean wasMoved, moved;
|
||||||
public float transportCounter;
|
public float transportCounter;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void pickedUp(){
|
||||||
|
link = -1;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void playerPlaced(Object config){
|
public void playerPlaced(Object config){
|
||||||
super.playerPlaced(config);
|
super.playerPlaced(config);
|
||||||
|
|||||||
@@ -126,6 +126,10 @@ public class PayloadConveyor extends Block{
|
|||||||
public void updateTile(){
|
public void updateTile(){
|
||||||
if(!enabled) return;
|
if(!enabled) return;
|
||||||
|
|
||||||
|
if(item != null){
|
||||||
|
item.update();
|
||||||
|
}
|
||||||
|
|
||||||
lastInterp = curInterp;
|
lastInterp = curInterp;
|
||||||
curInterp = fract();
|
curInterp = fract();
|
||||||
//rollover skip
|
//rollover skip
|
||||||
@@ -231,6 +235,11 @@ public class PayloadConveyor extends Block{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void payloadDraw(){
|
||||||
|
Draw.rect(block.fullIcon,x, y);
|
||||||
|
}
|
||||||
|
|
||||||
public float time(){
|
public float time(){
|
||||||
return Time.time;
|
return Time.time;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ public class Conduit extends LiquidBlock implements Autotiler{
|
|||||||
|
|
||||||
public class ConduitBuild extends LiquidBuild implements ChainedBuilding{
|
public class ConduitBuild extends LiquidBuild implements ChainedBuilding{
|
||||||
public float smoothLiquid;
|
public float smoothLiquid;
|
||||||
public int blendbits, xscl, yscl, blending;
|
public int blendbits, xscl = 1, yscl = 1, blending;
|
||||||
public boolean capped;
|
public boolean capped;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -78,6 +78,7 @@ public abstract class BlockProducer extends PayloadBlock{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateTile(){
|
public void updateTile(){
|
||||||
|
super.updateTile();
|
||||||
var recipe = recipe();
|
var recipe = recipe();
|
||||||
boolean produce = recipe != null && consValid() && payload == null;
|
boolean produce = recipe != null && consValid() && payload == null;
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package mindustry.world.blocks.payloads;
|
package mindustry.world.blocks.payloads;
|
||||||
|
|
||||||
import arc.graphics.g2d.*;
|
import arc.graphics.g2d.*;
|
||||||
|
import arc.math.*;
|
||||||
import arc.util.io.*;
|
import arc.util.io.*;
|
||||||
import mindustry.game.*;
|
import mindustry.game.*;
|
||||||
import mindustry.gen.*;
|
import mindustry.gen.*;
|
||||||
@@ -15,6 +16,7 @@ public class BuildPayload implements Payload{
|
|||||||
|
|
||||||
public BuildPayload(Block block, Team team){
|
public BuildPayload(Block block, Team team){
|
||||||
this.build = block.newBuilding().create(block, team);
|
this.build = block.newBuilding().create(block, team);
|
||||||
|
this.build.tile = emptyTile;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BuildPayload(Building build){
|
public BuildPayload(Building build){
|
||||||
@@ -34,6 +36,12 @@ public class BuildPayload implements Payload{
|
|||||||
build.dropped();
|
build.dropped();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void update(){
|
||||||
|
if(build.tile == null) build.tile = emptyTile;
|
||||||
|
build.update();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemStack[] requirements(){
|
public ItemStack[] requirements(){
|
||||||
return build.block.requirements;
|
return build.block.requirements;
|
||||||
@@ -80,8 +88,10 @@ public class BuildPayload implements Payload{
|
|||||||
@Override
|
@Override
|
||||||
public void draw(){
|
public void draw(){
|
||||||
drawShadow(1f);
|
drawShadow(1f);
|
||||||
//build.draw(); //TODO broken for blocks that change layers, such as conveyors, but would be nice...
|
float prevZ = Draw.z();
|
||||||
Draw.rect(build.block.fullIcon, build.x, build.y);
|
Draw.zTransform(z -> 0.0011f + Mathf.clamp(z, prevZ - 0.001f, prevZ + 0.9f));
|
||||||
|
build.payloadDraw();
|
||||||
|
Draw.zTransform();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -36,6 +36,9 @@ public interface Payload extends Position{
|
|||||||
/** @return the time taken to build this payload. */
|
/** @return the time taken to build this payload. */
|
||||||
float buildTime();
|
float buildTime();
|
||||||
|
|
||||||
|
/** update this payload if it is a block */
|
||||||
|
default void update(){}
|
||||||
|
|
||||||
/** @return whether this payload was dumped. */
|
/** @return whether this payload was dumped. */
|
||||||
default boolean dump(){
|
default boolean dump(){
|
||||||
return false;
|
return false;
|
||||||
@@ -94,6 +97,7 @@ public interface Payload extends Position{
|
|||||||
BuildPayload payload = new BuildPayload(block, Team.derelict);
|
BuildPayload payload = new BuildPayload(block, Team.derelict);
|
||||||
byte version = read.b();
|
byte version = read.b();
|
||||||
payload.build.readAll(read, version);
|
payload.build.readAll(read, version);
|
||||||
|
payload.build.tile = emptyTile;
|
||||||
return (T)payload;
|
return (T)payload;
|
||||||
}else if(type == payloadUnit){
|
}else if(type == payloadUnit){
|
||||||
byte id = read.b();
|
byte id = read.b();
|
||||||
|
|||||||
@@ -135,6 +135,13 @@ public class PayloadBlock extends Block{
|
|||||||
if(payload != null && !carried) payload.dump();
|
if(payload != null && !carried) payload.dump();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateTile(){
|
||||||
|
if(payload != null){
|
||||||
|
payload.update();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public boolean blends(int direction){
|
public boolean blends(int direction){
|
||||||
return PayloadBlock.blends(this, direction);
|
return PayloadBlock.blends(this, direction);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -103,6 +103,7 @@ public class PayloadDeconstructor extends PayloadBlock{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateTile(){
|
public void updateTile(){
|
||||||
|
super.updateTile();
|
||||||
if(items.total() > 0){
|
if(items.total() > 0){
|
||||||
for(int i = 0; i < dumpRate; i++){
|
for(int i = 0; i < dumpRate; i++){
|
||||||
dumpAccumulate();
|
dumpAccumulate();
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package mindustry.world.blocks.payloads;
|
|||||||
import arc.*;
|
import arc.*;
|
||||||
import arc.graphics.g2d.*;
|
import arc.graphics.g2d.*;
|
||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
|
import arc.util.io.*;
|
||||||
import mindustry.entities.units.*;
|
import mindustry.entities.units.*;
|
||||||
import mindustry.gen.*;
|
import mindustry.gen.*;
|
||||||
import mindustry.graphics.*;
|
import mindustry.graphics.*;
|
||||||
@@ -58,6 +59,7 @@ public class PayloadLoader extends PayloadBlock{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public class PayloadLoaderBuild extends PayloadBlockBuild<BuildPayload>{
|
public class PayloadLoaderBuild extends PayloadBlockBuild<BuildPayload>{
|
||||||
|
public boolean exporting = false;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean acceptPayload(Building source, Payload payload){
|
public boolean acceptPayload(Building source, Payload payload){
|
||||||
@@ -68,6 +70,12 @@ public class PayloadLoader extends PayloadBlock{
|
|||||||
build.build.block().hasLiquids && build.block().liquidCapacity >= 10f);
|
build.build.block().hasLiquids && build.block().liquidCapacity >= 10f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handlePayload(Building source, Payload payload){
|
||||||
|
super.handlePayload(source, payload);
|
||||||
|
exporting = false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean acceptItem(Building source, Item item){
|
public boolean acceptItem(Building source, Item item){
|
||||||
return items.total() < itemCapacity;
|
return items.total() < itemCapacity;
|
||||||
@@ -103,6 +111,7 @@ public class PayloadLoader extends PayloadBlock{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateTile(){
|
public void updateTile(){
|
||||||
|
super.updateTile();
|
||||||
if(shouldExport()){
|
if(shouldExport()){
|
||||||
moveOutPayload();
|
moveOutPayload();
|
||||||
}else if(moveInPayload()){
|
}else if(moveInPayload()){
|
||||||
@@ -120,6 +129,9 @@ public class PayloadLoader extends PayloadBlock{
|
|||||||
payload.build.handleItem(payload.build, item);
|
payload.build.handleItem(payload.build, item);
|
||||||
items.remove(item, 1);
|
items.remove(item, 1);
|
||||||
break;
|
break;
|
||||||
|
}else if(payload.block().separateItemCapacity || payload.block().consumes.consumesItem(item)){
|
||||||
|
exporting = true;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -147,11 +159,28 @@ public class PayloadLoader extends PayloadBlock{
|
|||||||
|
|
||||||
public boolean shouldExport(){
|
public boolean shouldExport(){
|
||||||
return payload != null && (
|
return payload != null && (
|
||||||
|
exporting ||
|
||||||
(payload.block().hasLiquids && payload.build.liquids.total() >= payload.block().liquidCapacity - 0.001f) ||
|
(payload.block().hasLiquids && payload.build.liquids.total() >= payload.block().liquidCapacity - 0.001f) ||
|
||||||
(payload.block().hasItems &&
|
(payload.block().hasItems && payload.block().separateItemCapacity && content.items().contains(i -> payload.build.items.get(i) >= payload.block().itemCapacity)));
|
||||||
(payload.block().separateItemCapacity ?
|
}
|
||||||
content.items().contains(i -> payload.build.items.get(i) >= payload.block().itemCapacity) :
|
|
||||||
payload.build.items.total() >= payload.block().itemCapacity)));
|
@Override
|
||||||
|
public byte version(){
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void write(Writes write){
|
||||||
|
super.write(write);
|
||||||
|
write.bool(exporting);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void read(Reads read, byte revision){
|
||||||
|
super.read(read, revision);
|
||||||
|
if(revision >= 1){
|
||||||
|
exporting = read.bool();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -143,6 +143,7 @@ public class PayloadMassDriver extends PayloadBlock{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateTile(){
|
public void updateTile(){
|
||||||
|
super.updateTile();
|
||||||
Building link = world.build(this.link);
|
Building link = world.build(this.link);
|
||||||
boolean hasLink = linkValid();
|
boolean hasLink = linkValid();
|
||||||
|
|
||||||
|
|||||||
@@ -103,6 +103,7 @@ public class PayloadSource extends PayloadBlock{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateTile(){
|
public void updateTile(){
|
||||||
|
super.updateTile();
|
||||||
if(payload == null){
|
if(payload == null){
|
||||||
scl = 0f;
|
scl = 0f;
|
||||||
if(unit != null){
|
if(unit != null){
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ public class PayloadUnloader extends PayloadLoader{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateTile(){
|
public void updateTile(){
|
||||||
|
super.updateTile();
|
||||||
if(shouldExport()){
|
if(shouldExport()){
|
||||||
//one-use, disposable block
|
//one-use, disposable block
|
||||||
if(payload.block().instantDeconstruct){
|
if(payload.block().instantDeconstruct){
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ public class PayloadVoid extends PayloadBlock{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateTile(){
|
public void updateTile(){
|
||||||
|
super.updateTile();
|
||||||
if(moveInPayload(false) && cons.valid()){
|
if(moveInPayload(false) && cons.valid()){
|
||||||
payload = null;
|
payload = null;
|
||||||
incinerateEffect.at(this);
|
incinerateEffect.at(this);
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ public class PowerDiode extends Block{
|
|||||||
public void updateTile(){
|
public void updateTile(){
|
||||||
super.updateTile();
|
super.updateTile();
|
||||||
|
|
||||||
if(front() == null || back() == null || !back().block.hasPower || !front().block.hasPower || back().team != front().team) return;
|
if(tile == null || front() == null || back() == null || !back().block.hasPower || !front().block.hasPower || back().team != front().team) return;
|
||||||
|
|
||||||
PowerGraph backGraph = back().power.graph;
|
PowerGraph backGraph = back().power.graph;
|
||||||
PowerGraph frontGraph = front().power.graph;
|
PowerGraph frontGraph = front().power.graph;
|
||||||
|
|||||||
@@ -444,7 +444,7 @@ public class PowerNode extends PowerBlock{
|
|||||||
public void draw(){
|
public void draw(){
|
||||||
super.draw();
|
super.draw();
|
||||||
|
|
||||||
if(Mathf.zero(Renderer.laserOpacity)) return;
|
if(Mathf.zero(Renderer.laserOpacity) || tile == emptyTile) return;
|
||||||
|
|
||||||
Draw.z(Layer.power);
|
Draw.z(Layer.power);
|
||||||
setupColor(power.graph.getSatisfaction());
|
setupColor(power.graph.getSatisfaction());
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ public class ConsumePower extends Consume{
|
|||||||
* @return The amount of power which is requested per tick.
|
* @return The amount of power which is requested per tick.
|
||||||
*/
|
*/
|
||||||
public float requestedPower(Building entity){
|
public float requestedPower(Building entity){
|
||||||
if(entity.tile().build == null) return 0f;
|
if(entity.tile == null || entity.tile.build == null) return 0f;
|
||||||
if(buffered){
|
if(buffered){
|
||||||
return (1f-entity.power.status)*capacity;
|
return (1f-entity.power.status)*capacity;
|
||||||
}else{
|
}else{
|
||||||
|
|||||||
@@ -16,6 +16,14 @@ public class Consumers{
|
|||||||
public final Bits itemFilters = new Bits(Vars.content.items().size);
|
public final Bits itemFilters = new Bits(Vars.content.items().size);
|
||||||
public final Bits liquidfilters = new Bits(Vars.content.liquids().size);
|
public final Bits liquidfilters = new Bits(Vars.content.liquids().size);
|
||||||
|
|
||||||
|
public boolean consumesItem(Item item){
|
||||||
|
return itemFilters.get(item.id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean consumesLiquid(Liquid liq){
|
||||||
|
return liquidfilters.get(liq.id);
|
||||||
|
}
|
||||||
|
|
||||||
public boolean any(){
|
public boolean any(){
|
||||||
return results != null && results.length > 0;
|
return results != null && results.length > 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,4 +24,4 @@ android.useAndroidX=true
|
|||||||
#used for slow jitpack builds; TODO see if this actually works
|
#used for slow jitpack builds; TODO see if this actually works
|
||||||
org.gradle.internal.http.socketTimeout=100000
|
org.gradle.internal.http.socketTimeout=100000
|
||||||
org.gradle.internal.http.connectionTimeout=100000
|
org.gradle.internal.http.connectionTimeout=100000
|
||||||
archash=6c228e534e3950e6254d6e7af4c6db67f834bc1d
|
archash=1046c67dc2f7e46539609e29e389e36e67acfead
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import mindustry.net.*;
|
|||||||
import mindustry.net.Packets.*;
|
import mindustry.net.Packets.*;
|
||||||
import mindustry.type.*;
|
import mindustry.type.*;
|
||||||
import mindustry.world.*;
|
import mindustry.world.*;
|
||||||
|
import mindustry.world.blocks.payloads.*;
|
||||||
import mindustry.world.blocks.storage.*;
|
import mindustry.world.blocks.storage.*;
|
||||||
import org.junit.jupiter.api.*;
|
import org.junit.jupiter.api.*;
|
||||||
import org.junit.jupiter.params.*;
|
import org.junit.jupiter.params.*;
|
||||||
@@ -791,6 +792,58 @@ public class ApplicationTests{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void checkPayloads(){
|
||||||
|
for(int x = 0; x < world.tiles.width; x++){
|
||||||
|
for(int y = 0; y < world.tiles.height; y++){
|
||||||
|
Tile tile = world.rawTile(x, y);
|
||||||
|
if(tile.build != null && tile.isCenter() && !(tile.block() instanceof CoreBlock)){
|
||||||
|
try{
|
||||||
|
tile.build.update();
|
||||||
|
}catch(Throwable t){
|
||||||
|
fail("Failed to update block in payload: '" + ((BuildPayload)tile.build.getPayload()).block() + "'", t);
|
||||||
|
}
|
||||||
|
assertEquals(tile.block(), tile.build.block);
|
||||||
|
assertEquals(tile.block().health, tile.build.health());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void allPayloadBlockTest(){
|
||||||
|
int ts = 20;
|
||||||
|
Tiles tiles = world.resize(ts * 3, ts * 3);
|
||||||
|
|
||||||
|
world.beginMapLoad();
|
||||||
|
for(int x = 0; x < tiles.width; x++){
|
||||||
|
for(int y = 0; y < tiles.height; y++){
|
||||||
|
tiles.set(x, y, new Tile(x, y, Blocks.stone, Blocks.air, Blocks.air));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tiles.getn(tiles.width - 2, tiles.height - 2).setBlock(Blocks.coreShard, Team.sharded);
|
||||||
|
|
||||||
|
Seq<Block> blocks = content.blocks().select(b -> b.canBeBuilt());
|
||||||
|
for(int i = 0; i < blocks.size; i++){
|
||||||
|
int x = (i % ts) * 3 + 1;
|
||||||
|
int y = (i / ts) * 3 + 1;
|
||||||
|
Tile tile = tiles.get(x, y);
|
||||||
|
tile.setBlock(Blocks.payloadConveyor, Team.sharded);
|
||||||
|
Building build = tile.build;
|
||||||
|
build.handlePayload(build, new BuildPayload(blocks.get(i), Team.sharded));
|
||||||
|
}
|
||||||
|
world.endMapLoad();
|
||||||
|
|
||||||
|
checkPayloads();
|
||||||
|
|
||||||
|
SaveIO.write(Core.files.external("out.msav"));
|
||||||
|
SaveIO.write(saveDirectory.child("payloads.msav"));
|
||||||
|
logic.reset();
|
||||||
|
SaveIO.load(saveDirectory.child("payloads.msav"));
|
||||||
|
|
||||||
|
checkPayloads();
|
||||||
|
}
|
||||||
|
|
||||||
@TestFactory
|
@TestFactory
|
||||||
DynamicTest[] testSectorValidity(){
|
DynamicTest[] testSectorValidity(){
|
||||||
Seq<DynamicTest> out = new Seq<>();
|
Seq<DynamicTest> out = new Seq<>();
|
||||||
|
|||||||
Reference in New Issue
Block a user