bugfixes
This commit is contained in:
@@ -407,6 +407,9 @@ public class Control implements ApplicationListener, Loadable{
|
||||
//if there is no base, simulate a new game and place the right loadout at the spawn position
|
||||
if(state.rules.defaultTeam.cores().isEmpty() || hadNoCore){
|
||||
|
||||
if(sector.planet.clearSectorOnLose){
|
||||
playNewSector(origin, sector, reloader);
|
||||
}else{
|
||||
//no spawn set -> delete the sector save
|
||||
if(sector.info.spawnPosition == 0){
|
||||
//delete old save
|
||||
@@ -468,10 +471,14 @@ public class Control implements ApplicationListener, Loadable{
|
||||
|
||||
Events.fire(new SectorLaunchEvent(sector));
|
||||
Events.fire(Trigger.newGame);
|
||||
}
|
||||
|
||||
state.set(State.playing);
|
||||
reloader.end();
|
||||
}
|
||||
}else{
|
||||
state.set(State.playing);
|
||||
reloader.end();
|
||||
}
|
||||
|
||||
}catch(SaveException e){
|
||||
Log.err(e);
|
||||
@@ -482,6 +489,12 @@ public class Control implements ApplicationListener, Loadable{
|
||||
}
|
||||
ui.planet.hide();
|
||||
}else{
|
||||
playNewSector(origin, sector, reloader);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void playNewSector(@Nullable Sector origin, Sector sector, WorldReloader reloader){
|
||||
reloader.begin();
|
||||
world.loadSector(sector);
|
||||
state.rules.sector = sector;
|
||||
@@ -493,8 +506,7 @@ public class Control implements ApplicationListener, Loadable{
|
||||
Events.fire(new SectorLaunchEvent(sector));
|
||||
Events.fire(Trigger.newGame);
|
||||
reloader.end();
|
||||
}
|
||||
});
|
||||
state.set(State.playing);
|
||||
}
|
||||
|
||||
public boolean isHighScore(){
|
||||
|
||||
@@ -323,7 +323,7 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
|
||||
}
|
||||
|
||||
boolean canSelect(Sector sector){
|
||||
if(mode == select) return sector.hasBase();
|
||||
if(mode == select) return sector.hasBase() && launchSector != null && sector.planet == launchSector.planet;
|
||||
//cannot launch to existing sector w/ accelerator TODO test
|
||||
if(mode == planetLaunch) return sector.id == sector.planet.startSector;
|
||||
if(sector.hasBase() || sector.id == sector.planet.startSector) return true;
|
||||
@@ -489,6 +489,7 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
|
||||
boolean selectable(Planet planet){
|
||||
//TODO what if any sector is selectable?
|
||||
//TODO launch criteria - which planets can be launched to? Where should this be defined? Should planets even be selectable?
|
||||
if(mode == select) return planet == state.planet;
|
||||
if(mode == planetLaunch) return launchSector != null && planet != launchSector.planet && launchSector.planet.launchCandidates.contains(planet);
|
||||
return (planet.alwaysUnlocked && planet.isLandable()) || planet.sectors.contains(Sector::hasBase) || debugSelect;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user