1 changed files with 193 additions and 0 deletions
@ -0,0 +1,193 @@ |
|||
// 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(); |
|||
})(); |
|||
)"; |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue