unholy-maiden/js/plugins/IconScaler.js
2025-12-21 06:39:42 +01:00

41 lines
No EOL
1.6 KiB
JavaScript

/*:
* @target MZ
* @plugindesc Automatically scales icons in text (\I[x]) to match the current font size.
* @author 1x1x1x1
*
* @help
* This plugin overrides the default processDrawIcon function.
* Instead of drawing icons at 32x32, it detects the current line height
* (font size) and scales the icon down to fit perfectly inline.
*/
(() => {
Window_Base.prototype.processDrawIcon = function(iconIndex, textState) {
if (textState.drawing) {
const iconWidth = ImageManager.iconWidth;
const iconHeight = ImageManager.iconHeight;
const bitmap = ImageManager.loadSystem("IconSet");
const pw = iconWidth;
const ph = iconHeight;
const sx = (iconIndex % 16) * pw;
const sy = Math.floor(iconIndex / 16) * ph;
// Calculate the scale based on the text line height
// We subtract 2 pixels for a little breathing room/padding
const targetSize = textState.height - 2;
// Center the icon vertically in the line
const yOffset = (textState.height - targetSize) / 2;
this.contents.blt(
bitmap,
sx, sy, pw, ph, // Source coordinates (32x32)
textState.x, // Destination X
textState.y + yOffset,// Destination Y (centered)
targetSize, targetSize // Destination Size (Scaled)
);
}
// Advance the text cursor by the width of the scaled icon + padding
textState.x += textState.height;
};
})();