mirror of
https://github.com/Anuken/Mindustry.git
synced 2025-03-04 22:50:29 +07:00
Fixed some tech tree layout issues
This commit is contained in:
parent
6bcc103cf7
commit
f419de0fad
@ -23,6 +23,17 @@ public class TechTree implements ContentList{
|
||||
map = new ObjectMap<>();
|
||||
all = new Seq<>();
|
||||
|
||||
root = node(coreShard, () -> {
|
||||
node(Items.lead, () -> {
|
||||
|
||||
});
|
||||
|
||||
node(Items.copper, () -> {
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
if(false)
|
||||
root = node(coreShard, () -> {
|
||||
|
||||
node(conveyor, () -> {
|
||||
@ -338,7 +349,7 @@ public class TechTree implements ContentList{
|
||||
/** Extra objectives needed to research this. TODO implement */
|
||||
public Objective[] objectives = {};
|
||||
/** Time required to research this content, in seconds. */
|
||||
public float time = 60; //TODO implement
|
||||
public float time = 60;
|
||||
/** Nodes that depend on this node. */
|
||||
public final Seq<TechNode> children = new Seq<>();
|
||||
/** Research progress, in seconds. */
|
||||
|
@ -130,17 +130,25 @@ public class TechTreeDialog extends BaseDialog{
|
||||
LayoutNode[] children = node.children;
|
||||
LayoutNode[] leftHalf = Arrays.copyOfRange(node.children, 0, Mathf.ceil(node.children.length/2f));
|
||||
LayoutNode[] rightHalf = Arrays.copyOfRange(node.children, Mathf.ceil(node.children.length/2f), node.children.length);
|
||||
|
||||
node.children = leftHalf;
|
||||
new BranchTreeLayout(){{
|
||||
gapBetweenLevels = gapBetweenNodes = spacing;
|
||||
rootLocation = TreeLocation.top;
|
||||
}}.layout(node);
|
||||
node.children = rightHalf;
|
||||
|
||||
new BranchTreeLayout(){{
|
||||
gapBetweenLevels = gapBetweenNodes = spacing;
|
||||
rootLocation = TreeLocation.bottom;
|
||||
}}.layout(node);
|
||||
float lastY = node.y;
|
||||
|
||||
if(rightHalf.length > 0){
|
||||
|
||||
node.children = rightHalf;
|
||||
new BranchTreeLayout(){{
|
||||
gapBetweenLevels = gapBetweenNodes = spacing;
|
||||
rootLocation = TreeLocation.bottom;
|
||||
}}.layout(node);
|
||||
|
||||
shift(leftHalf, node.y - lastY);
|
||||
}
|
||||
|
||||
node.children = children;
|
||||
|
||||
@ -158,6 +166,13 @@ public class TechTreeDialog extends BaseDialog{
|
||||
bounds.y += nodeSize*1.5f;
|
||||
}
|
||||
|
||||
void shift(LayoutNode[] children, float amount){
|
||||
for(LayoutNode node : children){
|
||||
node.y += amount;
|
||||
if(node.children != null && node.children.length > 0) shift(node.children, amount);
|
||||
}
|
||||
}
|
||||
|
||||
void copyInfo(LayoutNode node){
|
||||
node.node.x = node.x;
|
||||
node.node.y = node.y;
|
||||
|
@ -229,8 +229,7 @@ public class BranchTreeLayout implements TreeLayout{
|
||||
TreeNode previousChild = null;
|
||||
for(TreeNode w : v.children){
|
||||
firstWalk(w, previousChild);
|
||||
defaultAncestor = apportion(w, defaultAncestor, previousChild,
|
||||
v);
|
||||
defaultAncestor = apportion(w, defaultAncestor, previousChild, v);
|
||||
previousChild = w;
|
||||
}
|
||||
executeShifts(v);
|
||||
@ -257,8 +256,7 @@ public class BranchTreeLayout implements TreeLayout{
|
||||
}else if(alignment == TreeAlignment.towardsRoot){
|
||||
y = levelStart + levelChangeSign * (getNodeThickness(v) / 2);
|
||||
}else{
|
||||
y = levelStart + levelSize - levelChangeSign
|
||||
* (getNodeThickness(v) / 2);
|
||||
y = levelStart + levelSize - levelChangeSign * (getNodeThickness(v) / 2);
|
||||
}
|
||||
|
||||
if(!levelChangeOnYAxis){
|
||||
|
Loading…
Reference in New Issue
Block a user