Configurable plans, taken from Foo's

This commit is contained in:
Anuken
2024-10-28 16:54:01 -04:00
parent fd88550b88
commit bbff564f96
10 changed files with 152 additions and 4 deletions

View File

@@ -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){

View File

@@ -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){

View File

@@ -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();
}

View File

@@ -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};

View File

@@ -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;