Breaking: children of notes are no longer inactive

This commit is contained in:
ThaumRystra
2023-09-13 11:08:55 +02:00
parent 1b21e69b40
commit c251b70ff6

View File

@@ -1,13 +1,13 @@
import walkDown from '/imports/api/engine/computation/utility/walkdown.js';
export default function computeInactiveStatus(node){
export default function computeInactiveStatus(node) {
const prop = node.node;
if (!isActive(prop)){
if (!isActive(prop)) {
// Mark prop inactive due to self
prop.inactive = true;
prop.deactivatedBySelf = true;
}
if(!childrenActive(prop)){
if (!childrenActive(prop)) {
// Mark children as inactive due to ancestor
walkDown(node.children, child => {
child.node.inactive = true;
@@ -16,27 +16,25 @@ export default function computeInactiveStatus(node){
}
}
function isActive(prop){
function isActive(prop) {
if (prop.disabled) return false;
switch (prop.type){
switch (prop.type) {
// Unprepared spells are inactive
case 'spell': return !!prop.prepared || !!prop.alwaysPrepared;
default: return true;
}
}
function childrenActive(prop){
function childrenActive(prop) {
// Children of disabled properties are always inactive
if (prop.disabled) return false;
switch (prop.type){
switch (prop.type) {
// Only equipped items with non-zero quantity have active children
case 'item': return !!prop.equipped && prop.quantity !== 0;
// The children of actions, spells, and triggers are always inactive
case 'action': return false;
case 'spell': return false;
case 'trigger': return false;
// The children of notes are always inactive
case 'note': return false;
// Other children are active
default: return true;
}