Tech tree selection fixes

This commit is contained in:
Anuken
2021-12-10 12:25:35 -05:00
parent 9614997482
commit 4a59bc952f
5 changed files with 53 additions and 24 deletions

View File

@ -1168,7 +1168,7 @@ public class Blocks{
size = 3;
itemCapacity = 20;
heatRequirement = 5f;
heatRequirement = 10f;
craftTime = 60f * 3f;
liquidCapacity = 80f * 5;

View File

@ -6,7 +6,7 @@ import static mindustry.content.TechTree.*;
public class ErekirTechTree{
public static void load(){
Planets.erekir.techTree = nodeRoot("erekir", coreBastion, () -> {
Planets.erekir.techTree = nodeRoot("erekir", coreBastion, true, () -> {
node(duct, () -> {
node(ductRouter, () -> {
node(ductBridge, () -> {
@ -57,11 +57,13 @@ public class ErekirTechTree{
node(turbineCondenser, () -> {
node(beamNode, () -> {
node(ventCondenser, () -> {
node(chemicalCombustionChamber, () -> {
node(pyrolysisGenerator, () -> {
});
});
});
node(beamTower, () -> {
@ -75,11 +77,14 @@ public class ErekirTechTree{
});
});
node(ventCondenser, () -> {
node(siliconArcFurnace, () -> {
node(electrolyzer, () -> {
node(oxidationChamber, () -> {
node(electricHeater, () -> {
node(heatRedirector, () -> {
});
node(atmosphericConcentrator, () -> {
node(cyanogenSynthesizer, () -> {
@ -110,7 +115,6 @@ public class ErekirTechTree{
});
});
});
});
//TODO move into turbine condenser?
node(plasmaBore, () -> {

View File

@ -56,7 +56,6 @@ public class Liquids{
colorTo = Color.valueOf("9e172c");
}};
//TODO
arkycite = new Liquid("arkycite", Color.valueOf("84a94b")){{
flammability = 0.4f;
viscosity = 0.7f;

View File

@ -17,8 +17,13 @@ public class TechTree{
public static Seq<TechNode> roots = new Seq<>();
public static TechNode nodeRoot(String name, UnlockableContent content, Runnable children){
return nodeRoot(name, content, false, children);
}
public static TechNode nodeRoot(String name, UnlockableContent content, boolean requireUnlock, Runnable children){
var root = node(content, content.researchRequirements(), children);
root.name = name;
root.requiresUnlock = requireUnlock;
roots.add(root);
return root;
}
@ -81,6 +86,8 @@ public class TechTree{
public @Nullable Drawable icon;
/** Name for root node - used in tech tree selector. */
public @Nullable String name;
/** For roots only. If true, this needs to be unlocked before it is selectable in the research dialog. Does not apply when you are on the planet itself. */
public boolean requiresUnlock = false;
/** Requirement node. */
public @Nullable TechNode parent;
/** Content to be researched. */

View File

@ -45,7 +45,9 @@ public class ResearchDialog extends BaseDialog{
public ResearchDialog(){
super("");
titleTable.remove();
titleTable.clear();
titleTable.top();
titleTable.button(b -> {
//TODO custom icon here.
b.imageDraw(() -> root.node.icon()).padRight(8).size(iconMed);
@ -59,6 +61,8 @@ public class ResearchDialog extends BaseDialog{
t.table(Tex.button, in -> {
in.defaults().width(300f).height(60f);
for(TechNode node : TechTree.roots){
if(node.requiresUnlock && !node.content.unlocked() && node != getPrefRoot()) continue;
in.button(node.localizedName(), Styles.cleart, () -> {
rebuildTree(node);
hide();
@ -72,12 +76,20 @@ public class ResearchDialog extends BaseDialog{
}).minWidth(300f);
margin(0f).marginBottom(8);
cont.stack(view = new View(), itemDisplay = new ItemsDisplay()).grow();
cont.stack(titleTable, view = new View(), itemDisplay = new ItemsDisplay()).grow();
titleTable.toFront();
shouldPause = true;
onResize(() -> {
if(Core.graphics.isPortrait()){
itemDisplay.marginTop(60f);
}else{
itemDisplay.marginTop(0f);
}
});
shown(() -> {
Planet currPlanet = ui.planet.isShown() ?
ui.planet.state.planet :
@ -210,6 +222,13 @@ public class ResearchDialog extends BaseDialog{
});
}
public @Nullable TechNode getPrefRoot(){
Planet currPlanet = ui.planet.isShown() ?
ui.planet.state.planet :
state.isCampaign() ? state.rules.sector.planet : null;
return currPlanet == null ? null : currPlanet.techTree;
}
public void switchTree(TechNode node){
if(lastNode == node || node == null) return;
nodes.clear();