|
7 | 7 | * |
8 | 8 | * MIT License |
9 | 9 | * |
10 | | -* Copyright (c) 2016-2024 Marc Robledo |
| 10 | +* Copyright (c) 2016-2025 Marc Robledo |
11 | 11 | * |
12 | 12 | * Permission is hereby granted, free of charge, to any person obtaining a copy |
13 | 13 | * of this software and associated documentation files (the "Software"), to deal |
@@ -1559,6 +1559,23 @@ const PatchBuilderWeb = (function (romPatcherWeb) { |
1559 | 1559 | } |
1560 | 1560 | }; |
1561 | 1561 |
|
| 1562 | + const _getMetadataFields = function (patchFormat) { |
| 1563 | + if (patchFormat === 'rup') { |
| 1564 | + return ['Description']; |
| 1565 | + } else if (patchFormat === 'ebp') { |
| 1566 | + return ['Author', 'Title', 'Description']; |
| 1567 | + } |
| 1568 | + return []; |
| 1569 | + }; |
| 1570 | + const _buildMetadataObject = function (patchFormat) { |
| 1571 | + return _getMetadataFields(patchFormat).reduce((metadata, field) => { |
| 1572 | + const input = document.getElementById('patch-builder-input-metadata-' + field.toLowerCase().replace(/\s+/g, '-')); |
| 1573 | + if (input && input.value.trim()) |
| 1574 | + metadata[field] = input.value.trim(); |
| 1575 | + return metadata; |
| 1576 | + }, {}); |
| 1577 | + }; |
| 1578 | + |
1562 | 1579 | var webWorkerCreate; |
1563 | 1580 |
|
1564 | 1581 | var initialized = false; |
@@ -1644,18 +1661,35 @@ const PatchBuilderWeb = (function (romPatcherWeb) { |
1644 | 1661 | _setToastError(_('Patch creation is not compatible with zipped ROMs'), 'warning'); |
1645 | 1662 | }); |
1646 | 1663 | }); |
| 1664 | + document.getElementById('patch-builder-select-patch-type').addEventListener('change', function () { |
| 1665 | + if (!document.getElementById('patch-builder-container-metadata-inputs')) |
| 1666 | + return; |
| 1667 | + |
| 1668 | + document.getElementById('patch-builder-container-metadata-inputs').innerHTML = ''; |
| 1669 | + |
| 1670 | + _getMetadataFields(this.value).forEach(function (field) { |
| 1671 | + const input = document.createElement('input'); |
| 1672 | + input.id = 'patch-builder-input-metadata-' + field.toLowerCase().replace(/\s+/g, '-'); |
| 1673 | + input.className = 'patch-builder-input-metadata'; |
| 1674 | + input.type = 'text'; |
| 1675 | + input.placeholder = _(field); |
| 1676 | + document.getElementById('patch-builder-container-metadata-inputs').appendChild(input); |
| 1677 | + }); |
| 1678 | + }); |
1647 | 1679 | document.getElementById('patch-builder-button-create').addEventListener('click', function () { |
| 1680 | + const patchFormat=document.getElementById('patch-builder-select-patch-type').value; |
1648 | 1681 | _setElementsStatus(false); |
1649 | 1682 | _setCreateButtonSpinner(true); |
1650 | 1683 | webWorkerCreate.postMessage( |
1651 | 1684 | { |
1652 | 1685 | originalRomU8Array: originalRom._u8array, |
1653 | 1686 | modifiedRomU8Array: modifiedRom._u8array, |
1654 | | - format: document.getElementById('patch-builder-select-patch-type').value |
| 1687 | + format: patchFormat, |
| 1688 | + metadata: _buildMetadataObject(patchFormat) |
1655 | 1689 | }, [ |
1656 | | - originalRom._u8array.buffer, |
1657 | | - modifiedRom._u8array.buffer |
1658 | | - ] |
| 1690 | + originalRom._u8array.buffer, |
| 1691 | + modifiedRom._u8array.buffer |
| 1692 | + ] |
1659 | 1693 | ); |
1660 | 1694 | }); |
1661 | 1695 |
|
@@ -1780,6 +1814,9 @@ const ROM_PATCHER_LOCALE = { |
1780 | 1814 | 'Modified ROM:': 'ROM modificada:', |
1781 | 1815 | 'Patch type:': 'Tipo de parche:', |
1782 | 1816 | 'Creating patch...': 'Creando parche...', |
| 1817 | + 'Author': 'Autor', |
| 1818 | + 'Title': 'Título', |
| 1819 | + 'Description': 'Descripción', |
1783 | 1820 |
|
1784 | 1821 | 'Source ROM checksum mismatch': 'Checksum de ROM original no válida', |
1785 | 1822 | 'Target ROM checksum mismatch': 'Checksum de ROM creada no válida', |
@@ -1914,6 +1951,9 @@ const ROM_PATCHER_LOCALE = { |
1914 | 1951 | 'Modified ROM:': 'ROM modificada:', |
1915 | 1952 | 'Patch type:': 'Tipus de pedaç:', |
1916 | 1953 | 'Creating patch...': 'Creant pedaç...', |
| 1954 | + 'Author': 'Autor', |
| 1955 | + 'Title': 'Títol', |
| 1956 | + 'Description': 'Descripció', |
1917 | 1957 |
|
1918 | 1958 | 'Source ROM checksum mismatch': 'Checksum de ROM original no vàlida', |
1919 | 1959 | 'Target ROM checksum mismatch': 'Checksum de ROM creada no vàlida', |
|
0 commit comments