diff --git a/src/module/providers/_module.js b/src/module/providers/_module.js index 9a1fe3b..ce1185d 100644 --- a/src/module/providers/_module.js +++ b/src/module/providers/_module.js @@ -22,6 +22,7 @@ export { default as oseLanguageProvider } from "./ose.js"; export { default as pf1LanguageProvider } from "./pf1.js"; export { default as pf2eLanguageProvider } from "./pf2e.js"; export { default as sfrpgLanguageProvider } from "./sfrpg.js"; +export { default as shadowdarkLanguageProvider } from "./shadowdark.js"; export { default as shadowrun5eLanguageProvider } from "./shadowrun5e.js"; export { default as splittermondLanguageProvider } from "./splittermond.js"; export { default as sw5eLanguageProvider } from "./sw5e.js"; diff --git a/src/module/providers/shadowdark.js b/src/module/providers/shadowdark.js new file mode 100644 index 0000000..82a1134 --- /dev/null +++ b/src/module/providers/shadowdark.js @@ -0,0 +1,101 @@ +import LanguageProvider from "./templates/Base.js"; + +export default class shadowdarkLanguageProvider extends LanguageProvider { + languages = { + celestial: { + label: "Celestial", + font: "Celestial", + }, + common: { + label: "Common", + font: "Thorass", + }, + diabolic: { + label: "Diabolic", + font: "Barazhad", + }, + draconic: { + label: "Draconic", + font: "Dragon Alphabet", + }, + dwarvish: { + label: "Dwarvish", + font: "Floki", + }, + elvish: { + label: "Elvish", + font: "Espruar", + }, + giant: { + label: "Giant", + font: "Davek", + }, + goblin: { + label: "Goblin", + font: "Iokharic", + }, + merran: { + label: "Merran", + font: "High Drowic", + }, + orcish: { + label: "Orcish", + font: "Dethek", + }, + primordial: { + label: "Primordial", + font: "Infernal", + }, + reptilian: { + label: "Reptilian", + font: "Thassilonian", + }, + sylvan: { + label: "Sylvan", + font: "Rellanic", + }, + thanian: { + label: "Thanian", + font: "Olde Thorass", + }, + }; + + // required to load compendium languages + requiresReady = true; + + async getLanguages() { + if (this.replaceLanguages) { + this.languages = {}; + return; + } + const languagesSetting = game.settings.get("polyglot", "Languages"); + // eslint-disable-next-line no-undef + const languages = await shadowdark.compendiums.languages(); + languages.map((i) => i.name).forEach((lang) => { + const langIndex = lang.slugify(); + this.languages[langIndex] = { + label: lang, + font: languagesSetting[langIndex]?.font || this.languages[langIndex]?.font || this.defaultFont, + rng: languagesSetting[langIndex]?.rng ?? "default", + }; + }); + } + + getUserLanguages(actor) { + let knownLanguages = new Set(); + let literateLanguages = new Set(); + const actorLanguages = actor.system?.languages; + if (actorLanguages) { + for (let lang of actorLanguages) { + // eslint-disable-next-line no-undef + let langObj = fromUuidSync(lang); + knownLanguages.add(langObj.name.slugify()); + } + } + return [knownLanguages, literateLanguages]; + } + + getSystemDefaultLanguage() { + return "common"; + } +}