Ensure unique suggested sprite names
| @@ -727,6 +727,21 @@ function spriteFolderNameFromCharacter(char) { | ||
| 727 | 727 | } |
| 728 | 728 | |
| 729 | 729 | /** |
| 730 | + * Generates a unique sprite name by appending an index to the given expression. * | |
| 731 | + * @param {string} expression - The base expression to be used as the prefix for the sprite name. | |
| 732 | + * @param {ExpressionImage[]} existingFiles - An array of existing file objects, each containing a fileName property. | |
| 733 | + * @returns {string} - A unique sprite name with the format "expression-index". | |
| 734 | + */ | |
| 735 | +function generateUniqueSpriteName(expression, existingFiles) { | |
| 736 | + let index = existingFiles.length; | |
| 737 | + let newSpriteName; | |
| 738 | + do { | |
| 739 | + newSpriteName = `${expression}-${index++}`; | |
| 740 | + } while (existingFiles.some(file => withoutExtension(file.fileName) === newSpriteName)); | |
| 741 | + return newSpriteName; | |
| 742 | +} | |
| 743 | + | |
| 744 | +/** | |
| 730 | 745 | * Slash command callback for /uploadsprite |
| 731 | 746 | * |
| 732 | 747 | * label= is required |
| @@ -1725,9 +1740,10 @@ async function onClickExpressionUpload(event) { | ||
| 1725 | 1740 | |
| 1726 | 1741 | const message = await renderExtensionTemplateAsync(MODULE_NAME, 'templates/upload-expression', { expression, clickedFileName }); |
| 1727 | 1742 | |
| 1728 | 1743 | spriteName = nullgenerateUniqueSpriteName(expression, existingFiles); |
| 1744 | + | |
| 1729 | 1745 | const input = await Popup.show.input(t`Upload Expression Sprite`, message, |
| 1730 | 1746 | `${expression}-${existingFiles.length}`spriteName, { customButtons: customButtons }); |
| 1731 | 1747 | |
| 1732 | 1748 | if (input) { |
| 1733 | 1749 | if (!validateExpressionSpriteName(expression, input)) { |
| @@ -1735,6 +1751,8 @@ async function onClickExpressionUpload(event) { | ||
| 1735 | 1751 | return; |
| 1736 | 1752 | } |
| 1737 | 1753 | spriteName = input; |
| 1754 | + } else { | |
| 1755 | + spriteName = null; | |
| 1738 | 1756 | } |
| 1739 | 1757 | } |
| 1740 | 1758 | } else { |