Files
roll20-character-sheets/5eShaped/precompiled/scripts/Initialize.js
T
2016-08-07 17:01:05 +02:00

114 lines
3.9 KiB
JavaScript

/* global on:false, generateRowID:false, getTranslationByKey:false */
import { Abilities } from './Abilities';
const abilities = new Abilities();
import { AbilityChecks } from './AbilityChecks';
const abilityChecks = new AbilityChecks();
import { Character } from './Character';
const character = new Character();
import { ABILITIES, SKILLS } from './constants';
import { Convert } from './Convert';
const convert = new Convert();
import { Equipment } from './Equipment';
const equipment = new Equipment();
import { ProficiencyBonus } from './ProficiencyBonus';
const proficiencyBonus = new ProficiencyBonus();
import { SavingThrows } from './SavingThrows';
const savingThrows = new SavingThrows();
import { Spells } from './Spells';
const spells = new Spells();
import { Upgrade } from './Upgrade';
const upgrade = new Upgrade();
import { getSetItems, getSetRepeatingItems, isUndefinedOrEmpty, setFinalAttrs, getSkillIdByStorageName } from './utilities';
import { currentVersion } from './version';
export class Initialize {
generateSkills() {
getSetRepeatingItems('initialize.generateSkills', {
repeatingItems: ['repeating_skill'],
collectionArrayAddItems: ['storage_name', 'name', 'ability'],
callback: (v, finalSetAttrs, ids, repeatingItem) => {
for (const prop in SKILLS) {
if (SKILLS.hasOwnProperty(prop)) {
let skillId = getSkillIdByStorageName(v, repeatingItem, ids, prop);
if (!skillId) {
skillId = generateRowID();
}
const repeatingString = `${repeatingItem}_${skillId}_`;
finalSetAttrs[`${repeatingString}storage_name`] = prop;
finalSetAttrs[`${repeatingString}name`] = getTranslationByKey(prop);
finalSetAttrs[`${repeatingString}ability`] = SKILLS[prop];
abilityChecks.updateSkill(skillId);
}
}
},
setFinalAttrsCallback: () => {
abilityChecks.updateMacro();
},
});
}
sheetOpened() {
console.log('initialize.sheetOpened');
const collectionArray = ['version', 'npc', 'base_level', 'convertedFromOGL', 'import_data', 'roll_setting'];
for (const ability of ABILITIES) {
collectionArray.push(ability);
}
getSetItems('initialize.sheetOpened', {
collectionArray,
callback: (v, finalSetAttrs) => {
const convertOGL = (v.npc || v.base_level) && !v.convertedFromOGL;
if (!v.version || convertOGL) {
if (!v.import_data && !convertOGL) {
finalSetAttrs.edit_mode = 'on';
}
if (isUndefinedOrEmpty(v.roll_setting)) { // API Script import sets this when making characters
finalSetAttrs.roll_setting = '{{ignore=[[0';
}
const setAbilities = {};
for (const ability of ABILITIES) {
if (isUndefinedOrEmpty(v[ability])) {
setAbilities[ability] = 10;
}
}
setFinalAttrs(v, setAbilities, 'initialize', () => {
proficiencyBonus.update();
this.generateSkills();
savingThrows.update();
character.updateLevels();
abilityChecks.updateInitiative();
equipment.updateArmor();
spells.updateShowHide();
abilities.updateModifiers();
});
if (convertOGL) {
proficiencyBonus.update();
this.generateSkills();
savingThrows.update();
abilities.updateModifiers();
convert.convertFromOGL();
}
} else {
upgrade.upgrade();
}
if (isUndefinedOrEmpty(v.version) || !v.version || v.version !== currentVersion) {
finalSetAttrs.version = currentVersion;
}
//finalSetAttrs.convertedFromOGL = true;
},
});
}
setup() {
on('change:generate_skills', () => {
this.generateSkills();
});
on('sheet:opened', () => {
this.sheetOpened();
});
}
}