Better planet selection (#8572)

* Better AboutDialog

* I'm there!

* New Planet Select UI

* fix

* Better Planet Selection

* no
This commit is contained in:
xStaBUx 2023-05-10 19:54:18 +03:00 committed by GitHub
parent 31bed37976
commit a3dbbe63c4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 41 additions and 23 deletions

View file

@ -154,3 +154,4 @@ zenonet
AyuKo-o
JojoFR1
Xasmedy
xStaBUx

View file

@ -606,31 +606,48 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
t.label(() -> mode == select ? "@sectors.select" : "").style(Styles.outlineLabel).color(Pal.accent);
}),
buttons,
//planet selection
new Table(t -> {
t.top().left();
if(content.planets().count(this::selectable) > 1){
t.table(Tex.pane, pt -> {
pt.margin(4f);
for(int i = 0; i < content.planets().size; i++){
Planet planet = content.planets().get(i);
if(selectable(planet)){
pt.button(planet.localizedName, Icon.icons.get(planet.icon + "Small", Icon.icons.get(planet.icon, Icon.commandRallySmall)), Styles.flatTogglet, () -> {
selected = null;
launchSector = null;
if(state.planet != planet){
newPresets.clear();
state.planet = planet;
rebuildExpand();
}
settings.put("lastplanet", planet.name);
}).width(190).height(40).growX().update(bb -> bb.setChecked(state.planet == planet)).with(w -> w.marginLeft(10f)).get().getChildren().get(1).setColor(planet.iconColor);
pt.row();
// planet selection
new Table(t -> {
t.top().left();
ScrollPane pane = new ScrollPane(null, Styles.smallPane);
t.add(pane).colspan(2).row();
Table starsTable = new Table(Styles.black);
pane.setWidget(starsTable);
pane.setScrollingDisabled(true, false);
int starCount = 0;
for(Planet star : content.planets()){
if(star.solarSystem != star) continue;
boolean hasSelectablePlanets = false;
for(Planet planet : content.planets()){
if(planet.solarSystem == star && selectable(planet)){
hasSelectablePlanets = true;
break;
}
}
if(!hasSelectablePlanets) continue;
starCount++;
if(starCount > 1) starsTable.add(star.localizedName).padLeft(10f).padBottom(10f).padTop(10f).left().width(190f).row();
Table planetTable = new Table();
starsTable.add(planetTable).left().row();
for(Planet planet : content.planets()){
if(planet.solarSystem == star && selectable(planet)){
Button planetButton = planetTable.button(planet.localizedName, Icon.icons.get(planet.icon + "Small", Icon.icons.get(planet.icon, Icon.commandRallySmall)), Styles.flatTogglet, () -> {
selected = null;
launchSector = null;
if(state.planet != planet){
newPresets.clear();
state.planet = planet;
rebuildExpand();
}
settings.put("lastplanet", planet.name);
}).width(200).height(40).update(bb -> bb.setChecked(state.planet == planet)).with(w -> w.marginLeft(10f)).get();
planetButton.getChildren().get(1).setColor(planet.iconColor);
planetButton.setColor(planet.iconColor);
planetTable.background(Tex.pane).row();
}
}
}
});
}
}),
}),
new Table(c -> {
expandTable = c;