/* * Copyright (c) 2022 Vladimir Skrypnikov (Pheonix KageDesu) * * * License: Creative Commons 4.0 Attribution, Share Alike, Commercial */ /*: * @plugindesc (v.1.0)[PRO] Fonts Manager - custom fonts and colors * @author Pheonix KageDesu * @target MZ MV * @url http://kdworkshop.net/plugins/fonts-manager * * @help * --------------------------------------------------------------------------- * Help content: (below) * 1. How add and use custom font * 2. Font to Item name or Actor name * 3. Global fonts * 4. Global colors * 5. Global font and color both * 6. Custom pallete * 7. Extra palletes and switch between * --------------------------------------------------------------------------- * 1. How add and use custom font * * Copy font file to project directory/fonts folder * Open Plugin Parameters -> Fonts to load and add filename * You should write full filname, with extension * Example: myCoolFont.tff * * Use control character \FF[X] for use your font in messages * X - font index in Fonts to load list * \FF[0] - return to default font * * Alternative way \FF[myCoolFont] * (supports only font names without spaces) * --------------------------------------------------------------------------- * 2. Font to Item name or Actor name * * Add to Note or Item\Weapon\Armor or Actor * * * * * --------------------------------------------------------------------------- * 3. Global fonts * ! This future is expremental...not works always * * Set Plugin Parameter Fonts to load -> Is Global? to ON * * Add |fX| to any text (in end) in database for change this text font * * RPG Maker will change font for any text with |fX|, where X - font index. * Example: Sword|f2| * * You can use this with third party plugins * * --------------------------------------------------------------------------- * 4. Global colors * ! This future is expremental...not works always * * Same as Gloal fonts but for Colors * * Set Plugin Parameter Custom pallete -> Is Global? to ON * * Add |cX| to any text (in end) in database for change this text color * * Will change color for any text with |cX|, where X - color index. * Example: Sword|c2| * * You can use this with third party plugins * --------------------------------------------------------------------------- * 5. Global font and color both * * If you want change font and color in global level, use |fXcX| * Example: Sword|f3c1| * * --------------------------------------------------------------------------- * 6. Custom pallete * * You can change default colors for character codes \C[X] to you own * See Plugin Parameters -> Custom pallete * * --------------------------------------------------------------------------- * 7. Extra palletes and switch between * * Add more color palletes via Plugin Parameter -> More palletes * * And switch between then during game using script call: * switchColorPallete(index); * * index = 0 -> return to default one * * =========================================================================== * * --------------------------------------------------------------------------- * If you like my Plugins, want more and offten updates, * please support me on Boosty (and get extra plugins)! * * Boosty Page: * https://boosty.to/kagedesu * YouTube Channel: * https://www.youtube.com/channel/UCA3R61ojF5vp5tGwJ1YqdgQ? * * You can use this plugin in your game thanks to all who supports me! * * License: Creative Commons 4.0 Attribution, Share Alike, Commercial * * @param fontsToLoad:strA * @type text[] * @text Fonts to load * @default [] * @desc Filename+.ext (in fonts folder). Are available by name (\\FF[test]) (without ext.) and Index (\\FF[2], |f2|) * * @param isGlobal:b * @parent fontsToLoad:strA * @text Is Global? * @type boolean * @on Yes, |fX| available * @off No * @default true * @desc RPG Maker will change font for any text with |fX|, where X - font index. Example: Sword|f2| * * @param isAutoLoad:b * @parent fontsToLoad:strA * @text Is Auto Load? * @type boolean * @on Auto * @off No * @default false * @desc [PC, MAC, LINUX] Auto load fonts (fonts folder). Available only by names (uses filename without ext as font name) * * @param spacer|defaultFonts @text‏‏‎ ‎@desc =============================================== * * @param defaultSetup * @text Default Fonts * * @param allItemsFont * @parent defaultSetup * @text Items * @default * @desc Font name for all Items (names) in game. For all default Windows. * * @param allArmorsFont * @parent defaultSetup * @text Armors * @default * @desc Font name for all Armors (names) in game. For all default Windows. * * @param allWeaponsFont * @parent defaultSetup * @text Weapons * @default * @desc Font name for all Weapons (names) in game. For all default Windows. * * @param allSkillsFont * @parent defaultSetup * @text Skills * @default * @desc Font name for all Skills (names) in game. For all default Windows. * * @param allActorNamesFont * @parent defaultSetup * @text Actor name * @default * @desc Font name for all names (Actors names) in game. For all default Windows. * * @param allActorClassFont * @parent defaultSetup * @text Actor class * @default * @desc Font name for all classes in game. For all default Windows. * * @param allActorNickFont * @parent defaultSetup * @text Actor nickname * @default * @desc Font name for nicknames in game. For all default Windows. * * @param allActorLevelFont * @parent defaultSetup * @text Actor level * @default * @desc Font name for level in game. For all default Windows. * * @param spacer|colors @text‏‏‎ ‎@desc =============================================== * * @param pallete:strA * @type text[] * @text Custom pallete * @default [] * @desc Colors (hex) for replace \C[X]. Availble by Index. Example: #ba1a8f * * @param userPalletes:structA * @parent pallete:strA * @type struct[] * @text More palletes * @default [] * @desc You can switch palletes in game, script call: switchColorPallete(index); * * @param isGlobalColors:b * @parent pallete:strA * @text Is Global? * @type boolean * @on Yes, |cX| available * @off No * @default true * @desc Will change color for any text with |cX|, where X - color index. Example: Sword|c2| * * @param spacer|endHolder @text‏‏‎ ‎@desc =============================================== * * @command EMPTY_HOLDER * @text ‏ * @desc * @default */ /*:ru * @plugindesc (v.1.0)[PRO] Использование разных шрифтов * @author Pheonix KageDesu * @target MZ MV * @url http://kdworkshop.net/plugins/fonts-manager * * @help * --------------------------------------------------------------------------- * Разделы помощи: (ниже) * 1. Как добавить свой шрифт * 2. Задать шрифт через заметку * 3. Глобальный символ * 4. Глобальные цвета * 5. Глобальная пара (цвет и шрифт) * 6. Палитры цветов * 7. Доп. палитры и переключение между ними * --------------------------------------------------------------------------- * 1. Как добавить свой шрифт * * Поместите файл шрифта в папку fonts * Откройте параметры плагина -> Fonts to load и добавьте ваши файлы * Вписывать нужно полное имя файла с расширением * Пример: myCoolFont.tff * * Исп. символ \FF[X] для активации шрифта в сообщении * X - номер шрифта из параметра Fonts to load * \FF[0] - переключиться на стандартный шрифт * * Альтернативый вариант: \FF[myCoolFont] * (поддерживает только имена шрифтов без пробелов) * --------------------------------------------------------------------------- * 2. Задать шрифт через заметку * * Заметки для оружия, брони, предметов или персонажа (имя) * * * * * --------------------------------------------------------------------------- * 3. Глобальный символ * ! Возможны сбои в работе в некоторых местах или плагинах * * Установите параметр плагина Fonts to load -> Is Global? на ВКЛ. * * Добавьте |fX| к любому слову (в конец) в базе данных для смены шрифта * * RPG Maker будет везде менять шрифта текста с символом |fX|, где X - номер шрифта. * Пример: Меч|f2| * * Данный метод может работать и со сторонними плагинами * * --------------------------------------------------------------------------- * 4. Глобальные цвета * ! Возможны сбои в работе в некоторых местах или плагинах * * Аналогично глобальному символу шрифтов, только для цвета * * Установите параметр плагина Custom pallete -> Is Global? на ВКЛ. * * Добавьте |cX| к любому слову (в конец) в базе данных для смены цвета * * RPG Maker будет везде менять цвет текста с символом |cX|, где X - номер цвета. * Пример: Меч|c2| * * Данный метод может работать и со сторонними плагинами * --------------------------------------------------------------------------- * 5. Глобальная пара (цвет и шрифт) * * Если хотите совместить шрифт и цвет, исп. |fXcX| * Пример: Меч|f3c1| * * --------------------------------------------------------------------------- * 6. Палитры цветов * * Можно заменить стандартные цвета, исп. при символе \C[X] на собственные * См. параметры плагина -> Custom pallete * * --------------------------------------------------------------------------- * 7. Доп. палитры и переключение между ними * * Можно добавить палитры через параметр плагина -> More palletes * * Для смены цветовых палитр во время игры, исп. вызов скрипта: * switchColorPallete(индекс); * * индекс = 0 -> стандартная цветовая палитра * * =========================================================================== * * --------------------------------------------------------------------------- * Если Вам нравятся мои плагины, поддержите меня на Boosty! * * Boosty Page: * https://boosty.to/kagedesu * YouTube Channel: * https://www.youtube.com/channel/UCA3R61ojF5vp5tGwJ1YqdgQ? * * Лицензия: Creative Commons 4.0 Attribution, Share Alike, Commercial * * @param fontsToLoad:strA * @type text[] * @text Fonts to load * @default [] * @desc Имя файла полностью (из папки fonts). Исп. (\\FF[имя]) (без разр.) или по индексу (\\FF[2], |f2|) * * @param isGlobal:b * @parent fontsToLoad:strA * @text Is Global? * @type boolean * @on Да * @off Нет * @default true * @desc Использовать символ для смены шрифта |fX|, где X - номер шрифта. Пример: Sword|f2| * * @param isAutoLoad:b * @parent fontsToLoad:strA * @text Is Auto Load? * @type boolean * @on Авто * @off Нет * @default false * @desc [PC, MAC, LINUX] Автозагрузка шрифтов (из папки fonts). Доступность по именам. * * @param spacer|defaultFonts @text‏‏‎ ‎@desc =============================================== * * @param defaultSetup * @text Default Fonts * * @param allItemsFont * @parent defaultSetup * @text Items * @default * @desc Имя шрифта для всех предметов в игре. Для всех стандартных окон. * * @param allArmorsFont * @parent defaultSetup * @text Armors * @default * @desc Имя шрифта для всей брони в игре. Для всех стандартных окон. * * @param allWeaponsFont * @parent defaultSetup * @text Weapons * @default * @desc Имя шрифта для всего оружия в игре. Для всех стандартных окон. * * @param allSkillsFont * @parent defaultSetup * @text Skills * @default * @desc Имя шрифта для всех навыков в игре. Для всех стандартных окон. * * @param allActorNamesFont * @parent defaultSetup * @text Actor name * @default * @desc Имя шрифта для имён персонажей в игре. Для всех стандартных окон. * * @param allActorClassFont * @parent defaultSetup * @text Actor class * @default * @desc Имя шрифта для названия классов в игре. Для всех стандартных окон. * * @param allActorNickFont * @parent defaultSetup * @text Actor nickname * @default * @desc Имя шрифта для псевдонимов персонажей в игре. Для всех стандартных окон. * * @param allActorLevelFont * @parent defaultSetup * @text Actor level * @default * @desc Имя шрифта для текста уровня персонажей в игре. Для всех стандартных окон. * * @param spacer|colors @text‏‏‎ ‎@desc =============================================== * * @param pallete:strA * @type text[] * @text Custom pallete * @default [] * @desc Цвета (HEX формат) на замену станадртных номеров \C[X]. Пример: #ba1a8f * * @param userPalletes:structA * @parent pallete:strA * @type struct[] * @text More palletes * @default [] * @desc Можно менять палитры в игре, вызов скрипта: switchColorPallete(index); * * @param isGlobalColors:b * @parent pallete:strA * @text Is Global? * @type boolean * @on Да * @off Нет * @default true * @desc Разрешить смену цвета символом |cX|, где X - номер цвета. Пример: Sword|c2| * * * @param spacer|endHolder @text‏‏‎ ‎@desc =============================================== * * @command EMPTY_HOLDER * @text ‏ * @desc * @default */ /*~struct~Pallete: * @param pallete:strA * @type text[] * @text Pallete * @default [] * @desc Colors (hex) for replace \\C[X]. Availble by Index. Example: #ba1a8f */ var Imported = Imported || {}; Imported.PKD_FontsManager = true; window.PKD_FTSM = {}; var PKD_FTSM = {}; PKD_FTSM.Version = 100; //?VERSION PKD_FTSM.isPro = function() { return false; }; // * For parameters PKD_FTSM.PP = {}; PKD_FTSM.Utils = {}; // * Загрзука параметров PKD_FTSM.LoadPluginSettings = () => { PKD_FTSM.PP._loader = new KDParamLoaderLite("PKD_FontsManager"); }; PKD_FTSM.LoadAllFonts = () => { try { let list = PKD_FTSM.PP.fontsToLoad(); for (const i of list) { PKD_FTSM.Utils.loadFont(i); } } catch (e) { console.warn(e); } }; //------------------------------------------------------------------------------ //FontLoader_NWJS //[ENCODE] var FontLoader_NWJS = function () { throw new Error('This is a static class'); }; FontLoader_NWJS.init = function () { var fs = require('fs'); this._files = fs.readdirSync(this.localFileDirectoryPath()); this._ready = false; }; FontLoader_NWJS.isReady = function () { return (this._ready == true); }; FontLoader_NWJS.loadAll = function () { if (FontLoader_NWJS.isReady()) return; for (var i = 0; i < this._files.length; i++) { let filename = this._files[i]; console.log("[Auto] Try load font file: " + filename); PKD_FTSM.Utils.loadFont(filename); } this._ready = true; }; FontLoader_NWJS._localFileDirectoryPath = null; FontLoader_NWJS.localFileDirectoryPath = function () { if (this._localFileDirectoryPath == null) { const path = require('path'); const base = path.dirname(process.mainModule.filename); this._localFileDirectoryPath = path.join(base, 'fonts/'); } return this._localFileDirectoryPath; }; window.FontLoader_NWJS = FontLoader_NWJS; //END FontLoader_NWJS //------------------------------------------------------------------------------ ///////////////////////////////////////////////////////////////////////////// //╒═════════════════════════════════════════════════════════════════════════╛ // ■ FontManager.js //╒═════════════════════════════════════════════════════════════════════════╛ ///////////////////////////////////////////////////////////////////////////// (function(){ // * RPG Maker MV not have FontManager (from MZ) //[ENCODE] if(window.FontManager || !Utils.RPGMAKER_NAME.contains("MV")) { return; } function FontManager() { throw new Error("This is a static class"); } FontManager._urls = {}; FontManager._states = {}; FontManager.load = function(family, filename) { if (this._states[family] !== "loaded") { if (filename) { const url = this.makeUrl(filename); this.startLoading(family, url); } else { this._urls[family] = ""; this._states[family] = "loaded"; } } }; FontManager.isReady = function() { for (const family in this._states) { const state = this._states[family]; if (state === "loading") { return false; } if (state === "error") { this.throwLoadError(family); } } return true; }; FontManager.startLoading = function(family, url) { const source = "url(" + url + ")"; const font = new FontFace(family, source); this._urls[family] = url; this._states[family] = "loading"; font.load() .then(() => { document.fonts.add(font); this._states[family] = "loaded"; return 0; }) .catch(() => { this._states[family] = "error"; }); }; FontManager.throwLoadError = function(family) { const url = this._urls[family]; const retry = () => this.startLoading(family, url); throw ["LoadError", url, retry]; }; FontManager.makeUrl = function(filename) { return "fonts/" + Utils.encodeURI(filename); }; Utils.encodeURI = function(str) { return encodeURIComponent(str).replace(/%2F/g, "/"); }; window.FontManager = FontManager; })(); // ■ END FontManager.js //--------------------------------------------------------------------------- ///////////////////////////////////////////////////////////////////////////// // Generated by CoffeeScript 2.6.1 //╒═════════════════════════════════════════════════════════════════════════╛ // ■ Bitmap.coffee //╒═════════════════════════════════════════════════════════════════════════╛ //--------------------------------------------------------------------------- //$[ENCODE] (function() { var ALIAS__drawText_kjkcc, _; //@[DEFINES] _ = Bitmap.prototype; //@[ALIAS] ALIAS__drawText_kjkcc = _.drawText; _.drawText = function(text, x, y, maxWidth, lineHeight, align) { this.pBeforeGlobal(); text = this.pCheckGlobals(text); ALIAS__drawText_kjkcc.call(this, text, x, y, maxWidth, lineHeight, align); this.pAfterGlobal(); }; _.pCheckGlobals = function(text) { var e; try { if (PKD_FTSM.legacy) { return text; } if (PKD_FTSM.PP.isGlobal() && PKD_FTSM.PP.isGlobalColors()) { text = this.pCheckGlobalPair(text); } if (PKD_FTSM.PP.isGlobal()) { text = this.pCheckGlobalFont(text); } if (PKD_FTSM.PP.isGlobalColors()) { text = this.pCheckGlobalColor(text); } } catch (error) { e = error; console.warn(e); } return text; }; _.pBeforeGlobal = function() { this.__prevFont = null; this.__prevColor = null; }; _.pAfterGlobal = function() { if (this.__prevFont) { this.fontFace = this.__prevFont; } if (this.__prevColor) { this.textColor = this.__prevColor; } }; _.pCheckGlobalPair = function(text) { var colorIndex, fontIndex, match; if ((text != null) && text.toString().includes("|f") && text.toString().includes("c")) { match = text.match(/\|f(\d+)c(\d+)\|/); if (match != null) { fontIndex = match[1]; colorIndex = match[2]; text = text.replace(/\|f(\d+)c(\d+)\|/, ""); text += "|f" + fontIndex + "|"; text = this.pChangeFontForce(text); text += "|c" + colorIndex + "|"; text = this.pChangeColorForce(text); } } return text; }; _.pCheckGlobalFont = function(text) { if ((text != null) && text.toString().includes("|f")) { text = this.pChangeFontForce(text); } return text; }; _.pChangeFontForce = function(text) { var e, fontData; try { this.__prevFont = this.fontFace; fontData = this.pGetFontName(text); if (fontData != null) { this.fontFace = fontData.face; text = fontData.text; } } catch (error) { e = error; console.warn(e); } return text; }; _.pCheckGlobalColor = function(text) { if ((text != null) && text.toString().includes("|c")) { text = this.pChangeColorForce(text); } return text; }; _.pChangeColorForce = function(text) { var colorData, e; try { this.__prevColor = this.textColor; colorData = this.pGetNewColorData(text); if (colorData != null) { this.textColor = colorData.color; text = colorData.text; } } catch (error) { e = error; console.warn(e); } return text; }; _.pGetFontName = function(text) { var e, face, index; try { index = this.pExtractFontIndex(text); if (index > 0) { face = PKD_FTSM.PP.getFontNameByIndex(index); if (face != null) { text = text.replace(/\|f\d+\|/, ""); return {face, text}; } } } catch (error) { e = error; console.warn(e); } return null; }; _.pGetNewColorData = function(text) { var color, e, index; try { index = this.pExtractColorIndex(text); color = PKD_FTSM.Utils.getProperColorByIndex(index); if (color != null) { text = text.replace(/\|c\d+\|/, ""); return {color, text}; } } catch (error) { e = error; console.warn(e); } return null; }; _.pExtractColorIndex = function(text) { var e, index, result; try { result = text.match(/\|c(\d+)\|/); index = parseInt(result[1]); return index; } catch (error) { e = error; console.warn(e); } return 0; }; _.pExtractFontIndex = function(text) { var e, index, result; try { result = text.match(/\|f(\d+)\|/); index = parseInt(result[1]); return index; } catch (error) { e = error; console.warn(e); } return 0; }; })(); // ■ END Bitmap.coffee //--------------------------------------------------------------------------- // Generated by CoffeeScript 2.6.1 // * Класс аналог KDCore.ParamLoader, но упрощённый, чтобы всю библиотеку не тащить var KDParamLoaderLite; KDParamLoaderLite = (function() { class KDParamLoaderLite { constructor(pluginName) { this.pluginName = pluginName; this.paramsRaw = PluginManager.pParametersUnsafe(this.pluginName); if (!this.isLoaded()) { return; } this.params = this.parseParameters(this.paramsRaw); return; } isLoaded() { return this.paramsRaw != null; } parseParameters(paramSet) { var clearKey, key, params, typeKey, value; params = {}; for (key in paramSet) { value = paramSet[key]; clearKey = this.parseKey(key); typeKey = this.parseKeyType(key); params[clearKey] = this.parseParamItem(typeKey, value); } return params; } parseKey(keyRaw) { return keyRaw.split(":")[0]; } parseKeyType(keyRaw) { return keyRaw.split(":")[1]; } // * Имя параметра без ключа isHasParameter(paramName) { if (!this.isLoaded()) { return false; } else { return this.params[paramName] != null; } } // * Возвращает значение параметра (def - по умолчанию, если не найден) getParam(paramName, def) { var value; if (this.isHasParameter(paramName)) { value = this.params[paramName]; if (value != null) { return value; } } return def; } parseParamItem(type, item) { var e; try { if (type == null) { return item; } switch (type) { case "int": case "i": return Number(item); case "intA": return this.parseArray(item, "int"); case "bool": case "b": case "e": return eval(item); case "struct": case "s": return this.parseStruct(item); case "structA": return this.parseStructArray(item); case "str": return item; case "strA": return this.parseArray(item, "str"); case "note": return this.parseNote(item); case "css": if (window.KDCore != null) { return item.toCss(); } else { return item; } return item.toCss(); case "color": if (window.KDCore != null) { return KDCore.Color.FromHex(item); } else { return item; } break; default: return item; } } catch (error) { e = error; console.warn(e); return item; } } parseArray(items, type) { var e, elements, i, len, p, parsed; try { elements = []; parsed = JsonEx.parse(items); for (i = 0, len = parsed.length; i < len; i++) { p = parsed[i]; try { elements.push(this.parseParamItem(type, p)); } catch (error) { e = error; console.warn(e); } } } catch (error) { e = error; console.warn(e); } return elements; } parseStruct(item) { var e, parsed; try { parsed = JsonEx.parse(item); if (parsed != null) { return this.parseParameters(parsed); } } catch (error) { e = error; console.warn(e); } return null; } parseStructArray(items) { var e, elements, i, len, p, parsed; try { elements = []; parsed = JsonEx.parse(items); for (i = 0, len = parsed.length; i < len; i++) { p = parsed[i]; try { elements.push(this.parseStruct(p)); } catch (error) { e = error; console.warn(e); } } } catch (error) { e = error; console.warn(e); } return elements; } parseNote(item) { var e, parsed; try { parsed = JsonEx.parse(item); if (parsed != null) { return parsed; } } catch (error) { e = error; console.warn(e); } return item; } }; KDParamLoaderLite.Version = 100; return KDParamLoaderLite; }).call(this); (function() { //╒═════════════════════════════════════════════════════════════════════════╛ // ■ PluginManager.coffee //╒═════════════════════════════════════════════════════════════════════════╛ //--------------------------------------------------------------------------- var _; //@[DEFINES] _ = PluginManager; // * Не возвращает {}, а возвращает null, чтобы можно было проверить isLoaded _.pParametersUnsafe = function(name) { return this._parameters[name.toLowerCase()]; }; })(); // ■ END PluginManager.coffee //--------------------------------------------------------------------------- // Generated by CoffeeScript 2.6.1 //╒═════════════════════════════════════════════════════════════════════════╛ // ■ Parameters.coffee //╒═════════════════════════════════════════════════════════════════════════╛ //--------------------------------------------------------------------------- (function() { var _; //$[ENCODE] //@[DEFINES] _ = PKD_FTSM.PP; _.isAutoLoad = function() { return Utils.isNwjs() && this._loader.getParam("isAutoLoad", false); }; //?VERSION _.fontsToLoad = function() { return []; }; _.isGlobal = function() { return this._loader.getParam("isGlobal", true); }; _.allItemsFont = function() { return this._loader.getParam("allItemsFont", null); }; _.allArmorsFont = function() { return this._loader.getParam("allArmorsFont", null); }; _.allWeaponsFont = function() { return this._loader.getParam("allWeaponsFont", null); }; _.allSkillsFont = function() { return this._loader.getParam("allSkillsFont", null); }; _.allActorNamesFont = function() { return this._loader.getParam("allActorNamesFont", null); }; _.allActorClassFont = function() { return this._loader.getParam("allActorClassFont", null); }; _.allActorNickFont = function() { return this._loader.getParam("allActorNickFont", null); }; _.allActorLevelFont = function() { return this._loader.getParam("allActorLevelFont", null); }; _.colorPallete = function() { return this._loader.getParam("pallete", []); }; //?VERSION _.colorPalletes = function() { return []; }; _.isGlobalColors = function() { return this._loader.getParam("isGlobalColors", true); }; _.getFontNameByIndex = function(index) { var e, item; try { if (index <= 0) { return null; } item = this.fontsToLoad()[index - 1]; if (item != null) { return PKD_FTSM.Utils.getNameWithoutExt(item); } } catch (error) { e = error; console.warn(e); } return null; }; _.getUserColorIndex = function(index) { var e, item, items; try { if (index <= 0) { return null; } items = this.getProperColorPallete(); if (items == null) { return null; } if (items.length === 0) { return null; } item = items[index - 1]; if ((item != null) && item !== "" && item.contains("#")) { return item; } } catch (error) { e = error; console.warn(e); } return null; }; //?VERSION _.getProperColorPallete = function() { return this.colorPallete(); }; })(); // ■ END Parameters.coffee //--------------------------------------------------------------------------- // Generated by CoffeeScript 2.6.1 (function() { window.switchColorPallete = function(index) { var e; try { return $gameSystem.switchColorPallete(index); } catch (error) { e = error; return console.warn(e); } }; })(); // Generated by CoffeeScript 2.6.1 //╒═════════════════════════════════════════════════════════════════════════╛ // ■ Utils.coffee //╒═════════════════════════════════════════════════════════════════════════╛ //--------------------------------------------------------------------------- (function() { var _; //$[ENCODE] //@[DEFINES] _ = PKD_FTSM.Utils; _.isMV = function() { return Utils.RPGMAKER_NAME.contains("MV"); }; _.getNameWithoutExt = function(filename) { return filename.replace(/\.[^\/.]+$/, ""); }; _.loadFont = function(filename) { var e, fontName; try { //console.log(filename) if (filename == null) { return; } if (filename === "") { return; } //fontExt = filename.split('.').pop() fontName = this.getNameWithoutExt(filename); return FontManager.load(fontName, filename); } catch (error) { e = error; return console.warn("Unable to load font file: " + filename + " " + e); } }; _.convertGlobalAll = function(text) { var e; try { if (text == null) { return text; } if (PKD_FTSM.PP.isGlobal() && PKD_FTSM.PP.isGlobalColors()) { text = this.convertGlobalPair(text); } if (PKD_FTSM.PP.isGlobal()) { text = this.convertGlobalColors(text); } if (PKD_FTSM.PP.isGlobalColors()) { text = this.convertGlobalFonts(text); } } catch (error) { e = error; console.warn(e); } return text; }; _.convertGlobalPair = function(text) { var e; try { //word|f1c1| to \\C[1]\\FF[1]word\\FF[0]\\C[0] if ((text != null) && text.includes('|f') && text.includes('c')) { text = text.replace(/\b([a-zA-Z0-9_]+)\b\|f(\d+)c(\d+)\|/gm, "\\C[$3]\\FF[$2]$1\\FF[0]\\C[0]"); } } catch (error) { e = error; console.warn(e); } return text; }; _.convertGlobalFonts = function(text) { var e; try { //word|f1| to \\FF[1]word\\FF[0] if ((text != null) && text.includes('|f')) { text = text.replace(/\b([a-zA-Z0-9_]+)\b\|f(\d+)\|/gm, "\\FF[$2]$1\\FF[0]"); } } catch (error) { e = error; console.warn(e); } return text; }; _.convertGlobalColors = function(text) { var e; try { //word|c1| to \\C[1]word\\C[0] if ((text != null) && text.includes('|c')) { text = text.replace(/\b([a-zA-Z0-9_]+)\b\|c(\d+)\|/gm, "\\C[$1]$2\\C[0]"); } } catch (error) { e = error; console.warn(e); } return text; }; _.getProperColorByIndex = function(index) { var e, px, py, skin, userColor; try { userColor = PKD_FTSM.PP.getUserColorIndex(index); if ((userColor != null) && userColor !== "") { return userColor; } else { if (this.isMV()) { skin = ImageManager.loadSystem("Window"); px = 96 + (index % 8) * 12 + 6; py = 144 + Math.floor(index / 8) * 12 + 6; return skin.getPixel(px, py); } else { return ColorManager.textColor(index); } } } catch (error) { e = error; console.warn(e); } return null; }; })(); // ■ END Utils.coffee //--------------------------------------------------------------------------- // Generated by CoffeeScript 2.6.1 PKD_FTSM.isPro = function() { return true; }; // Generated by CoffeeScript 2.6.1 //╒═════════════════════════════════════════════════════════════════════════╛ // ■ Parameters.coffee //╒═════════════════════════════════════════════════════════════════════════╛ //--------------------------------------------------------------------------- (function() { var _; //@[DEFINES] _ = PKD_FTSM.PP; _.fontsToLoad = function() { return this._loader.getParam("fontsToLoad", []); }; _.getProperColorPallete = function() { var e, index, pallete, str; try { index = $gameSystem.pColorPalleteIndex; if (index > 0) { str = this.colorPalletes(); pallete = str[index - 1]; if (pallete != null) { return pallete.pallete; } } } catch (error) { e = error; console.warn(e); } return this.colorPallete(); }; _.colorPalletes = function() { return this._loader.getParam("userPalletes", []); }; })(); // ■ END Parameters.coffee //--------------------------------------------------------------------------- // Generated by CoffeeScript 2.6.1 //╒═════════════════════════════════════════════════════════════════════════╛ // ■ Game_System.coffee //╒═════════════════════════════════════════════════════════════════════════╛ //--------------------------------------------------------------------------- (function() { var _; //@[DEFINES] _ = Game_System.prototype; _.switchColorPallete = function(index) { if (index <= 0) { this.pColorPalleteIndex = null; } else { this.pColorPalleteIndex = index; } }; })(); // ■ END Game_System.coffee //--------------------------------------------------------------------------- // Generated by CoffeeScript 2.6.1 //╒═════════════════════════════════════════════════════════════════════════╛ // ■ Scene_Boot.coffee //╒═════════════════════════════════════════════════════════════════════════╛ //--------------------------------------------------------------------------- (function() { var ALIAS__start, _; //@[DEFINES] _ = Scene_Boot.prototype; //@[ALIAS] ALIAS__start = _.start; _.start = function() { var e; ALIAS__start.call(this, ...arguments); PKD_FTSM.LoadPluginSettings(); if (PKD_FTSM.PP.isAutoLoad()) { try { FontLoader_NWJS.init(); FontLoader_NWJS.loadAll(); } catch (error) { e = error; console.warn(e); } } PKD_FTSM.LoadAllFonts(); }; })(); // ■ END Scene_Boot.coffee //--------------------------------------------------------------------------- // Generated by CoffeeScript 2.6.1 //╒═════════════════════════════════════════════════════════════════════════╛ // ■ Window_Base.coffee //╒═════════════════════════════════════════════════════════════════════════╛ //--------------------------------------------------------------------------- (function() { var ALIAS__convertEscapeCharacters, ALIAS__drawItemName, ALIAS__drawTextEx, ALIAS__processColorChange, ALIAS__processEscapeCharacter, ALIAS__textColor, _; //@[DEFINES] _ = Window_Base.prototype; //@[ALIAS] ALIAS__drawTextEx = _.drawTextEx; _.drawTextEx = function(text, x, y) { PKD_FTSM.legacy = true; if (text != null) { text = PKD_FTSM.Utils.convertGlobalAll(text); } ALIAS__drawTextEx.call(this, text, x, y); PKD_FTSM.legacy = null; }; //@[ALIAS] ALIAS__convertEscapeCharacters = _.convertEscapeCharacters; _.convertEscapeCharacters = function(text) { if (text != null) { text = PKD_FTSM.Utils.convertGlobalAll(text); } return ALIAS__convertEscapeCharacters.call(this, text); }; //@[ALIAS] ALIAS__processEscapeCharacter = _.processEscapeCharacter; _.processEscapeCharacter = function(code, textState) { if (code === 'FF') { this.pApplyFontSettings(this.pObtainEscapeParamPlus(textState)); } return ALIAS__processEscapeCharacter.call(this, ...arguments); }; //@[ALIAS] ALIAS__drawItemName = _.drawItemName; _.drawItemName = function(item, x, y, width) { var __prevFont, e, fontName; try { fontName = this.pGetFontForItem(item); if (fontName !== null) { if (isFinite(fontName)) { fontName = PKD_FTSM.PP.getFontNameByIndex(parseInt(fontName)); } __prevFont = this.contents.fontFace; this.pApplyFontByName(fontName); } } catch (error) { e = error; console.warn(e); } ALIAS__drawItemName.call(this, ...arguments); if (fontName != null) { this.contents.fontFace = __prevFont; } }; //?MZ only //@[ALIAS] ALIAS__processColorChange = _.processColorChange; _.processColorChange = function(colorIndex) { var userColor; userColor = PKD_FTSM.PP.getUserColorIndex(colorIndex); if (userColor != null) { this.changeTextColor(userColor); } else { ALIAS__processColorChange.call(this, colorIndex); } }; //?MV only //@[ALIAS] ALIAS__textColor = _.textColor; _.textColor = function(colorIndex) { var userColor; if (colorIndex > 0) { userColor = PKD_FTSM.PP.getUserColorIndex(colorIndex); if (userColor != null) { return userColor; } } return ALIAS__textColor.call(this, ...arguments); }; })(); // ■ END Window_Base.coffee //--------------------------------------------------------------------------- // Generated by CoffeeScript 2.6.1 //╒═════════════════════════════════════════════════════════════════════════╛ // ■ Window_Base.coffee //╒═════════════════════════════════════════════════════════════════════════╛ //--------------------------------------------------------------------------- (function() { var _; //@[DEFINES] _ = Window_Base.prototype; _.pApplyFontSettings = function(fontSymbol) { var e, font; try { if (isFinite(fontSymbol)) { font = PKD_FTSM.PP.getFontNameByIndex(Number(fontSymbol)); } else { font = fontSymbol; } this.pApplyFontByName(font); } catch (error) { e = error; console.warn(e); this.contents.fontFace = this.pDefaultFontFace(); } }; _.pApplyFontByName = function(font) { var e; try { if (!((font != null) || font === "")) { this.contents.fontFace = this.pDefaultFontFace(); } else { this.contents.fontFace = font; } } catch (error) { e = error; console.warn(e); this.contents.fontFace = this.pDefaultFontFace(); } }; _.pDefaultFontFace = function() { if (PKD_FTSM.Utils.isMV()) { return this.standardFontFace(); } else { return $gameSystem.mainFontFace(); } }; _.pGetFontForItem = function(item) { var e; if (item == null) { return null; } try { if ((item.meta != null) && (item.meta.FF != null)) { return item.meta.FF; } else { if (DataManager.isItem(item)) { return PKD_FTSM.PP.allItemsFont(); } else if (DataManager.isArmor(item)) { return PKD_FTSM.PP.allArmorsFont(); } else if (DataManager.isWeapon(item)) { return PKD_FTSM.PP.allWeaponsFont(); } else if (DataManager.isSkill(item)) { return PKD_FTSM.PP.allSkillsFont(); } } } catch (error) { e = error; console.warn(e); } return null; }; _.pObtainEscapeParamPlus = function(textState) { var e, param; try { param = this.obtainEscapeParam(textState); if (param !== '') { return param; } else { return this.pObtainEscapeParamText(textState); } } catch (error) { e = error; console.warn(e); } return ''; }; _.pObtainEscapeParamText = function(textState) { var arr, e, regExp; try { regExp = /^\[([a-zA-Z0-9_]+)\]/; arr = regExp.exec(textState.text.slice(textState.index)); if (arr != null) { textState.index += arr[0].length; return arr[1]; } else { return ''; } } catch (error) { e = error; console.warn(e); } return ''; }; })(); // ■ END Window_Base.coffee //--------------------------------------------------------------------------- // Generated by CoffeeScript 2.6.1 //╒═════════════════════════════════════════════════════════════════════════╛ // ■ Window_StatusBase.coffee //╒═════════════════════════════════════════════════════════════════════════╛ //--------------------------------------------------------------------------- (function() { var ALIAS__drawActorClass, ALIAS__drawActorLevel, ALIAS__drawActorName, ALIAS__drawActorNickname, _; //@[DEFINES] if (PKD_FTSM.Utils.isMV()) { _ = Window_Base.prototype; } else { _ = Window_StatusBase.prototype; } //@[ALIAS] ALIAS__drawActorName = _.drawActorName; _.drawActorName = function(actor, x, y, width) { var __prevFont, fontName; fontName = this.pGetFontForActorState(actor, 'name'); if (fontName !== null) { __prevFont = this.contents.fontFace; this.pApplyFontByName(fontName); } ALIAS__drawActorName.call(this, ...arguments); if (fontName != null) { this.contents.fontFace = __prevFont; } }; //@[ALIAS] ALIAS__drawActorClass = _.drawActorClass; _.drawActorClass = function(actor, x, y, width) { var __prevFont, fontName; fontName = this.pGetFontForActorState(actor, 'class'); if (fontName !== null) { __prevFont = this.contents.fontFace; this.pApplyFontByName(fontName); } ALIAS__drawActorClass.call(this, ...arguments); if (fontName != null) { this.contents.fontFace = __prevFont; } }; //@[ALIAS] ALIAS__drawActorNickname = _.drawActorNickname; _.drawActorNickname = function(actor, x, y, width) { var __prevFont, fontName; fontName = this.pGetFontForActorState(actor, 'nickname'); if (fontName !== null) { __prevFont = this.contents.fontFace; this.pApplyFontByName(fontName); } ALIAS__drawActorNickname.call(this, ...arguments); if (fontName != null) { this.contents.fontFace = __prevFont; } }; //@[ALIAS] ALIAS__drawActorLevel = _.drawActorLevel; _.drawActorLevel = function(actor, x, y) { var __prevFont, fontName; fontName = this.pGetFontForActorState(actor, 'level'); if (fontName !== null) { __prevFont = this.contents.fontFace; this.pApplyFontByName(fontName); } ALIAS__drawActorLevel.call(this, ...arguments); if (fontName != null) { this.contents.fontFace = __prevFont; } }; })(); // ■ END Window_StatusBase.coffee //--------------------------------------------------------------------------- // Generated by CoffeeScript 2.6.1 //╒═════════════════════════════════════════════════════════════════════════╛ // ■ Window_StatusBase.coffee //╒═════════════════════════════════════════════════════════════════════════╛ //--------------------------------------------------------------------------- (function() { var _; //@[DEFINES] if (PKD_FTSM.Utils.isMV()) { _ = Window_Base.prototype; } else { _ = Window_StatusBase.prototype; } _.pGetFontForActorState = function(actor, state) { var e, fontName, fontSymbol; try { fontSymbol = this.pGetFontSymbolForActorState(actor, state); if (fontSymbol != null) { if (isFinite(fontSymbol)) { fontName = PKD_FTSM.PP.getFontNameByIndex(parseInt(fontSymbol)); } else { fontName = fontSymbol; } return fontName; } } catch (error) { e = error; console.warn(e); } return null; }; _.pGetFontSymbolForActorState = function(actor, state) { var e; if (actor == null) { return null; } try { if (state === 'name' && (actor.actor().meta != null) && (actor.actor().meta.FF != null)) { return actor.actor().meta.FF; } else { switch (state) { case 'name': return PKD_FTSM.PP.allActorNamesFont(); case 'class': return PKD_FTSM.PP.allActorClassFont(); case 'nickname': return PKD_FTSM.PP.allActorNickFont(); case 'level': return PKD_FTSM.PP.allActorLevelFont(); } } } catch (error) { e = error; console.warn(e); } return null; }; })(); // ■ END Window_StatusBase.coffee //--------------------------------------------------------------------------- //Plugin PKD_FontsManager builded by PKD PluginBuilder 2.1 - 31.08.2022