Unit assembly system progress
This commit is contained in:
@@ -9,6 +9,7 @@ import mindustry.ui.*;
|
||||
public class ConsumeItemDynamic extends Consume{
|
||||
public final Func<Building, ItemStack[]> items;
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public <T extends Building> ConsumeItemDynamic(Func<T, ItemStack[]> items){
|
||||
this.items = (Func<Building, ItemStack[]>)items;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
package mindustry.world.consumers;
|
||||
|
||||
import arc.func.*;
|
||||
import arc.scene.ui.layout.*;
|
||||
import arc.struct.*;
|
||||
import mindustry.gen.*;
|
||||
import mindustry.type.*;
|
||||
import mindustry.ui.*;
|
||||
import mindustry.world.meta.*;
|
||||
|
||||
public class ConsumePayloadDynamic extends Consume{
|
||||
public final Func<Building, Seq<BlockStack>> payloads;
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public <T extends Building> ConsumePayloadDynamic(Func<T, Seq<BlockStack>> payloads){
|
||||
this.payloads = (Func<Building, Seq<BlockStack>>)payloads;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean valid(Building build){
|
||||
return build.getBlockPayloads().contains(payloads.get(build));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void trigger(Building build){
|
||||
build.getBlockPayloads().remove(payloads.get(build));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void display(Stats stats){
|
||||
//needs to be implemented by the block itself, not enough info to display here
|
||||
}
|
||||
|
||||
@Override
|
||||
public void build(Building build, Table table){
|
||||
Seq[] current = {payloads.get(build)};
|
||||
|
||||
table.table(cont -> {
|
||||
table.update(() -> {
|
||||
if(current[0] != payloads.get(build)){
|
||||
rebuild(build, cont);
|
||||
current[0] = payloads.get(build);
|
||||
}
|
||||
});
|
||||
|
||||
rebuild(build, cont);
|
||||
});
|
||||
}
|
||||
|
||||
private void rebuild(Building build, Table table){
|
||||
var inv = build.getBlockPayloads();
|
||||
var pay = payloads.get(build);
|
||||
|
||||
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);
|
||||
if(++i % 4 == 0) c.row();
|
||||
}
|
||||
}).left();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ConsumeType type(){
|
||||
return ConsumeType.payload;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user