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;
|
||||
|
||||
if ('base_abil' in abil) {
|
||||
if (abils_merged.has(abil.base_abil)) {
|
||||
// Merge abilities.
|
||||
// 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];
|
||||
}
|
||||
}
|
||||
// do nothing otherwise.
|
||||
}
|
||||
else {
|
||||
let tmp_abil = deepcopy(abil);
|
||||
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 {
|
||||
constructor() {
|
||||
super('atree-render-active');
|
||||
|
@ -410,6 +419,7 @@ const atree_render_active = new (class extends ComputeNode {
|
|||
errorbox.appendChild(atree_warning);
|
||||
}
|
||||
}
|
||||
const ret_map = new Map();
|
||||
for (const node of atree_order) {
|
||||
if (!merged_abils.has(node.ability.id)) {
|
||||
continue;
|
||||
|
@ -430,9 +440,11 @@ const atree_render_active = new (class extends ComputeNode {
|
|||
active_tooltip_desc.textContent = desc;
|
||||
active_tooltip.appendChild(active_tooltip_desc);
|
||||
}
|
||||
ret_map.set(abil.id, 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');
|
||||
|
||||
|
@ -542,6 +554,29 @@ const atree_collect_spells = new (class extends ComputeNode {
|
|||
}
|
||||
})().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 {
|
||||
constructor() { super('atree-stats-collector'); }
|
||||
|
||||
|
@ -582,7 +617,6 @@ const atree_stats = new (class extends ComputeNode {
|
|||
}
|
||||
}
|
||||
}
|
||||
console.log(ret_effects);
|
||||
return ret_effects;
|
||||
}
|
||||
})().link_to(atree_merge, 'atree-merged');
|
||||
|
|
Loading…
Reference in a new issue