mirror of
https://github.com/Nighthawk42/roll20-character-sheets.git
synced 2026-08-30 03:40:32 +00:00
67 lines
2.4 KiB
JavaScript
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;
|
|
}
|
|
}; |