Payload router

This commit is contained in:
Anuken
2020-06-03 01:13:44 -04:00
parent 140e1fa53e
commit 0382d40dcc
18 changed files with 2154 additions and 2005 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 129 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 513 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 307 B

+1
View File
@@ -237,3 +237,4 @@
63507=block-unloader|block-block-unloader-medium 63507=block-unloader|block-block-unloader-medium
63506=core-silo|block-core-silo-medium 63506=core-silo|block-core-silo-medium
63505=data-processor|block-data-processor-medium 63505=data-processor|block-data-processor-medium
63504=payload-router|block-payload-router-medium
Binary file not shown.

Before

Width:  |  Height:  |  Size: 740 B

After

Width:  |  Height:  |  Size: 744 B

File diff suppressed because it is too large Load Diff
Binary file not shown.

Before

Width:  |  Height:  |  Size: 824 KiB

After

Width:  |  Height:  |  Size: 829 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 126 KiB

After

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 270 KiB

After

Width:  |  Height:  |  Size: 273 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 887 KiB

After

Width:  |  Height:  |  Size: 897 KiB

+2 -3
View File
@@ -1,6 +1,5 @@
package mindustry.ai.types; package mindustry.ai.types;
import arc.util.*;
import mindustry.ai.Pathfinder.*; import mindustry.ai.Pathfinder.*;
import mindustry.entities.*; import mindustry.entities.*;
import mindustry.entities.units.*; import mindustry.entities.units.*;
@@ -60,7 +59,7 @@ public class GroundAI extends AIController{
if(tile == targetTile) return; if(tile == targetTile) return;
unit.moveAt(vec.trns(unit.angleTo(targetTile), unit.type().speed * Time.delta())); unit.moveAt(vec.trns(unit.angleTo(targetTile), unit.type().speed));
} }
protected void moveAwayFromCore(){ protected void moveAwayFromCore(){
@@ -88,6 +87,6 @@ public class GroundAI extends AIController{
if(tile == targetTile || core == null || unit.within(core, 120f)) return; if(tile == targetTile || core == null || unit.within(core, 120f)) return;
unit.moveAt(vec.trns(unit.angleTo(targetTile), unit.type().speed * Time.delta())); unit.moveAt(vec.trns(unit.angleTo(targetTile), unit.type().speed));
} }
} }
+6 -2
View File
@@ -58,7 +58,7 @@ public class Blocks implements ContentList{
//transport //transport
conveyor, titaniumConveyor, plastaniumConveyor, armoredConveyor, distributor, junction, itemBridge, phaseConveyor, sorter, invertedSorter, router, conveyor, titaniumConveyor, plastaniumConveyor, armoredConveyor, distributor, junction, itemBridge, phaseConveyor, sorter, invertedSorter, router,
overflowGate, underflowGate, massDriver, massConveyor, overflowGate, underflowGate, massDriver, payloadConveyor, payloadRouter,
//liquid //liquid
mechanicalPump, rotaryPump, thermalPump, conduit, pulseConduit, platedConduit, liquidRouter, liquidTank, liquidJunction, bridgeConduit, phaseConduit, mechanicalPump, rotaryPump, thermalPump, conduit, pulseConduit, platedConduit, liquidRouter, liquidTank, liquidJunction, bridgeConduit, phaseConduit,
@@ -990,7 +990,11 @@ public class Blocks implements ContentList{
consumes.power(1.75f); consumes.power(1.75f);
}}; }};
massConveyor = new PayloadConveyor("mass-conveyor"){{ payloadConveyor = new PayloadConveyor("mass-conveyor"){{
requirements(Category.distribution, ItemStack.with(Items.copper, 1));
}};
payloadRouter = new PayloadRouter("payload-router"){{
requirements(Category.distribution, ItemStack.with(Items.copper, 1)); requirements(Category.distribution, ItemStack.with(Items.copper, 1));
}}; }};
+1
View File
@@ -45,6 +45,7 @@ public class Block extends UnlockableContent{
public boolean consumesPower = true; public boolean consumesPower = true;
public boolean outputsPower = false; public boolean outputsPower = false;
public boolean outputsPayload = false; public boolean outputsPayload = false;
public boolean outputFacing = true;
public boolean acceptsItems = false; public boolean acceptsItems = false;
public int itemCapacity = 10; public int itemCapacity = 10;
@@ -95,20 +95,30 @@ public class PayloadConveyor extends Block{
//move forward. //move forward.
next.handlePayload(this, item); next.handlePayload(this, item);
item = null; item = null;
moved();
} }
}else if(!blocked){ }else if(!blocked){
//dump item forward //dump item forward
if(item.dump()){ if(item.dump()){
item = null; item = null;
moved();
} }
} }
} }
} }
} }
public void moved(){
}
public void drawBottom(){
super.draw();
}
@Override @Override
public void draw(){ public void draw(){
super.draw(); drawBottom();
float dst = 0.8f; float dst = 0.8f;
@@ -0,0 +1,46 @@
package mindustry.world.blocks.distribution;
import arc.graphics.g2d.*;
import arc.util.*;
import mindustry.annotations.Annotations.*;
import mindustry.entities.units.*;
import mindustry.graphics.*;
public class PayloadRouter extends PayloadConveyor{
public @Load("@-over") TextureRegion overRegion;
public PayloadRouter(String name){
super(name);
outputsPayload = true;
outputFacing = false;
}
@Override
public void drawRequestRegion(BuildRequest req, Eachable<BuildRequest> list){
super.drawRequestRegion(req, list);
Draw.rect(overRegion, req.drawx(), req.drawy());
}
public class PayloadRouterEntity extends PayloadConveyorEntity{
@Override
public void moved(){
int rotations = 0;
do{
tile.rotation((tile.rotation() + 1) % 4);
onProximityUpdate();
}while((blocked || next == null) && ++rotations < 4);
}
@Override
public void draw(){
super.draw();
Draw.z(Layer.block);
Draw.rect(overRegion, x, y);
}
}
}
@@ -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.*; import mindustry.*;
import mindustry.gen.*; import mindustry.gen.*;
@@ -32,6 +33,8 @@ public class UnitPayload implements Payload{
//no client dumping //no client dumping
if(Vars.net.client()) return true; if(Vars.net.client()) return true;
//prevents stacking
unit.vel().add(Mathf.range(0.5f), Mathf.range(0.5f));
unit.add(); unit.add();
return true; return true;
@@ -28,7 +28,8 @@ public class PayloadAcceptor extends Block{
accept.block().size == size && accept.block().size == size &&
accept.block().outputsPayload && accept.block().outputsPayload &&
//block must either be facing this one, or not be rotating //block must either be facing this one, or not be rotating
((accept.tileX() + Geometry.d4(accept.rotation()).x * size == tile.tileX() && accept.tileY() + Geometry.d4(accept.rotation()).y * size == tile.tileY()) || !accept.block().rotate); ((accept.tileX() + Geometry.d4(accept.rotation()).x * size == tile.tileX() && accept.tileY() + Geometry.d4(accept.rotation()).y * size == tile.tileY())
|| !accept.block().rotate || (accept.block().rotate && !accept.block().outputFacing));
} }
public class PayloadAcceptorEntity<T extends Payload> extends TileEntity{ public class PayloadAcceptorEntity<T extends Payload> extends TileEntity{