Files
roll20-character-sheets-tester/5eShaped/precompiled/scripts/initialize.js
T
2016-07-21 17:14:16 +02:00

108 lines
3.8 KiB
JavaScript

/* global on:false, generateRowID:false, getTranslationByKey:false */
import { abilities } from './abilities';
import { abilityChecks } from './abilityChecks';
import { character } from './character';
import { SKILLS } from './constants';
import { equipment } from './equipment';
import { proficiencyBonus } from './proficiencyBonus';
import { savingThrows } from './savingThrows';
import { spells } from './spells';
import { upgrade } from './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();
},
});
}
checkVersionFormat(version, finalSetAttrs) {
const versionRegex = /\d+\.\d+\.\d+/gi;
const versionIsProperFormat = versionRegex.exec(version);
if (version && !versionIsProperFormat) {
finalSetAttrs.version = version = currentVersion;
}
return version;
}
sheetOpened() {
getSetItems('initialize.sheetOpened', {
collectionArray: ['version', 'strength', 'dexterity', 'constitution', 'intelligence', 'wisdom', 'charisma', 'import_data', 'roll_setting'],
callback: (v, finalSetAttrs) => {
const version = this.checkVersionFormat(v.version, finalSetAttrs);
if (!version) {
if (!v.import_data) {
finalSetAttrs.edit_mode = 'on';
}
if (isUndefinedOrEmpty(v.roll_setting)) { // API Script import sets this when making characters
finalSetAttrs.roll_setting = '{{ignore=[[0';
}
const setAbilities = {};
if (isUndefinedOrEmpty(v.strength)) {
setAbilities.strength = 10;
}
if (isUndefinedOrEmpty(v.dexterity)) {
setAbilities.dexterity = 10;
}
if (isUndefinedOrEmpty(v.constitution)) {
setAbilities.constitution = 10;
}
if (isUndefinedOrEmpty(v.intelligence)) {
setAbilities.intelligence = 10;
}
if (isUndefinedOrEmpty(v.wisdom)) {
setAbilities.wisdom = 10;
}
if (isUndefinedOrEmpty(v.charisma)) {
setAbilities.charisma = 10;
}
setFinalAttrs(v, setAbilities, 'initialize', () => {
proficiencyBonus.update();
this.generateSkills();
savingThrows.update();
character.updateLevels();
abilityChecks.updateInitiative();
equipment.updateArmor();
spells.updateShowHide();
abilities.updateModifiers();
});
} else {
upgrade.upgrade();
}
if (isUndefinedOrEmpty(version) || !version || version !== currentVersion) {
finalSetAttrs.version = currentVersion;
}
},
});
}
setup() {
on('change:generate_skills', this.generateSkills());
on('sheet:opened', this.sheetOpened());
}
}