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
|
63336=deconstructor|block-deconstructor-ui
|
||||||
63335=constructor|block-constructor-ui
|
63335=constructor|block-constructor-ui
|
||||||
63334=large-constructor|block-large-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,
|
repairPoint, repairTurret, resupplyPoint,
|
||||||
|
|
||||||
//payloads
|
//payloads
|
||||||
payloadConveyor, payloadRouter, payloadPropulsionTower, deconstructor, constructor, largeConstructor, blockLoader, blockUnloader,
|
payloadConveyor, payloadRouter, payloadPropulsionTower, deconstructor, constructor, largeConstructor, payloadLoader, payloadUnloader,
|
||||||
|
|
||||||
//logic
|
//logic
|
||||||
message, switchBlock, microProcessor, logicProcessor, hyperProcessor, largeLogicDisplay, logicDisplay, memoryCell, memoryBank,
|
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 use the blocks with proper names, */
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public static Block blockForge;
|
public static Block blockForge, blockLoader, blockUnloader;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void load(){
|
public void load(){
|
||||||
@ -2255,22 +2255,24 @@ public class Blocks implements ContentList{
|
|||||||
size = 5;
|
size = 5;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
blockLoader = new BlockLoader("block-loader"){{
|
payloadLoader = new BlockLoader("payload-loader"){{
|
||||||
requirements(Category.units, BuildVisibility.debugOnly, with(Items.thorium, 100));
|
requirements(Category.units, with(Items.thorium, 100));
|
||||||
hasPower = true;
|
hasPower = true;
|
||||||
consumes.power(2f);
|
consumes.power(2f);
|
||||||
size = 3;
|
size = 3;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
blockUnloader = new BlockUnloader("block-unloader"){{
|
payloadUnloader = new BlockUnloader("payload-unloader"){{
|
||||||
requirements(Category.units, BuildVisibility.debugOnly, with(Items.thorium, 100));
|
requirements(Category.units, with(Items.thorium, 100));
|
||||||
hasPower = true;
|
hasPower = true;
|
||||||
consumes.power(2f);
|
consumes.power(2f);
|
||||||
size = 3;
|
size = 3;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
//TODO deprecated
|
//TODO deprecated
|
||||||
blockForge = deconstructor;
|
blockForge = constructor;
|
||||||
|
blockLoader = payloadLoader;
|
||||||
|
blockUnloader = payloadUnloader;
|
||||||
|
|
||||||
//endregion
|
//endregion
|
||||||
//region sandbox
|
//region sandbox
|
||||||
|
@ -34,7 +34,7 @@ public class ArmoredConduit extends Conduit{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean acceptLiquid(Building source, Liquid liquid){
|
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);
|
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){
|
public boolean acceptLiquid(Building source, Liquid liquid){
|
||||||
noSleep();
|
noSleep();
|
||||||
return (liquids.current() == liquid || liquids.currentAmount() < 0.2f)
|
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
|
@Override
|
||||||
|
@ -15,16 +15,17 @@ public class BlockLoader extends PayloadBlock{
|
|||||||
public final int timerLoad = timers++;
|
public final int timerLoad = timers++;
|
||||||
|
|
||||||
public float loadTime = 2f;
|
public float loadTime = 2f;
|
||||||
public int itemsLoaded = 5;
|
public int itemsLoaded = 8;
|
||||||
public float liquidsLoaded = 5f;
|
public float liquidsLoaded = 40f;
|
||||||
public int maxBlockSize = 2;
|
public int maxBlockSize = 2;
|
||||||
|
|
||||||
public BlockLoader(String name){
|
public BlockLoader(String name){
|
||||||
super(name);
|
super(name);
|
||||||
|
|
||||||
hasItems = true;
|
hasItems = true;
|
||||||
itemCapacity = 25;
|
hasLiquids = true;
|
||||||
//liquidCapacity = 25;
|
itemCapacity = 100;
|
||||||
|
liquidCapacity = 100f;
|
||||||
update = true;
|
update = true;
|
||||||
outputsPayload = true;
|
outputsPayload = true;
|
||||||
size = 3;
|
size = 3;
|
||||||
@ -61,9 +62,9 @@ public class BlockLoader extends PayloadBlock{
|
|||||||
@Override
|
@Override
|
||||||
public boolean acceptPayload(Building source, Payload payload){
|
public boolean acceptPayload(Building source, Payload payload){
|
||||||
return super.acceptPayload(source, payload) &&
|
return super.acceptPayload(source, payload) &&
|
||||||
(payload instanceof BuildPayload build) &&
|
payload instanceof BuildPayload build &&
|
||||||
((build.build.block.hasItems && build.block().unloadable && build.block().itemCapacity >= 10 && build.block().size <= maxBlockSize)/* ||
|
((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)*/);
|
build.build.block().hasLiquids && build.block().liquidCapacity >= 10f);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -71,6 +72,11 @@ public class BlockLoader extends PayloadBlock{
|
|||||||
return items.total() < itemCapacity;
|
return items.total() < itemCapacity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean acceptLiquid(Building source, Liquid liquid){
|
||||||
|
return liquids.current() == liquid || liquids.currentAmount() < 0.2f;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void draw(){
|
public void draw(){
|
||||||
Draw.rect(region, x, y);
|
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){
|
if(payload.block().hasLiquids && liquids.total() >= 0.001f){
|
||||||
Liquid liq = liquids.current();
|
Liquid liq = liquids.current();
|
||||||
float total = liquids.currentAmount();
|
float total = liquids.currentAmount();
|
||||||
float flow = Math.min(Math.min(liquidsLoaded * delta(), payload.block().liquidCapacity - payload.entity.liquids.get(liq) - 0.0001f), total);
|
float flow = Math.min(Math.min(liquidsLoaded * edelta(), payload.block().liquidCapacity - payload.build.liquids.get(liq)), total);
|
||||||
if(payload.entity.acceptLiquid(payload.entity, liq, flow)){
|
//TODO potential crash here
|
||||||
payload.entity.liquids.add(liq, flow);
|
if(payload.build.acceptLiquid(payload.build, liq)){
|
||||||
|
payload.build.liquids.add(liq, flow);
|
||||||
liquids.remove(liq, flow);
|
liquids.remove(liq, flow);
|
||||||
}
|
}
|
||||||
}*/
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -139,8 +145,8 @@ public class BlockLoader extends PayloadBlock{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean shouldExport(){
|
public boolean shouldExport(){
|
||||||
return payload != null &&
|
return payload != null && (
|
||||||
((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.build.items.total() >= payload.block().itemCapacity));
|
(payload.block().hasItems && payload.build.items.total() >= payload.block().itemCapacity));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ import mindustry.type.*;
|
|||||||
import static mindustry.Vars.*;
|
import static mindustry.Vars.*;
|
||||||
|
|
||||||
public class BlockUnloader extends BlockLoader{
|
public class BlockUnloader extends BlockLoader{
|
||||||
|
public int offloadSpeed = 4;
|
||||||
|
|
||||||
public BlockUnloader(String name){
|
public BlockUnloader(String name){
|
||||||
super(name);
|
super(name);
|
||||||
@ -28,13 +29,18 @@ public class BlockUnloader extends BlockLoader{
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean acceptLiquid(Building source, Liquid liquid){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateTile(){
|
public void updateTile(){
|
||||||
if(shouldExport()){
|
if(shouldExport()){
|
||||||
moveOutPayload();
|
moveOutPayload();
|
||||||
}else if(moveInPayload()){
|
}else if(moveInPayload()){
|
||||||
|
|
||||||
//load up items
|
//unload items
|
||||||
if(payload.block().hasItems && !full()){
|
if(payload.block().hasItems && !full()){
|
||||||
if(efficiency() > 0.01f && timer(timerLoad, loadTime / efficiency())){
|
if(efficiency() > 0.01f && timer(timerLoad, loadTime / efficiency())){
|
||||||
//load up items a set amount of times
|
//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(){
|
public boolean full(){
|
||||||
@ -61,7 +82,10 @@ public class BlockUnloader extends BlockLoader{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean shouldExport(){
|
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
|
kotlin.stdlib.default.dependency=false
|
||||||
#needed for android compilation
|
#needed for android compilation
|
||||||
android.useAndroidX=true
|
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
|
//TODO implementing this in gradle is a bad idea
|
||||||
//d4816b
|
//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"],
|
["de9458", "f8c266", "ffe18f"], ["feb380", "ea8878", "bc5452"], ["d4816b", "eab678", "ffd37f"],
|
||||||
["ffffff", "dcc6c6", "9d7f7f"], ["df7646", "b23a4d", "752249"], ["3c3837", "515151", "646567"],
|
["ffffff", "dcc6c6", "9d7f7f"], ["df7646", "b23a4d", "752249"], ["3c3837", "515151", "646567"],
|
||||||
["5757c1", "6f80e8", "88a4ff"], ["8f665b", "b28768", "c9a58f"]])
|
["5757c1", "6f80e8", "88a4ff"], ["8f665b", "b28768", "c9a58f"]])
|
||||||
|