79 lines
2.1 KiB
Java
79 lines
2.1 KiB
Java
package mindustry.ui.fragments;
|
|
|
|
import arc.*;
|
|
import arc.math.*;
|
|
import arc.scene.*;
|
|
import arc.scene.actions.*;
|
|
import arc.scene.ui.layout.*;
|
|
import arc.util.*;
|
|
import mindustry.content.*;
|
|
import mindustry.game.EventType.*;
|
|
import mindustry.gen.*;
|
|
|
|
import static mindustry.Vars.*;
|
|
|
|
public class BlockConfigFragment{
|
|
Table table = new Table();
|
|
Building selected;
|
|
|
|
public void build(Group parent){
|
|
table.visible = false;
|
|
parent.addChild(table);
|
|
|
|
Events.on(ResetEvent.class, e -> forceHide());
|
|
}
|
|
|
|
public void forceHide(){
|
|
table.visible = false;
|
|
selected = null;
|
|
}
|
|
|
|
public boolean isShown(){
|
|
return table.visible && selected != null;
|
|
}
|
|
|
|
public Building getSelected(){
|
|
return selected;
|
|
}
|
|
|
|
public void showConfig(Building tile){
|
|
if(selected != null) selected.onConfigureClosed();
|
|
if(tile.configTapped()){
|
|
selected = tile;
|
|
|
|
table.visible = true;
|
|
table.clear();
|
|
tile.buildConfiguration(table);
|
|
table.pack();
|
|
table.setTransform(true);
|
|
table.actions(Actions.scaleTo(0f, 1f), Actions.visible(true),
|
|
Actions.scaleTo(1f, 1f, 0.07f, Interp.pow3Out));
|
|
|
|
table.update(() -> {
|
|
if(selected != null && selected.shouldHideConfigure(player)){
|
|
hideConfig();
|
|
return;
|
|
}
|
|
|
|
table.setOrigin(Align.center);
|
|
if(selected == null || selected.block == Blocks.air || !selected.isValid()){
|
|
hideConfig();
|
|
}else{
|
|
selected.updateTableAlign(table);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
public boolean hasConfigMouse(){
|
|
Element e = Core.scene.hit(Core.input.mouseX(), Core.graphics.getHeight() - Core.input.mouseY(), true);
|
|
return e != null && (e == table || e.isDescendantOf(table));
|
|
}
|
|
|
|
public void hideConfig(){
|
|
if(selected != null) selected.onConfigureClosed();
|
|
selected = null;
|
|
table.actions(Actions.scaleTo(0f, 1f, 0.06f, Interp.pow3Out), Actions.visible(false));
|
|
}
|
|
}
|