EDIT: I have tried to make a conditional branch that if selling price is over 1000, one space will be deleted between item icon and item name, to no avail.
The code is provided here:
CODE
(function() {
function getItemIcon(item) {
return '\\i[' + item.iconIndex + ']';
}
function displayStorageItems() {
const storage = $gameStorageSystems.storage(0); // Change 0 to the desired storage system id
const items = storage.allItems().map(e => {
const itemIcon = getItemIcon(e);
const itemName = e.name;
const itemAmount = "x" + storage.numItems(e);
const sellingPrice = e.price * storage.numItems(e);
const sellingPriceStr = sellingPrice >= 1000 ? sellingPrice + 'G' : sellingPrice + 'G';
return [itemIcon, itemName, itemAmount, sellingPriceStr];
});
const colLengths = getColLengths(items);
const formattedItems = items.map(e => e.map((item, i) => {
let elementLength = item.replace(/\x1b\[\d+\]/g, '').length;
return item + (' '.repeat(colLengths - elementLength));
}));
const result = formattedItems.map(e => e.join(' ')).join("\n");
$gameMessage.setBackground(1);
$gameMessage.setPositionType(1);
$gameMessage.add(result);
const totalSellingPrice = storage.allItems().reduce((t, e) => t + e.price * storage.numItems(e), 0);
$gameMessage.add('\nTotal Selling Price: ' + totalSellingPrice + 'G');
}
function getColLengths(items) {
const iconLengths = items.map(e => e[0].replace(/\x1b\[\d+\]/g, '').length);
const nameLengths = items.map(e => e[1].replace(/\x1b\[\d+\]/g, '').length);
const amountLengths = items.map(e => e[2].replace(/\x1b\[\d+\]/g, '').length);
const priceLengths = items.map(e => e[3].replace(/\x1b\[\d+\]/g, '').length);
return [
Math.max(...iconLengths),
Math.max(...nameLengths),
Math.max(...amountLengths),
Math.max(...priceLengths)
];
}
window.displayStorageItems = displayStorageItems;
})();
function getItemIcon(item) {
return '\\i[' + item.iconIndex + ']';
}
function displayStorageItems() {
const storage = $gameStorageSystems.storage(0); // Change 0 to the desired storage system id
const items = storage.allItems().map(e => {
const itemIcon = getItemIcon(e);
const itemName = e.name;
const itemAmount = "x" + storage.numItems(e);
const sellingPrice = e.price * storage.numItems(e);
const sellingPriceStr = sellingPrice >= 1000 ? sellingPrice + 'G' : sellingPrice + 'G';
return [itemIcon, itemName, itemAmount, sellingPriceStr];
});
const colLengths = getColLengths(items);
const formattedItems = items.map(e => e.map((item, i) => {
let elementLength = item.replace(/\x1b\[\d+\]/g, '').length;
return item + (' '.repeat(colLengths - elementLength));
}));
const result = formattedItems.map(e => e.join(' ')).join("\n");
$gameMessage.setBackground(1);
$gameMessage.setPositionType(1);
$gameMessage.add(result);
const totalSellingPrice = storage.allItems().reduce((t, e) => t + e.price * storage.numItems(e), 0);
$gameMessage.add('\nTotal Selling Price: ' + totalSellingPrice + 'G');
}
function getColLengths(items) {
const iconLengths = items.map(e => e[0].replace(/\x1b\[\d+\]/g, '').length);
const nameLengths = items.map(e => e[1].replace(/\x1b\[\d+\]/g, '').length);
const amountLengths = items.map(e => e[2].replace(/\x1b\[\d+\]/g, '').length);
const priceLengths = items.map(e => e[3].replace(/\x1b\[\d+\]/g, '').length);
return [
Math.max(...iconLengths),
Math.max(...nameLengths),
Math.max(...amountLengths),
Math.max(...priceLengths)
];
}
window.displayStorageItems = displayStorageItems;
})();