Unit requirements for payloads

This commit is contained in:
Anuken
2022-02-17 10:41:33 -05:00
parent fcc26154c2
commit fd764bd517
25 changed files with 203 additions and 156 deletions
@@ -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();