Payload loader/unloader progress
Before Width: | Height: | Size: 712 B After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 895 B |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 655 B |
Before Width: | Height: | Size: 651 B After Width: | Height: | Size: 609 B |
BIN
core/assets-raw/sprites/blocks/payload/large-constructor-top.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 4.1 KiB |
BIN
core/assets-raw/sprites/blocks/payload/payload-loader-top.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
core/assets-raw/sprites/blocks/payload/payload-loader.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
core/assets-raw/sprites/blocks/payload/payload-unloader-top.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
core/assets-raw/sprites/blocks/payload/payload-unloader.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
@ -397,3 +397,5 @@
|
||||
63336=deconstructor|block-deconstructor-ui
|
||||
63335=constructor|block-constructor-ui
|
||||
63334=large-constructor|block-large-constructor-ui
|
||||
63333=payload-loader|block-payload-loader-ui
|
||||
63332=payload-unloader|block-payload-unloader-ui
|
||||
|
@ -96,7 +96,7 @@ public class Blocks implements ContentList{
|
||||
repairPoint, repairTurret, resupplyPoint,
|
||||
|
||||
//payloads
|
||||
payloadConveyor, payloadRouter, payloadPropulsionTower, deconstructor, constructor, largeConstructor, blockLoader, blockUnloader,
|
||||
payloadConveyor, payloadRouter, payloadPropulsionTower, deconstructor, constructor, largeConstructor, payloadLoader, payloadUnloader,
|
||||
|
||||
//logic
|
||||
message, switchBlock, microProcessor, logicProcessor, hyperProcessor, largeLogicDisplay, logicDisplay, memoryCell, memoryBank,
|
||||
@ -110,7 +110,7 @@ public class Blocks implements ContentList{
|
||||
|
||||
/** @deprecated use the blocks with proper names, */
|
||||
@Deprecated
|
||||
public static Block blockForge;
|
||||
public static Block blockForge, blockLoader, blockUnloader;
|
||||
|
||||
@Override
|
||||
public void load(){
|
||||
@ -2255,22 +2255,24 @@ public class Blocks implements ContentList{
|
||||
size = 5;
|
||||
}};
|
||||
|
||||
blockLoader = new BlockLoader("block-loader"){{
|
||||
requirements(Category.units, BuildVisibility.debugOnly, with(Items.thorium, 100));
|
||||
payloadLoader = new BlockLoader("payload-loader"){{
|
||||
requirements(Category.units, with(Items.thorium, 100));
|
||||
hasPower = true;
|
||||
consumes.power(2f);
|
||||
size = 3;
|
||||
}};
|
||||
|
||||
blockUnloader = new BlockUnloader("block-unloader"){{
|
||||
requirements(Category.units, BuildVisibility.debugOnly, with(Items.thorium, 100));
|
||||
payloadUnloader = new BlockUnloader("payload-unloader"){{
|
||||
requirements(Category.units, with(Items.thorium, 100));
|
||||
hasPower = true;
|
||||
consumes.power(2f);
|
||||
size = 3;
|
||||
}};
|
||||
|
||||
//TODO deprecated
|
||||
blockForge = deconstructor;
|
||||
blockForge = constructor;
|
||||
blockLoader = payloadLoader;
|
||||
blockUnloader = payloadUnloader;
|
||||
|
||||
//endregion
|
||||
//region sandbox
|
||||
|
@ -34,7 +34,7 @@ public class ArmoredConduit extends Conduit{
|
||||
|
||||
@Override
|
||||
public boolean acceptLiquid(Building source, Liquid liquid){
|
||||
return super.acceptLiquid(source, liquid) && (source.block instanceof Conduit ||
|
||||
return super.acceptLiquid(source, liquid) && (tile == null || source.block instanceof Conduit ||
|
||||
source.tile.absoluteRelativeTo(tile.x, tile.y) == rotation);
|
||||
}
|
||||
}
|
||||
|
@ -130,7 +130,7 @@ public class Conduit extends LiquidBlock implements Autotiler{
|
||||
public boolean acceptLiquid(Building source, Liquid liquid){
|
||||
noSleep();
|
||||
return (liquids.current() == liquid || liquids.currentAmount() < 0.2f)
|
||||
&& ((source.relativeTo(tile.x, tile.y) + 2) % 4 != rotation);
|
||||
&& (tile == null || (source.relativeTo(tile.x, tile.y) + 2) % 4 != rotation);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -15,16 +15,17 @@ public class BlockLoader extends PayloadBlock{
|
||||
public final int timerLoad = timers++;
|
||||
|
||||
public float loadTime = 2f;
|
||||
public int itemsLoaded = 5;
|
||||
public float liquidsLoaded = 5f;
|
||||
public int itemsLoaded = 8;
|
||||
public float liquidsLoaded = 40f;
|
||||
public int maxBlockSize = 2;
|
||||
|
||||
public BlockLoader(String name){
|
||||
super(name);
|
||||
|
||||
hasItems = true;
|
||||
itemCapacity = 25;
|
||||
//liquidCapacity = 25;
|
||||
hasLiquids = true;
|
||||
itemCapacity = 100;
|
||||
liquidCapacity = 100f;
|
||||
update = true;
|
||||
outputsPayload = true;
|
||||
size = 3;
|
||||
@ -61,9 +62,9 @@ public class BlockLoader extends PayloadBlock{
|
||||
@Override
|
||||
public boolean acceptPayload(Building source, Payload payload){
|
||||
return super.acceptPayload(source, payload) &&
|
||||
(payload instanceof BuildPayload build) &&
|
||||
((build.build.block.hasItems && build.block().unloadable && build.block().itemCapacity >= 10 && build.block().size <= maxBlockSize)/* ||
|
||||
((BlockPayload)payload).entity.block().hasLiquids && ((BlockPayload)payload).block().liquidCapacity >= 10f)*/);
|
||||
payload instanceof BuildPayload build &&
|
||||
((build.build.block.hasItems && build.block().unloadable && build.block().itemCapacity >= 10 && build.block().size <= maxBlockSize) ||
|
||||
build.build.block().hasLiquids && build.block().liquidCapacity >= 10f);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -71,6 +72,11 @@ public class BlockLoader extends PayloadBlock{
|
||||
return items.total() < itemCapacity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean acceptLiquid(Building source, Liquid liquid){
|
||||
return liquids.current() == liquid || liquids.currentAmount() < 0.2f;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void draw(){
|
||||
Draw.rect(region, x, y);
|
||||
@ -120,17 +126,17 @@ public class BlockLoader extends PayloadBlock{
|
||||
}
|
||||
}
|
||||
|
||||
//load up liquids (disabled)
|
||||
/*
|
||||
//load up liquids
|
||||
if(payload.block().hasLiquids && liquids.total() >= 0.001f){
|
||||
Liquid liq = liquids.current();
|
||||
float total = liquids.currentAmount();
|
||||
float flow = Math.min(Math.min(liquidsLoaded * delta(), payload.block().liquidCapacity - payload.entity.liquids.get(liq) - 0.0001f), total);
|
||||
if(payload.entity.acceptLiquid(payload.entity, liq, flow)){
|
||||
payload.entity.liquids.add(liq, flow);
|
||||
float flow = Math.min(Math.min(liquidsLoaded * edelta(), payload.block().liquidCapacity - payload.build.liquids.get(liq)), total);
|
||||
//TODO potential crash here
|
||||
if(payload.build.acceptLiquid(payload.build, liq)){
|
||||
payload.build.liquids.add(liq, flow);
|
||||
liquids.remove(liq, flow);
|
||||
}
|
||||
}*/
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -139,8 +145,8 @@ public class BlockLoader extends PayloadBlock{
|
||||
}
|
||||
|
||||
public boolean shouldExport(){
|
||||
return payload != null &&
|
||||
((payload.block().hasLiquids && payload.build.liquids.total() >= payload.block().liquidCapacity - 0.001f) ||
|
||||
return payload != null && (
|
||||
(payload.block().hasLiquids && payload.build.liquids.total() >= payload.block().liquidCapacity - 0.001f) ||
|
||||
(payload.block().hasItems && payload.build.items.total() >= payload.block().itemCapacity));
|
||||
}
|
||||
}
|
||||
|
@ -6,6 +6,7 @@ import mindustry.type.*;
|
||||
import static mindustry.Vars.*;
|
||||
|
||||
public class BlockUnloader extends BlockLoader{
|
||||
public int offloadSpeed = 4;
|
||||
|
||||
public BlockUnloader(String name){
|
||||
super(name);
|
||||
@ -28,13 +29,18 @@ public class BlockUnloader extends BlockLoader{
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean acceptLiquid(Building source, Liquid liquid){
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateTile(){
|
||||
if(shouldExport()){
|
||||
moveOutPayload();
|
||||
}else if(moveInPayload()){
|
||||
|
||||
//load up items
|
||||
//unload items
|
||||
if(payload.block().hasItems && !full()){
|
||||
if(efficiency() > 0.01f && timer(timerLoad, loadTime / efficiency())){
|
||||
//load up items a set amount of times
|
||||
@ -50,9 +56,24 @@ public class BlockUnloader extends BlockLoader{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//unload liquids
|
||||
//TODO tile is null may crash
|
||||
if(payload.block().hasLiquids && payload.build.liquids.currentAmount() >= 0.01f &&
|
||||
(liquids.current() == payload.build.liquids.current() || liquids.currentAmount() <= 0.2f)){
|
||||
var liq = payload.build.liquids.current();
|
||||
float remaining = liquidCapacity - liquids.currentAmount();
|
||||
float flow = Math.min(Math.min(liquidsLoaded * delta(), remaining), payload.build.liquids.currentAmount());
|
||||
|
||||
liquids.add(liq, flow);
|
||||
payload.build.liquids.remove(liq, flow);
|
||||
}
|
||||
}
|
||||
|
||||
dump();
|
||||
dumpLiquid(liquids.current());
|
||||
for(int i = 0; i < offloadSpeed; i++){
|
||||
dumpAccumulate();
|
||||
}
|
||||
}
|
||||
|
||||
public boolean full(){
|
||||
@ -61,7 +82,10 @@ public class BlockUnloader extends BlockLoader{
|
||||
|
||||
@Override
|
||||
public boolean shouldExport(){
|
||||
return payload != null && (payload.block().hasItems && payload.build.items.empty());
|
||||
return payload != null && (
|
||||
(!payload.block().hasItems || payload.build.items.empty()) &&
|
||||
(!payload.block().hasLiquids || payload.build.liquids.currentAmount() <= 0.001f)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -10,4 +10,4 @@ kapt.include.compile.classpath=false
|
||||
kotlin.stdlib.default.dependency=false
|
||||
#needed for android compilation
|
||||
android.useAndroidX=true
|
||||
archash=a81197126a9190337ab9065734b5134d5f08ac05
|
||||
archash=47822d851954fd2707d51731042056450f07ca8c
|
||||
|
@ -35,7 +35,7 @@ def transformColors = { List<List<String>> list ->
|
||||
|
||||
//TODO implementing this in gradle is a bad idea
|
||||
//d4816b
|
||||
transformColors([["a387ea", "8a73c6", "5c5e9f"], ["6e7080", "989aa4", "b0bac0"], ["bc5452", "ea8878", "feb380"],
|
||||
transformColors([["bf92f9", "8a73c6", "665c9f"], ["6e7080", "989aa4", "b0bac0"], ["bc5452", "ea8878", "feb380"],
|
||||
["de9458", "f8c266", "ffe18f"], ["feb380", "ea8878", "bc5452"], ["d4816b", "eab678", "ffd37f"],
|
||||
["ffffff", "dcc6c6", "9d7f7f"], ["df7646", "b23a4d", "752249"], ["3c3837", "515151", "646567"],
|
||||
["5757c1", "6f80e8", "88a4ff"], ["8f665b", "b28768", "c9a58f"]])
|
||||
|