Icons size fix
This commit is contained in:
parent
4477ef7fbe
commit
599a25c971
1 changed files with 41 additions and 0 deletions
41
js/plugins/IconScaler.js
Normal file
41
js/plugins/IconScaler.js
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
/*:
|
||||
* @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;
|
||||
};
|
||||
})();
|
||||
Loading…
Reference in a new issue