| | |
| | |
| |
|
| | #pragma once |
| |
|
| | constexpr char NX_FONT_CSS[] = R"( |
| | (function() { |
| | css = document.createElement('style'); |
| | css.type = 'text/css'; |
| | css.id = 'nx_font'; |
| | css.innerText = ` |
| | /* FontStandard */ |
| | @font-face { |
| | font-family: 'FontStandard'; |
| | src: url('%1') format('truetype'); |
| | } |
| | |
| | /* FontChineseSimplified */ |
| | @font-face { |
| | font-family: 'FontChineseSimplified'; |
| | src: url('%2') format('truetype'); |
| | } |
| | |
| | /* FontExtendedChineseSimplified */ |
| | @font-face { |
| | font-family: 'FontExtendedChineseSimplified'; |
| | src: url('%3') format('truetype'); |
| | } |
| | |
| | /* FontChineseTraditional */ |
| | @font-face { |
| | font-family: 'FontChineseTraditional'; |
| | src: url('%4') format('truetype'); |
| | } |
| | |
| | /* FontKorean */ |
| | @font-face { |
| | font-family: 'FontKorean'; |
| | src: url('%5') format('truetype'); |
| | } |
| | |
| | /* FontNintendoExtended */ |
| | @font-face { |
| | font-family: 'NintendoExt003'; |
| | src: url('%6') format('truetype'); |
| | } |
| | |
| | /* FontNintendoExtended2 */ |
| | @font-face { |
| | font-family: 'NintendoExt003'; |
| | src: url('%7') format('truetype'); |
| | } |
| | `; |
| | |
| | document.head.appendChild(css); |
| | })(); |
| | )"; |
| |
|
| | constexpr char LOAD_NX_FONT[] = R"( |
| | (function() { |
| | var elements = document.querySelectorAll("*"); |
| | |
| | for (var i = 0; i < elements.length; i++) { |
| | var style = window.getComputedStyle(elements[i], null); |
| | if (style.fontFamily.includes("Arial") || style.fontFamily.includes("Calibri") || |
| | style.fontFamily.includes("Century") || style.fontFamily.includes("Times New Roman")) { |
| | elements[i].style.fontFamily = "FontStandard, FontChineseSimplified, FontExtendedChineseSimplified, FontChineseTraditional, FontKorean, NintendoExt003"; |
| | } else { |
| | elements[i].style.fontFamily = style.fontFamily + ", FontStandard, FontChineseSimplified, FontExtendedChineseSimplified, FontChineseTraditional, FontKorean, NintendoExt003"; |
| | } |
| | } |
| | })(); |
| | )"; |
| |
|
| | constexpr char FOCUS_LINK_ELEMENT_SCRIPT[] = R"( |
| | if (document.getElementsByTagName("a").length > 0) { |
| | document.getElementsByTagName("a")[0].focus(); |
| | } |
| | )"; |
| |
|
| | constexpr char GAMEPAD_SCRIPT[] = R"( |
| | window.addEventListener("gamepadconnected", function(e) { |
| | console.log("Gamepad connected at index %d: %s. %d buttons, %d axes.", |
| | e.gamepad.index, e.gamepad.id, e.gamepad.buttons.length, e.gamepad.axes.length); |
| | }); |
| | |
| | window.addEventListener("gamepaddisconnected", function(e) { |
| | console.log("Gamepad disconnected from index %d: %s", e.gamepad.index, e.gamepad.id); |
| | }); |
| | )"; |
| |
|
| | constexpr char WINDOW_NX_SCRIPT[] = R"( |
| | var end_applet = false; |
| | var yuzu_key_callbacks = []; |
| | |
| | (function() { |
| | class WindowNX { |
| | constructor() { |
| | yuzu_key_callbacks[1] = function() { window.history.back(); }; |
| | yuzu_key_callbacks[2] = function() { window.nx.endApplet(); }; |
| | } |
| | |
| | addEventListener(type, listener, options) { |
| | console.log("nx.addEventListener called, type=%s", type); |
| | |
| | window.addEventListener(type, listener, options); |
| | } |
| | |
| | endApplet() { |
| | console.log("nx.endApplet called"); |
| | |
| | end_applet = true; |
| | } |
| | |
| | playSystemSe(system_se) { |
| | console.log("nx.playSystemSe is not implemented, system_se=%s", system_se); |
| | } |
| | |
| | sendMessage(message) { |
| | console.log("nx.sendMessage is not implemented, message=%s", message); |
| | } |
| | |
| | setCursorScrollSpeed(scroll_speed) { |
| | console.log("nx.setCursorScrollSpeed is not implemented, scroll_speed=%d", scroll_speed); |
| | } |
| | } |
| | |
| | class WindowNXFooter { |
| | setAssign(key, label, func, option) { |
| | console.log("nx.footer.setAssign called, key=%s", key); |
| | |
| | switch (key) { |
| | case "A": |
| | yuzu_key_callbacks[0] = func; |
| | break; |
| | case "B": |
| | yuzu_key_callbacks[1] = func; |
| | break; |
| | case "X": |
| | yuzu_key_callbacks[2] = func; |
| | break; |
| | case "Y": |
| | yuzu_key_callbacks[3] = func; |
| | break; |
| | case "L": |
| | yuzu_key_callbacks[6] = func; |
| | break; |
| | case "R": |
| | yuzu_key_callbacks[7] = func; |
| | break; |
| | } |
| | } |
| | |
| | setFixed(kind) { |
| | console.log("nx.footer.setFixed is not implemented, kind=%s", kind); |
| | } |
| | |
| | unsetAssign(key) { |
| | console.log("nx.footer.unsetAssign called, key=%s", key); |
| | |
| | switch (key) { |
| | case "A": |
| | yuzu_key_callbacks[0] = function() {}; |
| | break; |
| | case "B": |
| | yuzu_key_callbacks[1] = function() {}; |
| | break; |
| | case "X": |
| | yuzu_key_callbacks[2] = function() {}; |
| | break; |
| | case "Y": |
| | yuzu_key_callbacks[3] = function() {}; |
| | break; |
| | case "L": |
| | yuzu_key_callbacks[6] = function() {}; |
| | break; |
| | case "R": |
| | yuzu_key_callbacks[7] = function() {}; |
| | break; |
| | } |
| | } |
| | } |
| | |
| | class WindowNXPlayReport { |
| | incrementCounter(counter_id) { |
| | console.log("nx.playReport.incrementCounter is not implemented, counter_id=%d", counter_id); |
| | } |
| | |
| | setCounterSetIdentifier(counter_id) { |
| | console.log("nx.playReport.setCounterSetIdentifier is not implemented, counter_id=%d", counter_id); |
| | } |
| | } |
| | |
| | window.nx = new WindowNX(); |
| | window.nx.footer = new WindowNXFooter(); |
| | window.nx.playReport = new WindowNXPlayReport(); |
| | })(); |
| | )"; |
| |
|