Add Emscripten shell and pre-JS for browser compatibility
- src/shell.html: Custom HTML shell with crisp pixel CSS
(image-rendering: pixelated) and zoom prevention on canvas
- src/emscripten_pre.js: Patches browser quirks that cause crashes:
- Intercepts resize/scroll events to ensure e.detail is always 0
- Wraps window properties (innerWidth, outerWidth, etc.) to
always return integers, fixing browser zoom crashes
- CMakeLists.txt: Output as .html, include shell and pre-js files
The pre-JS fix addresses "attempt to write non-integer (undefined)
into integer heap" errors that occurred when users zoomed the browser
via Ctrl+scroll or browser menu.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
1abec8f808
commit
bc7046180a
3 changed files with 238 additions and 0 deletions
|
|
@ -269,6 +269,10 @@ if(EMSCRIPTEN)
|
|||
--preload-file=${CMAKE_SOURCE_DIR}/src/scripts@/scripts
|
||||
# Preload assets
|
||||
--preload-file=${CMAKE_SOURCE_DIR}/assets@/assets
|
||||
# Use custom HTML shell for crisp pixel rendering
|
||||
--shell-file=${CMAKE_SOURCE_DIR}/src/shell.html
|
||||
# Pre-JS to fix browser zoom causing undefined values in events
|
||||
--pre-js=${CMAKE_SOURCE_DIR}/src/emscripten_pre.js
|
||||
)
|
||||
|
||||
# Add SDL2 options if using SDL2 backend
|
||||
|
|
@ -288,6 +292,9 @@ if(EMSCRIPTEN)
|
|||
|
||||
target_link_options(mcrogueface PRIVATE ${EMSCRIPTEN_LINK_OPTIONS})
|
||||
|
||||
# Output as HTML to use the shell file
|
||||
set_target_properties(mcrogueface PROPERTIES SUFFIX ".html")
|
||||
|
||||
# Set Python home for the embedded interpreter
|
||||
target_compile_definitions(mcrogueface PRIVATE
|
||||
MCRF_WASM_PYTHON_HOME="/lib/python3.14"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue