Configurable plans, taken from Foo's
This commit is contained in:
@@ -1431,6 +1431,16 @@ public class Block extends UnlockableContent implements Senseable{
|
||||
}
|
||||
}
|
||||
|
||||
/** Fills the specified array with the list of configuration options this block has. Only used for plans. */
|
||||
public void getPlanConfigs(Seq<UnlockableContent> options){
|
||||
if(configurations.containsKey(Item.class)){
|
||||
options.add(content.items());
|
||||
}
|
||||
if(configurations.containsKey(Liquid.class)){
|
||||
options.add(content.liquids());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public double sense(LAccess sensor){
|
||||
return switch(sensor){
|
||||
|
||||
@@ -7,6 +7,7 @@ import arc.struct.*;
|
||||
import arc.util.*;
|
||||
import arc.util.io.*;
|
||||
import mindustry.*;
|
||||
import mindustry.ctype.*;
|
||||
import mindustry.world.*;
|
||||
import mindustry.world.blocks.*;
|
||||
import mindustry.world.blocks.storage.*;
|
||||
@@ -44,10 +45,15 @@ public class Constructor extends BlockProducer{
|
||||
stats.add(Stat.output, "@x@ ~ @x@", minBlockSize, minBlockSize, maxBlockSize, maxBlockSize);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getPlanConfigs(Seq<UnlockableContent> options){
|
||||
options.add(content.blocks().select(this::canProduce));
|
||||
}
|
||||
|
||||
public boolean canProduce(Block b){
|
||||
return b.isVisible() && b.size >= minBlockSize && b.size <= maxBlockSize && !(b instanceof CoreBlock) && !state.rules.isBanned(b) && b.environmentBuildable() && (filter.isEmpty() || filter.contains(b));
|
||||
}
|
||||
|
||||
|
||||
public class ConstructorBuild extends BlockProducerBuild{
|
||||
public @Nullable Block recipe;
|
||||
|
||||
@@ -65,7 +71,7 @@ public class Constructor extends BlockProducer{
|
||||
public Object config(){
|
||||
return recipe;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void drawSelect(){
|
||||
if(recipe != null){
|
||||
|
||||
@@ -4,6 +4,7 @@ import arc.graphics.*;
|
||||
import arc.graphics.g2d.*;
|
||||
import arc.math.*;
|
||||
import arc.scene.ui.layout.*;
|
||||
import arc.struct.*;
|
||||
import arc.util.*;
|
||||
import arc.util.io.*;
|
||||
import mindustry.*;
|
||||
@@ -22,7 +23,7 @@ import static mindustry.Vars.*;
|
||||
|
||||
public class PayloadRouter extends PayloadConveyor{
|
||||
public boolean invert = false;
|
||||
|
||||
|
||||
public @Load("@-over") TextureRegion overRegion;
|
||||
|
||||
public PayloadRouter(String name){
|
||||
@@ -45,6 +46,12 @@ public class PayloadRouter extends PayloadConveyor{
|
||||
Draw.rect(overRegion, plan.drawx(), plan.drawy());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getPlanConfigs(Seq<UnlockableContent> options){
|
||||
options.add(content.blocks().select(this::canSort));
|
||||
options.add(content.units().select(this::canSort));
|
||||
}
|
||||
|
||||
public boolean canSort(Block b){
|
||||
return b.isVisible() && b.size <= size && !(b instanceof CoreBlock) && !state.rules.isBanned(b) && b.environmentBuildable();
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import arc.graphics.g2d.*;
|
||||
import arc.math.*;
|
||||
import arc.math.geom.*;
|
||||
import arc.scene.ui.layout.*;
|
||||
import arc.struct.*;
|
||||
import arc.util.*;
|
||||
import arc.util.io.*;
|
||||
import mindustry.*;
|
||||
@@ -66,6 +67,12 @@ public class PayloadSource extends PayloadBlock{
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getPlanConfigs(Seq<UnlockableContent> options){
|
||||
options.add(content.blocks().select(this::canProduce));
|
||||
options.add(content.units().select(this::canProduce));
|
||||
}
|
||||
|
||||
@Override
|
||||
public TextureRegion[] icons(){
|
||||
return new TextureRegion[]{region, outRegion, topRegion};
|
||||
|
||||
@@ -13,6 +13,7 @@ import arc.util.*;
|
||||
import arc.util.io.*;
|
||||
import mindustry.*;
|
||||
import mindustry.ai.*;
|
||||
import mindustry.ctype.*;
|
||||
import mindustry.entities.*;
|
||||
import mindustry.entities.units.*;
|
||||
import mindustry.game.EventType.*;
|
||||
@@ -172,6 +173,15 @@ public class UnitFactory extends UnitBlock{
|
||||
Draw.rect(topRegion, plan.drawx(), plan.drawy());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getPlanConfigs(Seq<UnlockableContent> options){
|
||||
for(var plan : plans){
|
||||
if(!plan.unit.isBanned()){
|
||||
options.add(plan.unit);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static class UnitPlan{
|
||||
public UnitType unit;
|
||||
public ItemStack[] requirements;
|
||||
|
||||
Reference in New Issue
Block a user