Add 'setspriteoverride' optional 'name' argument
| @@ -667,7 +667,14 @@ export async function sendExpressionCall(spriteFolderName, expression, { force = | |||
| 667 | } | 667 | } |
| 668 | } | 668 | } |
| 669 | 669 | ||
| 670 | async function setSpriteFolderCommand(_, folder) { | 670 | /** |
| 671 | * Slash command callback for /setspritefolder | ||
| 672 | * @param {object} param Command parameters | ||
| 673 | * @param {string} param.name Character name override | ||
| 674 | * @param {string} folder Folder path, can be full or partial with leading slash | ||
| 675 | * @returns {Promise<string>} Empty string | ||
| 676 | */ | ||
| 677 | async function setSpriteFolderCommand({ name }, folder) { | ||
| 671 | if (!folder) { | 678 | if (!folder) { |
| 672 | console.log('Clearing sprite set'); | 679 | console.log('Clearing sprite set'); |
| 673 | folder = ''; | 680 | folder = ''; |
| @@ -675,8 +682,12 @@ async function setSpriteFolderCommand(_, folder) { | |||
| 675 | 682 | ||
| 676 | if (folder.startsWith('/') || folder.startsWith('\\')) { | 683 | if (folder.startsWith('/') || folder.startsWith('\\')) { |
| 677 | const currentLastMessage = getLastCharacterMessage(); | 684 | const currentLastMessage = getLastCharacterMessage(); |
| 685 | if (currentLastMessage.name === null && !name) { | ||
| 686 | toastr.error('At least one character message is required to set a sprites subfolder.', 'Provide the name with "name=" argument.'); | ||
| 687 | return ''; | ||
| 688 | } | ||
| 678 | folder = folder.slice(1); | 689 | folder = folder.slice(1); |
| 679 | folder = `${currentLastMessage.name}/${folder}`; | 690 | folder = `${name || currentLastMessage.name}/${folder}`; |
| 680 | } | 691 | } |
| 681 | 692 | ||
| 682 | $('#expression_override').val(folder.trim()); | 693 | $('#expression_override').val(folder.trim()); |
| @@ -2322,6 +2333,16 @@ function migrateSettings() { | |||
| 2322 | name: 'expression-folder-override', | 2333 | name: 'expression-folder-override', |
| 2323 | aliases: ['spriteoverride', 'costume'], | 2334 | aliases: ['spriteoverride', 'costume'], |
| 2324 | callback: setSpriteFolderCommand, | 2335 | callback: setSpriteFolderCommand, |
| 2336 | namedArgumentList:[ | ||
| 2337 | SlashCommandNamedArgument.fromProps({ | ||
| 2338 | name: 'name', | ||
| 2339 | description: 'Character name to set a subfolder for. If not provided, the character who last sent a message will be used.', | ||
| 2340 | typeList: [ARGUMENT_TYPE.STRING], | ||
| 2341 | enumProvider: commonEnumProviders.characters('character'), | ||
| 2342 | isRequired: false, | ||
| 2343 | acceptsMultiple: false, | ||
| 2344 | }), | ||
| 2345 | ], | ||
| 2325 | unnamedArgumentList: [ | 2346 | unnamedArgumentList: [ |
| 2326 | new SlashCommandArgument( | 2347 | new SlashCommandArgument( |
| 2327 | 'optional folder', [ARGUMENT_TYPE.STRING], false, | 2348 | 'optional folder', [ARGUMENT_TYPE.STRING], false, |