diff options
| author | 2026-02-25 02:06:07 +0800 | |
|---|---|---|
| committer | 2026-02-25 02:06:07 +0800 | |
| commit | 78ac61904d78d558d092eff08c9f261cbdb187e8 (patch) | |
| tree | 96f68d1f1554ee3a0532793afaaa52b0c73dcbec /packages/ui/src/stores/game.svelte.ts | |
| parent | 8ff3af6cb908fd824b512379dd21ed4f595ab6bb (diff) | |
| parent | 329734b23957b84cde2af459fa61c7385fb5b5f1 (diff) | |
| download | DropOut-78ac61904d78d558d092eff08c9f261cbdb187e8.tar.gz DropOut-78ac61904d78d558d092eff08c9f261cbdb187e8.zip | |
feat(ui): partial react rewrite (#77)
## Summary by Sourcery
Export backend data structures to TypeScript for the new React-based UI
and update CI to build additional targets.
New Features:
- Generate TypeScript definitions for core backend structs and enums
used by the UI.
- Now use our own Azure app(_DropOut_) to finish the authorize process.
Enhancements:
- Annotate existing Rust models with ts-rs metadata to control exported
TypeScript shapes, including tagged enums and opaque JSON fields.
Build:
- Add ts-rs as a dependency for generating TypeScript bindings from Rust
types.
CI:
- Extend the Semifold CI workflow to run on the dev branch and build
additional Linux musl and Windows GNU targets using cross where needed.
Diffstat (limited to 'packages/ui/src/stores/game.svelte.ts')
| -rw-r--r-- | packages/ui/src/stores/game.svelte.ts | 78 |
1 files changed, 0 insertions, 78 deletions
diff --git a/packages/ui/src/stores/game.svelte.ts b/packages/ui/src/stores/game.svelte.ts deleted file mode 100644 index 504d108..0000000 --- a/packages/ui/src/stores/game.svelte.ts +++ /dev/null @@ -1,78 +0,0 @@ -import { invoke } from "@tauri-apps/api/core"; -import type { Version } from "../types"; -import { uiState } from "./ui.svelte"; -import { authState } from "./auth.svelte"; -import { instancesState } from "./instances.svelte"; - -export class GameState { - versions = $state<Version[]>([]); - selectedVersion = $state(""); - - constructor() { - // Constructor intentionally empty - // Instance switching handled in App.svelte with $effect - } - - get latestRelease() { - return this.versions.find((v) => v.type === "release"); - } - - async loadVersions(instanceId?: string) { - const id = instanceId || instancesState.activeInstanceId; - if (!id) { - this.versions = []; - return; - } - - try { - this.versions = await invoke<Version[]>("get_versions", { - instanceId: id, - }); - // Don't auto-select version here - let BottomBar handle version selection - // based on installed versions only - } catch (e) { - console.error("Failed to fetch versions:", e); - uiState.setStatus("Error fetching versions: " + e); - } - } - - async startGame() { - if (!authState.currentAccount) { - alert("Please login first!"); - authState.openLoginModal(); - return; - } - - if (!this.selectedVersion) { - alert("Please select a version!"); - return; - } - - if (!instancesState.activeInstanceId) { - alert("Please select an instance first!"); - uiState.setView("instances"); - return; - } - - uiState.setStatus("Preparing to launch " + this.selectedVersion + "..."); - console.log( - "Invoking start_game for version:", - this.selectedVersion, - "instance:", - instancesState.activeInstanceId, - ); - try { - const msg = await invoke<string>("start_game", { - instanceId: instancesState.activeInstanceId, - versionId: this.selectedVersion, - }); - console.log("Response:", msg); - uiState.setStatus(msg); - } catch (e) { - console.error(e); - uiState.setStatus("Error: " + e); - } - } -} - -export const gameState = new GameState(); |