Set up nodes for adding sliders, etc.
This commit is contained in:
parent
fdaad6931b
commit
a5cffc6266
1 changed files with 45 additions and 11 deletions
36
js/atree.js
36
js/atree.js
|
@ -269,6 +269,7 @@ const atree_merge = new (class extends ComputeNode {
|
||||||
}
|
}
|
||||||
const abil = node.ability;
|
const abil = node.ability;
|
||||||
|
|
||||||
|
if ('base_abil' in abil) {
|
||||||
if (abils_merged.has(abil.base_abil)) {
|
if (abils_merged.has(abil.base_abil)) {
|
||||||
// Merge abilities.
|
// Merge abilities.
|
||||||
// TODO: What if there is more than one base abil?
|
// TODO: What if there is more than one base abil?
|
||||||
|
@ -282,6 +283,8 @@ const atree_merge = new (class extends ComputeNode {
|
||||||
base_abil[propname] = abil[propname];
|
base_abil[propname] = abil[propname];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// do nothing otherwise.
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
let tmp_abil = deepcopy(abil);
|
let tmp_abil = deepcopy(abil);
|
||||||
if (!Array.isArray(tmp_abil.desc)) {
|
if (!Array.isArray(tmp_abil.desc)) {
|
||||||
|
@ -378,6 +381,12 @@ function atree_dfs_mark(start, atree_state, mark) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Render ability tree.
|
||||||
|
* Return map of id -> corresponding html element.
|
||||||
|
*
|
||||||
|
* Signature: AbilityTreeRenderActiveNode(atree-merged: MergedATree, atree-order: ATree, atree-errors: List[str]) => Map[int, ATreeNode]
|
||||||
|
*/
|
||||||
const atree_render_active = new (class extends ComputeNode {
|
const atree_render_active = new (class extends ComputeNode {
|
||||||
constructor() {
|
constructor() {
|
||||||
super('atree-render-active');
|
super('atree-render-active');
|
||||||
|
@ -410,6 +419,7 @@ const atree_render_active = new (class extends ComputeNode {
|
||||||
errorbox.appendChild(atree_warning);
|
errorbox.appendChild(atree_warning);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
const ret_map = new Map();
|
||||||
for (const node of atree_order) {
|
for (const node of atree_order) {
|
||||||
if (!merged_abils.has(node.ability.id)) {
|
if (!merged_abils.has(node.ability.id)) {
|
||||||
continue;
|
continue;
|
||||||
|
@ -430,9 +440,11 @@ const atree_render_active = new (class extends ComputeNode {
|
||||||
active_tooltip_desc.textContent = desc;
|
active_tooltip_desc.textContent = desc;
|
||||||
active_tooltip.appendChild(active_tooltip_desc);
|
active_tooltip.appendChild(active_tooltip_desc);
|
||||||
}
|
}
|
||||||
|
ret_map.set(abil.id, active_tooltip);
|
||||||
|
|
||||||
this.list_elem.appendChild(active_tooltip);
|
this.list_elem.appendChild(active_tooltip);
|
||||||
}
|
}
|
||||||
|
return ret_map;
|
||||||
}
|
}
|
||||||
})().link_to(atree_node, 'atree-order').link_to(atree_merge, 'atree-merged').link_to(atree_validate, 'atree-errors');
|
})().link_to(atree_node, 'atree-order').link_to(atree_merge, 'atree-merged').link_to(atree_validate, 'atree-errors');
|
||||||
|
|
||||||
|
@ -542,6 +554,29 @@ const atree_collect_spells = new (class extends ComputeNode {
|
||||||
}
|
}
|
||||||
})().link_to(atree_merge, 'atree-merged');
|
})().link_to(atree_merge, 'atree-merged');
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Make interactive elements (sliders, buttons)
|
||||||
|
*
|
||||||
|
* Signature: AbilityActiveUINode(atree-merged: MergedATree) => List[
|
||||||
|
*/
|
||||||
|
const atree_make_actives = new (class extends ComputeNode {
|
||||||
|
constructor() { super('atree-make-sliders'); }
|
||||||
|
|
||||||
|
compute_func(input_map) {
|
||||||
|
const merged_abils = input_map.get('atree-merged');
|
||||||
|
const atree_order = input_map.get('atree-order');
|
||||||
|
const atree_html = input_map.get('atree-elements');
|
||||||
|
}
|
||||||
|
})().link_to(atree_node, 'atree-order').link_to(atree_merge, 'atree-merged').link_to(atree_render_active, 'atree-elements');
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Collect stats from ability tree.
|
||||||
|
* Return StatMap of added stats (incl. cost modifications as raw cost)
|
||||||
|
*
|
||||||
|
* Signature: AbilityTreeStatsNode(atree-merged: MergedATree) => StatMap
|
||||||
|
*/
|
||||||
const atree_stats = new (class extends ComputeNode {
|
const atree_stats = new (class extends ComputeNode {
|
||||||
constructor() { super('atree-stats-collector'); }
|
constructor() { super('atree-stats-collector'); }
|
||||||
|
|
||||||
|
@ -582,7 +617,6 @@ const atree_stats = new (class extends ComputeNode {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
console.log(ret_effects);
|
|
||||||
return ret_effects;
|
return ret_effects;
|
||||||
}
|
}
|
||||||
})().link_to(atree_merge, 'atree-merged');
|
})().link_to(atree_merge, 'atree-merged');
|
||||||
|
|
Loading…
Reference in a new issue