WIP sector reorganization + loading system (broken, do not use!)

This commit is contained in:
Anuken
2025-05-10 23:53:30 -04:00
parent d51e350d75
commit e6182605f4
9 changed files with 197 additions and 79 deletions

View File

@@ -31,8 +31,10 @@ import mindustry.graphics.*;
import mindustry.graphics.g3d.PlanetGrid.*;
import mindustry.graphics.g3d.*;
import mindustry.input.*;
import mindustry.io.*;
import mindustry.maps.*;
import mindustry.type.*;
import mindustry.type.Planet.*;
import mindustry.ui.*;
import mindustry.world.blocks.storage.*;
import mindustry.world.blocks.storage.CoreBlock.*;
@@ -71,6 +73,7 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
private Texture[] planetTextures;
private Element mainView;
private CampaignRulesDialog campaignRules = new CampaignRulesDialog();
private SectorSelectDialog selectDialog = new SectorSelectDialog();
public PlanetDialog(){
super("", Styles.fullDialog);
@@ -532,7 +535,7 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
@Override
public void renderProjections(Planet planet){
float iw = 48f/4f;
float iw = 64f/4f;
for(Sector sec : planet.sectors){
if(sec != hovered){
@@ -540,10 +543,10 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
var icon =
sec.isAttacked() ? Fonts.getLargeIcon("warning") :
!sec.hasBase() && sec.preset != null && sec.preset.requireUnlock && sec.preset.unlocked() && preficon == null ?
Fonts.getLargeIcon("terrain") :
sec.preset != null ? sec.preset.uiIcon : Fonts.getLargeIcon("terrain") :
sec.preset != null && sec.preset.requireUnlock && sec.preset.locked() && sec.preset.techNode != null && (sec.preset.techNode.parent == null || !sec.preset.techNode.parent.content.locked()) ? Fonts.getLargeIcon("lock") :
preficon;
var color = sec.preset != null && sec.preset.requireUnlock && !sec.hasBase() ? Team.derelict.color : Team.sharded.color;
var color = sec.isAttacked() ? Team.sharded.color : Color.white;
if(icon != null){
planets.drawPlane(sec, () -> {
@@ -622,8 +625,24 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
public void touchDown(InputEvent event, float x, float y, int pointer, KeyCode button){
super.touchDown(event, x, y, pointer, button);
if(debugSectorAttackEdit && button == KeyCode.mouseRight && hovered != null){
hovered.generateEnemyBase = !hovered.generateEnemyBase;
var hovered = PlanetDialog.this.hovered;
if(debugSectorAttackEdit && hovered != null){
if(button == KeyCode.mouseRight){
if(input.shift()){
hovered.generateEnemyBase = !hovered.generateEnemyBase;
}else{
selectDialog.show(state.planet, result -> {
for(var other : state.planet.sectors){
if(other.preset == result){
other.preset = null;
}
}
hovered.preset = result;
});
}
}
}
}
});
@@ -634,9 +653,26 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
if(scene.getDialog() == PlanetDialog.this && (scene.getHoverElement() == null || !scene.getHoverElement().isDescendantOf(e -> e instanceof ScrollPane))){
scene.setScrollFocus(PlanetDialog.this);
if(debugSectorAttackEdit && input.ctrl() && input.keyTap(KeyCode.c)){
Core.app.setClipboardText(state.planet.writeAttackSectorBits());
Vars.ui.showInfoFade("@copied");
if(debugSectorAttackEdit && input.ctrl() && input.keyTap(KeyCode.s)){
try{
PlanetData data = new PlanetData();
IntSeq attack = new IntSeq();
for(var sector : state.planet.sectors){
if(sector.preset == null && sector.generateEnemyBase){
attack.add(sector.id);
}
if(sector.preset != null && sector.preset.requireUnlock){
data.presets.put(sector.preset.name, sector.id);
}
}
data.attackSectors = attack.toArray();
files.local("planets/" + state.planet.name + ".json").writeString(JsonIO.write(data));
Vars.ui.showInfoFade("@editor.saved");
}catch(Exception e){
Log.err(e);
}
}
}
@@ -1123,7 +1159,7 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
stable.background(Styles.black6);
stable.table(title -> {
title.add("[accent]" + sector.name()).padLeft(3);
title.add("[accent]" + sector.name() + (debugSelect && (sector.info.name != null || sector.preset != null) ? " [lightgray](" + sector.id + ")" : "")).padLeft(3);
if(sector.preset == null){
title.add().growX();