Files

67 lines
2.4 KiB
JavaScript

/*jshint esversion: 11, laxcomma:true, eqeqeq:true*/
/*jshint -W014,-W084,-W030,-W033*/
/*
Sheet Styling
*/
const navigateSheet = function(event){
debug('navigating sheet');
const setObj = {};
let [,,page] = parseClickTrigger(event.triggerName);
page = page.replace(/nav-|-action/g,'');
debug({page});
navButtons.forEach((button)=>{
let element = button.replace(/-action/,'');
let action = element === page ? 'addClass' : 'removeClass';
$20(`.${element}`)[action]('active');
});
setObj.sheet_state = page;
debug({setObj});
set(setObj);
};
funcs.navigateSheet = navigateSheet;
const setupSystem = function(trigger,attributes,sections){
setupAttributes(attributes,sections);
setupSkills(attributes,sections);
setupHealth(attributes,sections);
};
const setupAttributes = function(attributes,sections){
const attrDetails = systemDefaults[attributes.system].attributes;
Object.entries(attrDetails).forEach(([attr,value])=>{
attributes[attr] = value;
});
};
const setupSkills = function(attributes,sections){
let skillDetails = systemDefaults[attributes.system].repeating_skill.values;
let missingSkills = Object.keys(skillDetails).filter((skill)=>sections.repeating_skill.every((id)=>attributes[`repeating_skill_${id}_name`]===skill));
missingSkills.forEach((skill)=>{
let newID = generateRowID();
attributes[`repeating_skill_${newID}_name`] = skill;
attributes[`repeating_skill_${newID}_stat`] = /\//.test(skillDetails[skill]) ? 'query' : skillDetails[skill];
attributes[`repeating_skill_${newID}_raw`] = 1;
});
};
const setupHealth = function(attributes,sections){
let healthDetails = systemDefaults[attributes.system].repeating_health.values;
if(healthDetails && !sections.repeating_health.length){
healthDetails.forEach((penalty)=>{
let newID = generateRowID();
attributes[`repeating_health_${newID}_penalty`] = penalty;
});
attributes.health = healthDetails.length;
attributes.health_max = attributes.health;
}
let structureDetails = systemDefaults[attributes.system].repeating_structure.values;
if(structureDetails && !sections.repeating_structure.length){
structureDetails.forEach((penalty)=>{
let newID = generateRowID();
attributes[`repeating_structure_${newID}_penalty`] = penalty;
});
attributes.structure = structureDetails.length;
attributes.structure_max = attributes.structure;
attributes.structure_base = attributes.structure;
}
};