/* File name : feclass.js Description : Methods related to the classes of characters */ const NB_STATS = 9; const ID_CLASS_IS_AVAILABLE_FOR_ALL = 1; function getAvailableClassesForCharacter(char) { const availableClasses = []; feData.classes.forEach(feClass => { if (feClass.isAvailableForAll == ID_CLASS_IS_AVAILABLE_FOR_ALL && (feClass.idGender == ID_GENDER_NON_RESTRICTED || feClass.idGender == char.idGender)) { availableClasses.push(feClass); } else if (feData.restrictedClasses.find(x => x.idClass == feClass.id && x.idCharacter == char.id)) { availableClasses.push(feClass); } }); return availableClasses; } function displayAllClasses() { feData.classes.forEach(feClass => { const tr = $$(``) const td = $$(`${feClass.name}`); tr.append(td); $$("#table-classes-content").append(tr); td.on("click", (event) => { const feclassId = event.target.id // Get the string who contains the id of the class .match(/\d/g) // Extract all digits .join(""); // Join the digits to get the id number app.views.main.router.navigate("/class/" + feclassId); }); }); } function getClassGrowthRates(idClass) { const classGrowthRates = []; const partialClassGrowthRates = feData.classGrowthRates.map(x => (x.idClass == idClass) ? x : null).filter(x => x != null); for (let i = 0; i < NB_STATS; i++) { let gr = partialClassGrowthRates.find(x => (x.idStat == i + 1) ? x : null); if (gr == null) { // Create a default growth rate to avoid missing stats gr = { idClass: idClass, idStat: i + 1, value: 0, } } classGrowthRates.push(gr); } return classGrowthRates; }