diff --git a/.gitignore b/.gitignore index bcb6648..0d6e042 100644 --- a/.gitignore +++ b/.gitignore @@ -64,5 +64,7 @@ __pycache__/ *.keystore local.properties # Generated by scripts/build_reflex_tauri_wasm.py. -Tauri/game-reflex-poc/frontend/game_reflex_poc_tauri.js -Tauri/game-reflex-poc/frontend/game_reflex_poc_tauri_bg.wasm +crates/apps/game-reflex-poc-tauri/frontend/wasm/game_reflex_poc_wasm.js +crates/apps/game-reflex-poc-tauri/frontend/wasm/game_reflex_poc_wasm_bg.wasm +crates/apps/game-reflex-poc-tauri/frontend/wasm/game_reflex_poc_wasm.d.ts +crates/apps/game-reflex-poc-tauri/frontend/wasm/game_reflex_poc_wasm_bg.wasm.d.ts diff --git a/Android/game-reflex-poc/build.gradle b/Android/game-reflex-poc/build.gradle index f5f4f8c..071e7e8 100644 --- a/Android/game-reflex-poc/build.gradle +++ b/Android/game-reflex-poc/build.gradle @@ -1,5 +1,5 @@ // file: Android/game-reflex-poc/build.gradle -// version: 12 +// version: 13 plugins { id 'com.android.application' @@ -18,7 +18,7 @@ android { minSdk 21 targetSdk 36 versionCode 1 - versionName '0.1.0-1-alpha.2.fix.1' + versionName '0.1.0-1-alpha.2.fix.2' } compileOptions { diff --git a/Android/game-snake-poc/build.gradle b/Android/game-snake-poc/build.gradle index a48fe79..8f2c86b 100644 --- a/Android/game-snake-poc/build.gradle +++ b/Android/game-snake-poc/build.gradle @@ -1,5 +1,5 @@ // file: Android/game-snake-poc/build.gradle -// version: 12 +// version: 13 plugins { id 'com.android.application' @@ -18,7 +18,7 @@ android { minSdk 21 targetSdk 36 versionCode 1 - versionName '0.1.0-1-alpha.2.fix.1' + versionName '0.1.0-1-alpha.2.fix.2' } compileOptions { diff --git a/Cargo.toml b/Cargo.toml index b98004d..32fe687 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ # file: Cargo.toml -# version: 29 +# version: 30 [workspace] resolver = "3" @@ -15,10 +15,11 @@ members = [ "crates/common/game-logging-lib", "crates/apps/game-android-entrypoint", "crates/apps/game-reflex-poc-tauri", + "crates/apps/game-reflex-poc-wasm", ] [workspace.package] -version = "0.1.0-1-alpha.2.fix.1" +version = "0.1.0-1-alpha.2.fix.2" edition = "2024" license = "MIT" repository = "https://git.sasedev.com/Sasedev/games" @@ -32,6 +33,7 @@ tracing-appender = "0.2.5" tracing-subscriber = "0.3.23" tauri = "2" tauri-build = "2" +tauri-plugin-tracing = "^0.3" wasm-bindgen = "0.2" [workspace.lints.rust] diff --git a/Tauri/README.md b/Tauri/README.md deleted file mode 100644 index 75be8dd..0000000 --- a/Tauri/README.md +++ /dev/null @@ -1,10 +0,0 @@ - - - -# Tauri - -Cette arborescence contient les frontends statiques des variantes Desktop Tauri. - -Le backend Rust reste une crate sous `crates/apps/`, conformément à la règle du workspace Cargo unique. - -Les fichiers générés par `wasm-bindgen` ne sont pas versionnés. diff --git a/Tauri/game-reflex-poc/frontend/main.js b/Tauri/game-reflex-poc/frontend/main.js deleted file mode 100644 index 5145b36..0000000 --- a/Tauri/game-reflex-poc/frontend/main.js +++ /dev/null @@ -1,76 +0,0 @@ -// file: Tauri/game-reflex-poc/frontend/main.js -// version: 1 - -import init, { ReflexWasmGame } from "./game_reflex_poc_tauri.js"; - -const FRAME_MS = 16; - -function color(red, green, blue) { - return `rgb(${red} ${green} ${blue})`; -} - -function resizeCanvas(canvas) { - const ratio = window.devicePixelRatio || 1; - const width = Math.max(1, Math.floor(canvas.clientWidth * ratio)); - const height = Math.max(1, Math.floor(canvas.clientHeight * ratio)); - if (canvas.width !== width || canvas.height !== height) { - canvas.width = width; - canvas.height = height; - } -} - -function render(game, canvas, context, score) { - resizeCanvas(canvas); - context.fillStyle = color(game.background_red(), game.background_green(), game.background_blue()); - context.fillRect(0, 0, canvas.width, canvas.height); - - const count = game.rectangle_count(); - for (let index = 0; index < count; index += 1) { - context.fillStyle = color(game.rectangle_red(index), game.rectangle_green(index), game.rectangle_blue(index)); - context.fillRect( - game.rectangle_x(index) * canvas.width, - game.rectangle_y(index) * canvas.height, - game.rectangle_width(index) * canvas.width, - game.rectangle_height(index) * canvas.height, - ); - } - - score.value = `Score : ${game.score()}`; -} - -async function start() { - await init(); - - const canvas = document.querySelector("#game"); - const score = document.querySelector("#score"); - const context = canvas.getContext("2d"); - if (!(canvas instanceof HTMLCanvasElement) || !(score instanceof HTMLOutputElement) || context === null) { - throw new Error("Reflex Tauri frontend DOM is incomplete"); - } - - const game = new ReflexWasmGame(); - canvas.addEventListener("pointerdown", (event) => { - const bounds = canvas.getBoundingClientRect(); - const x = (event.clientX - bounds.left) / bounds.width; - const y = (event.clientY - bounds.top) / bounds.height; - game.pointer_down(x, y); - render(game, canvas, context, score); - }); - - let previous = performance.now(); - function frame(now) { - while (now - previous >= FRAME_MS) { - game.tick(); - previous += FRAME_MS; - } - render(game, canvas, context, score); - window.requestAnimationFrame(frame); - } - - render(game, canvas, context, score); - window.requestAnimationFrame(frame); -} - -start().catch((error) => { - console.error("Reflex Tauri WASM startup failed", error); -}); diff --git a/crates/apps/game-reflex-poc-tauri/Cargo.toml b/crates/apps/game-reflex-poc-tauri/Cargo.toml index 90f1115..78c4ad8 100644 --- a/crates/apps/game-reflex-poc-tauri/Cargo.toml +++ b/crates/apps/game-reflex-poc-tauri/Cargo.toml @@ -1,5 +1,5 @@ # file: crates/apps/game-reflex-poc-tauri/Cargo.toml -# version: 1 +# version: 3 [package] name = "game-reflex-poc-tauri" @@ -9,24 +9,24 @@ license.workspace = true repository.workspace = true authors.workspace = true publish.workspace = true -build = "build.rs" [lib] -crate-type = ["cdylib", "rlib"] +name = "game_reflex_poc_tauri_lib" +path = "src/lib.rs" +crate-type = ["staticlib", "cdylib", "rlib"] -[dependencies] -engine-v1-common = { path = "../../engines/engine-v1-common" } -engine-v1-platform-api = { path = "../../engines/engine-v1-platform-api" } -game-reflex-poc = { path = "../../games/game-reflex-poc" } - -[target.'cfg(not(target_arch = "wasm32"))'.dependencies] -tauri.workspace = true - -[target.'cfg(target_arch = "wasm32")'.dependencies] -wasm-bindgen.workspace = true +[[bin]] +name = "game-reflex-poc-tauri" +path = "src/main.rs" [build-dependencies] tauri-build.workspace = true +[dependencies] +engine-v1-platform-api = { path = "../../engines/engine-v1-platform-api" } +tauri.workspace = true +tauri-plugin-tracing.workspace = true +tracing.workspace = true + [lints] workspace = true diff --git a/crates/apps/game-reflex-poc-tauri/build.rs b/crates/apps/game-reflex-poc-tauri/build.rs index 24848af..fcae3bf 100644 --- a/crates/apps/game-reflex-poc-tauri/build.rs +++ b/crates/apps/game-reflex-poc-tauri/build.rs @@ -1,14 +1,9 @@ // file: crates/apps/game-reflex-poc-tauri/build.rs -// version: 2 +// version: 3 -//! Tauri build script skipped for the WebAssembly library target. +//! Native Tauri build script for the Reflex Desktop WebView runner. fn main() { - let target_arch = std::env::var("CARGO_CFG_TARGET_ARCH"); - match target_arch { - std::result::Result::Ok(value) if value == "wasm32" => return, - _ => {}, - } tauri_build::build(); return; } diff --git a/crates/apps/game-reflex-poc-tauri/capabilities/default.json b/crates/apps/game-reflex-poc-tauri/capabilities/default.json new file mode 100644 index 0000000..5e194a2 --- /dev/null +++ b/crates/apps/game-reflex-poc-tauri/capabilities/default.json @@ -0,0 +1,7 @@ +{ + "$schema": "../gen/schemas/desktop-schema.json", + "identifier": "default", + "description": "Default capability for Reflex Tauri POC", + "windows": ["main"], + "permissions": ["core:default", "tracing:default"] +} diff --git a/Tauri/game-reflex-poc/frontend/index.html b/crates/apps/game-reflex-poc-tauri/frontend/index.html similarity index 67% rename from Tauri/game-reflex-poc/frontend/index.html rename to crates/apps/game-reflex-poc-tauri/frontend/index.html index 513e109..7469331 100644 --- a/Tauri/game-reflex-poc/frontend/index.html +++ b/crates/apps/game-reflex-poc-tauri/frontend/index.html @@ -4,14 +4,14 @@