diff --git a/Codes.xml b/Codes.xml index b9b8d01..dcbf132 100644 --- a/Codes.xml +++ b/Codes.xml @@ -2865,9 +2865,10 @@ Position/Winkel/Geschw. Display Affichage de position/angle/vitesse 位置/角度/速度表示 - Noki Doki - 1.3 - Oct 28, 2019 + Noki Doki, sup39(サポミク) + 1.4 + Mar 24, 2022 + drawText Shows Mario's position, angle and speed at any given time. @@ -2958,57 +2959,23 @@ 60000000 00000000 - 060F9B64 00000010 - 49700515 60000000 - 60000000 60000000 - 040ECE3C 4970D1C5 - 04206734 495F39E9 - 077FA000 000001E8 - 9421FFE0 7C0802A6 - 90010024 93E1001C - 4A91239D 38E00200 - 38C00320 38A0FFD8 - 3880000A 38610008 - 4A8191F5 814D97F8 - 3FE08180 3BFFA1EC - 39200000 39000002 - 3CE08180 38E7A164 - 80CA0048 38A10008 - 38800000 7FE3FB78 - 4A81F8AD 39200001 - 913F01B0 80010024 - 7C0803A6 83E1001C - 38210020 4E800020 - 9421FFE8 7C0802A6 - 9001001C 93A1000C - 93C10010 93E10014 - 7C7F1B78 81230000 - 83A90064 3D208180 - 8129A39C 2F890000 - 409E002C 7FE3FB78 - 7FA903A6 4E800421 - 8001001C 7C0803A6 - 83A1000C 83C10010 - 83E10014 38210018 - 4E800020 3D208040 - 6129A378 83C90000 - 3C608180 3863A1EC - 4A81FC35 C0BE00A8 - C09E00B0 A0DE0096 - C07E0018 C05E0014 - C03E0010 3CA08180 - 38A5A164 38800080 - 4CC63242 4A889FB1 - 4BFFFF94 9421FFF0 - 7C0802A6 90010014 - 93E1000C 7C7F1B78 - 4A83B0F9 38E00081 - 7FE6FB78 38A00000 - 38800000 3C608180 - 3863A1EC 4A81ED19 - 80010014 7C0803A6 - 83E1000C 38210010 - 4E800020 5820506F + 04206734 495F38CD + 077FA000 000000B5 + 9421FFF0 7C0802A6 + 90010014 93E1000C + 7C7F1B78 4A83B215 + 3D208041 8149A378 + 3D008180 38600010 + 3908A074 C0AA00A8 + 38E0FFFF C08A00B0 + 38C0FFFF A12A0096 + 38A00014 C06A0018 + 388000C8 C04A0014 + C02A0010 4CC63242 + 4BFF61E1 80010014 + 7FE3FB78 83E1000C + 7C0803A6 38210010 + 4A83B1B8 5820506F 7320252E 30660A59 20506F73 20252E30 660A5A20 506F7320 @@ -3016,19 +2983,7 @@ 6C652025 68750A48 20537064 20252E32 660A5620 53706420 - 252E3266 20202020 - 20202020 20202020 - 20202020 20202020 - 20202020 20202020 - 20202020 20202020 - 20202020 20202020 - 20202020 20202020 - 20202020 20202020 - 20202000 00000000 - C20FA0F8 00000003 - 38600000 3D808180 - 906CA39C 807F0040 - 60000000 00000000 + 252E3266 00000000 06285FBC 00000010 @@ -3183,9 +3138,10 @@ Geschwindigkeits-Display Affichage de vitesse 速度表示 - Noki Doki - 1.4 - Nov 28, 2021 + Noki Doki, sup39(サポミク) + 1.5 + Mar 24, 2022 + drawText Shows Mario's speed at any given time. @@ -3264,65 +3220,24 @@ 60000000 00000000 - 060F9B64 00000010 - 49700515 60000000 - 60000000 60000000 - 040ECE3C 4970D1C5 - 04206734 495F39D9 - 077FA000 00000188 - 9421FFE0 7C0802A6 - 90010024 93E1001C - 4A91239D 38E00200 - 38C00320 38A0FFD8 - 3880000A 38610008 - 4A8191F5 814D97F8 - 3FE08180 3BFFA214 - 39200000 39000002 - 3CE08180 38E7A154 - 80CA0048 38A10008 - 38800000 7FE3FB78 - 4A81F8AD 39200001 - 913F01B0 80010024 - 7C0803A6 83E1001C - 38210020 4E800020 - 9421FFE8 7C0802A6 - 9001001C 93C10010 - 93E10014 7C7F1B78 - 81230000 83C90064 - 3D208180 8129A3C4 - 2C090000 40820028 - 7FE3FB78 7FC903A6 - 4E800421 8001001C - 7C0803A6 83C10010 - 83E10014 38210018 - 4E800020 93A1000C - 3D208040 6129A378 - 83A90000 3C608180 - 3863A214 4A81FC39 - C05D00A8 C03D00B0 - 3CA08180 38A5A154 - 38800030 4CC63242 - 4A889FC5 83A1000C - 4BFFFFA0 9421FFF0 - 7C0802A6 90010014 - 93E1000C 7C7F1B78 - 4A83B109 38E00081 - 7FE6FB78 38A00000 - 38800000 3C608180 - 3863A214 4A81ED29 - 80010014 7C0803A6 - 83E1000C 38210010 - 4E800020 48205370 + 04206734 495F38CD + 077FA000 0000007C + 9421FFF0 7C0802A6 + 90010014 93E1000C + 7C7F1B78 4A83B215 + 3D208041 8129A378 + 3D008180 38600010 + 3908A064 C04900A8 + 38E0FFFF C02900B0 + 38C0FFFF 38A00014 + 388000F0 4CC63242 + 4BFF61F1 80010014 + 7FE3FB78 83E1000C + 7C0803A6 38210010 + 4A83B1C8 48205370 6420252E 32660A56 20537064 20252E32 - 66202020 20202020 - 20202020 20202020 - 20202020 20202020 - 20202000 00000000 - C20FA0F8 00000003 - 38600000 3D808180 - 906CA3C4 807F0040 - 60000000 00000000 + 66000000 00000000 06285FBC 00000010 @@ -3844,9 +3759,10 @@ recommended Pattern Selector パターン選択 - sup39[サポミク] - 0.1.3 - Feb 06, 2022 + sup39(サポミク) + 0.2.0 + Mar 04, 2022 + drawText ![Preview](/img/PatternSelector/preview.jpg) @@ -3928,44 +3844,6 @@ %object[]{data="/img/PatternSelector/PV1-3.svg"} - - 077F0238 00000114 - 9421FED8 7C0802A6 - BF810118 7C7F1B78 - 9001012C 7C9E2378 - 90C100B8 7CBD2B78 - 90E100BC 7D1C4378 - 912100C0 914100C4 - 40860024 D82100C8 - D84100D0 D86100D8 - D88100E0 D8A100E8 - D8C100F0 D8E100F8 - D9010100 39200600 - 390100BC B12100A0 - 39210130 912100A4 - 392100A8 912100A8 - 808D97F8 38E100B8 - 7FA6EB78 38A00000 - 38610008 6FDE8000 - 4A826AF5 3D204330 - 91210108 3D40817F - 93C1010C 6FFF8000 - C00A0348 38610070 - C9810108 91210110 - 3D20817F 93E10114 - FC4C0028 C0690344 - C9810110 93A10064 - FC2C0028 93A10060 - 4A8A43E9 38800000 - 38610070 4A8BD419 - 38C100A0 7F85E378 - 388000FF 38610008 - 4A826951 38610008 - 38210128 BB81FFF0 - 80010004 7C0803A6 - 4A826AEC 00000000 - 59800004 00000000 - 0420675C 495F2A79 0424F32C 495A9CED 077F9018 000003BA @@ -4114,4 +3992,55 @@ 0402BF98 60000000 + + drawText + lib + drawText + sup39(サポミク) + 0.1.3 + Mar 04, 2022 + + ```c + void drawText(int x, int y, int fontSize, uint32_t colorTop, uint32_t colorBot, const char *fmt, ...); + ``` + + + 077F0238 00000114 + 9421FED8 7C0802A6 + BF810118 7C7F1B78 + 9001012C 7C9E2378 + 90C100B8 7CBD2B78 + 90E100BC 7D1C4378 + 912100C0 914100C4 + 40860024 D82100C8 + D84100D0 D86100D8 + D88100E0 D8A100E8 + D8C100F0 D8E100F8 + D9010100 39200600 + 390100BC B12100A0 + 39210130 912100A4 + 392100A8 912100A8 + 808D97F8 38E100B8 + 7FA6EB78 38A00000 + 38610008 6FDE8000 + 4A826AF5 3D204330 + 91210108 3D40817F + 93C1010C 6FFF8000 + C00A0348 38610070 + C9810108 91210110 + 3D20817F 93E10114 + FC4C0028 C0690344 + C9810110 93A10064 + FC2C0028 93A10060 + 4A8A43E9 38800000 + 38610070 4A8BD419 + 38C100A0 7F85E378 + 388000FF 38610008 + 4A826951 38610008 + 38210128 BB81FFF0 + 80010004 7C0803A6 + 4A826AEC 00000000 + 59800004 00000000 + + diff --git a/package-lock.json b/package-lock.json index 3e79512..660286f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,6 @@ "@vuepress/plugin-back-to-top": "1.9.7", "@vuepress/plugin-medium-zoom": "1.9.7", "jsdom": "19.0.0", - "markdown-it-attrs": "4.1.3", "pre-commit": "1.2.2", "prettier": "2.6.0", "serve": "^13.0.2", @@ -9530,18 +9529,6 @@ "markdown-it": "*" } }, - "node_modules/markdown-it-attrs": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/markdown-it-attrs/-/markdown-it-attrs-4.1.3.tgz", - "integrity": "sha512-d5yg/lzQV2KFI/4LPsZQB3uxQrf0/l2/RnMPCPm4lYLOZUSmFlpPccyojnzaHkfQpAD8wBHfnfUW0aMhpKOS2g==", - "dev": true, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "markdown-it": ">= 9.0.0 < 13.0.0" - } - }, "node_modules/markdown-it-chain": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/markdown-it-chain/-/markdown-it-chain-1.3.0.tgz", @@ -23972,13 +23959,6 @@ "dev": true, "requires": {} }, - "markdown-it-attrs": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/markdown-it-attrs/-/markdown-it-attrs-4.1.3.tgz", - "integrity": "sha512-d5yg/lzQV2KFI/4LPsZQB3uxQrf0/l2/RnMPCPm4lYLOZUSmFlpPccyojnzaHkfQpAD8wBHfnfUW0aMhpKOS2g==", - "dev": true, - "requires": {} - }, "markdown-it-chain": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/markdown-it-chain/-/markdown-it-chain-1.3.0.tgz", diff --git a/package.json b/package.json index 7e9e142..3353781 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,6 @@ "@vuepress/plugin-back-to-top": "1.9.7", "@vuepress/plugin-medium-zoom": "1.9.7", "jsdom": "19.0.0", - "markdown-it-attrs": "4.1.3", "pre-commit": "1.2.2", "prettier": "2.6.0", "serve": "^13.0.2", diff --git a/scripts/inject_codes.js b/scripts/inject_codes.js index 86fd1ea..b3edd6f 100644 --- a/scripts/inject_codes.js +++ b/scripts/inject_codes.js @@ -47,7 +47,7 @@ const validateXML = (xmlString) => { if (!codeCategory || !codeCategory.textContent) throw new Error(`Missing code category in ${codeTitle.textContent}`); - if (!codeCategories.map((c) => c.identifier).includes(codeCategory.textContent)) + if (!['lib', ...codeCategories.map((c) => c.identifier)].includes(codeCategory.textContent)) throw new Error(`Invalid code category for ${codeTitle.textContent}`); const codePresets = codes[i].querySelector('presets'); @@ -279,6 +279,7 @@ const parseXml = (xmlString, gameVersion = null) => { return codes .map((code) => ({ + id: code.querySelector('id')?.textContent ?? null, author: readTextNode(code, 'author'), title: localizeNode(code, 'title'), description: localizeMarkdown(code, 'description'), @@ -288,6 +289,9 @@ const parseXml = (xmlString, gameVersion = null) => { presets: readPresetList(code, gameVersion), category: readTextNode(code, 'category'), dependsOn: code.querySelector('depends-on')?.textContent ?? null, + dependencies: + code.querySelector('dependencies:not([version])')?.textContent.split(',') ?? + code.querySelector(`dependencies[version=${gameVersion}]`)?.textContent.split(',') ?? [], })) .filter((code) => code.source != null); }; diff --git a/site/.vuepress/components/CodeList.vue b/site/.vuepress/components/CodeList.vue index 0541015..4749823 100644 --- a/site/.vuepress/components/CodeList.vue +++ b/site/.vuepress/components/CodeList.vue @@ -105,6 +105,10 @@ export default { }, emitChangeEvent() { const selectedCodes = this.availableCodes.filter((c) => c.selected); + // add dependencies + const deps = new Set(selectedCodes.flatMap(c => c.dependencies)); + selectedCodes.push(...this.codes.filter(c => deps.has(c.id))); + // emit this.onSelectionChanged(selectedCodes); }, loadPreset(identifier) {