// Copyright 2020 yuzu Emulator Project // Licensed under GPLv2 or any later version // Refer to the license.txt file included. #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 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(); })(); )";