This commit is contained in:
Anuken
2021-10-22 09:04:00 -04:00
parent 4dc2164468
commit 677e0e6f58
11 changed files with 27 additions and 37 deletions

View File

@@ -266,6 +266,7 @@ public class Block extends UnlockableContent{
/** Main subclass. Non-anonymous. */
public @Nullable Class<?> subclass;
public float selectScroll; //scroll position for certain blocks
public Prov<Building> buildType = null; //initialized later
public ObjectMap<Class<?>, Cons2> configurations = new ObjectMap<>();

View File

@@ -5,20 +5,29 @@ import arc.scene.style.*;
import arc.scene.ui.*;
import arc.scene.ui.layout.*;
import arc.struct.*;
import arc.util.*;
import mindustry.ctype.*;
import mindustry.gen.*;
import mindustry.ui.*;
import mindustry.world.*;
import static mindustry.Vars.*;
public class ItemSelection{
private static float scrollPos = 0f;
public static <T extends UnlockableContent> void buildTable(Table table, Seq<T> items, Prov<T> holder, Cons<T> consumer){
buildTable(table, items, holder, consumer, true);
}
public static <T extends UnlockableContent> void buildTable(Block block, Table table, Seq<T> items, Prov<T> holder, Cons<T> consumer){
buildTable(block, table, items, holder, consumer, true);
}
public static <T extends UnlockableContent> void buildTable(Table table, Seq<T> items, Prov<T> holder, Cons<T> consumer, boolean closeSelect){
buildTable(null, table, items, holder, consumer, closeSelect);
}
public static <T extends UnlockableContent> void buildTable(@Nullable Block block, Table table, Seq<T> items, Prov<T> holder, Cons<T> consumer, boolean closeSelect){
ButtonGroup<ImageButton> group = new ButtonGroup<>();
group.setMinCheckCount(0);
@@ -52,10 +61,13 @@ public class ItemSelection{
ScrollPane pane = new ScrollPane(cont, Styles.smallPane);
pane.setScrollingDisabled(true, false);
pane.setScrollYForce(scrollPos);
pane.update(() -> {
scrollPos = pane.getScrollY();
});
if(block != null){
pane.setScrollYForce(block.selectScroll);
pane.update(() -> {
block.selectScroll = pane.getScrollY();
});
}
pane.setOverscroll(false, false);
table.add(pane).maxHeight(Scl.scl(40 * 5));

View File

@@ -124,7 +124,7 @@ public class Sorter extends Block{
@Override
public void buildConfiguration(Table table){
ItemSelection.buildTable(table, content.items(), () -> sortItem, this::configure);
ItemSelection.buildTable(Sorter.this, table, content.items(), () -> sortItem, this::configure);
}
@Override

View File

@@ -54,7 +54,7 @@ public class Constructor extends BlockProducer{
@Override
public void buildConfiguration(Table table){
ItemSelection.buildTable(table, content.blocks().select(Constructor.this::canProduce), () -> recipe, this::configure);
ItemSelection.buildTable(Constructor.this, table, content.blocks().select(Constructor.this::canProduce), () -> recipe, this::configure);
}
@Override

View File

@@ -85,7 +85,7 @@ public class PayloadSource extends PayloadBlock{
@Override
public void buildConfiguration(Table table){
ItemSelection.buildTable(table,
ItemSelection.buildTable(PayloadSource.this, table,
content.blocks().select(PayloadSource.this::canProduce).<UnlockableContent>as()
.and(content.units().select(PayloadSource.this::canProduce).as()),
() -> (UnlockableContent)config(), this::configure);

View File

@@ -73,7 +73,7 @@ public class ItemSource extends Block{
@Override
public void buildConfiguration(Table table){
ItemSelection.buildTable(table, content.items(), () -> outputItem, this::configure);
ItemSelection.buildTable(ItemSource.this, table, content.items(), () -> outputItem, this::configure);
}
@Override

View File

@@ -73,7 +73,7 @@ public class LiquidSource extends Block{
@Override
public void buildConfiguration(Table table){
ItemSelection.buildTable(table, content.liquids(), () -> source, this::configure);
ItemSelection.buildTable(LiquidSource.this, table, content.liquids(), () -> source, this::configure);
}
@Override

View File

@@ -118,7 +118,7 @@ public class Unloader extends Block{
@Override
public void buildConfiguration(Table table){
ItemSelection.buildTable(table, content.items(), () -> sortItem, this::configure);
ItemSelection.buildTable(Unloader.this, table, content.items(), () -> sortItem, this::configure);
}
@Override

View File

@@ -160,7 +160,7 @@ public class UnitFactory extends UnitBlock{
Seq<UnitType> units = Seq.with(plans).map(u -> u.unit).filter(u -> u.unlockedNow() && !u.isBanned());
if(units.any()){
ItemSelection.buildTable(table, units, () -> currentPlan == -1 ? null : plans.get(currentPlan).unit, unit -> configure(plans.indexOf(u -> u.unit == unit)));
ItemSelection.buildTable(UnitFactory.this, table, units, () -> currentPlan == -1 ? null : plans.get(currentPlan).unit, unit -> configure(plans.indexOf(u -> u.unit == unit)));
}else{
table.table(Styles.black3, t -> t.add("@none").color(Color.lightGray));
}