Unit requirements for payloads
This commit is contained in:
@@ -9,11 +9,11 @@ import mindustry.ui.*;
|
||||
import mindustry.world.meta.*;
|
||||
|
||||
public class ConsumePayloadDynamic extends Consume{
|
||||
public final Func<Building, Seq<BlockStack>> payloads;
|
||||
public final Func<Building, Seq<PayloadStack>> payloads;
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public <T extends Building> ConsumePayloadDynamic(Func<T, Seq<BlockStack>> payloads){
|
||||
this.payloads = (Func<Building, Seq<BlockStack>>)payloads;
|
||||
public <T extends Building> ConsumePayloadDynamic(Func<T, Seq<PayloadStack>> payloads){
|
||||
this.payloads = (Func<Building, Seq<PayloadStack>>)payloads;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -54,8 +54,8 @@ public class ConsumePayloadDynamic extends Consume{
|
||||
table.table(c -> {
|
||||
int i = 0;
|
||||
for(var stack : pay){
|
||||
c.add(new ReqImage(new ItemImage(stack.block.uiIcon, stack.amount),
|
||||
() -> inv.contains(stack.block, stack.amount))).padRight(8);
|
||||
c.add(new ReqImage(new ItemImage(stack.item.uiIcon, stack.amount),
|
||||
() -> inv.contains(stack.item, stack.amount))).padRight(8);
|
||||
if(++i % 4 == 0) c.row();
|
||||
}
|
||||
}).left();
|
||||
|
||||
@@ -2,23 +2,25 @@ package mindustry.world.consumers;
|
||||
|
||||
import arc.func.*;
|
||||
import arc.scene.ui.layout.*;
|
||||
import arc.struct.*;
|
||||
import mindustry.*;
|
||||
import mindustry.ctype.*;
|
||||
import mindustry.gen.*;
|
||||
import mindustry.ui.*;
|
||||
import mindustry.world.*;
|
||||
import mindustry.world.meta.*;
|
||||
|
||||
import static mindustry.Vars.*;
|
||||
|
||||
public class ConsumePayloadFilter extends Consume{
|
||||
//cache fitting blocks to prevent search over all blocks later
|
||||
protected final Block[] fitting;
|
||||
protected final UnlockableContent[] fitting;
|
||||
|
||||
public Boolf<Block> filter;
|
||||
public Boolf<UnlockableContent> filter;
|
||||
|
||||
public ConsumePayloadFilter(Boolf<Block> filter){
|
||||
public ConsumePayloadFilter(Boolf<UnlockableContent> filter){
|
||||
this.filter = filter;
|
||||
this.fitting = Vars.content.blocks().select(filter).toArray(Block.class);
|
||||
this.fitting = Vars.content.blocks().copy().<UnlockableContent>as().and(content.units().as())
|
||||
.select(filter).toArray(UnlockableContent.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -45,7 +47,7 @@ public class ConsumePayloadFilter extends Consume{
|
||||
|
||||
@Override
|
||||
public void display(Stats stats){
|
||||
stats.add(booster ? Stat.booster : Stat.input, StatValues.blocks(filter));
|
||||
stats.add(booster ? Stat.booster : Stat.input, StatValues.content(new Seq<>(fitting)));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -8,9 +8,9 @@ import mindustry.ui.*;
|
||||
import mindustry.world.meta.*;
|
||||
|
||||
public class ConsumePayloads extends Consume{
|
||||
public Seq<BlockStack> payloads;
|
||||
public Seq<PayloadStack> payloads;
|
||||
|
||||
public ConsumePayloads(Seq<BlockStack> payloads){
|
||||
public ConsumePayloads(Seq<PayloadStack> payloads){
|
||||
this.payloads = payloads;
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ public class ConsumePayloads extends Consume{
|
||||
for(var stack : payloads){
|
||||
stats.add(Stat.input, t -> {
|
||||
t.add(new ItemImage(stack));
|
||||
t.add(stack.block.localizedName).padLeft(4).padRight(4);
|
||||
t.add(stack.item.localizedName).padLeft(4).padRight(4);
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -43,8 +43,8 @@ public class ConsumePayloads extends Consume{
|
||||
table.table(c -> {
|
||||
int i = 0;
|
||||
for(var stack : payloads){
|
||||
c.add(new ReqImage(new ItemImage(stack.block.uiIcon, stack.amount),
|
||||
() -> inv.contains(stack.block, stack.amount))).padRight(8);
|
||||
c.add(new ReqImage(new ItemImage(stack.item.uiIcon, stack.amount),
|
||||
() -> inv.contains(stack.item, stack.amount))).padRight(8);
|
||||
if(++i % 4 == 0) c.row();
|
||||
}
|
||||
}).left();
|
||||
|
||||
Reference in New Issue
Block a user