diff options
| author | 2026-01-14 05:16:31 +0100 | |
|---|---|---|
| committer | 2026-01-14 05:16:31 +0100 | |
| commit | f8790b62643cba62b8f329e93e5e3566394441d7 (patch) | |
| tree | f3be16274ad1203e2f8ae4aeffeaf1102c580f4d /ui/src/stores/game.svelte.ts | |
| parent | f093d2a310627aa3ee5a2820339f8a18bd251e81 (diff) | |
| parent | e8e139c07d05e2f29f04906019dff5f3c520f8cc (diff) | |
| download | DropOut-f8790b62643cba62b8f329e93e5e3566394441d7.tar.gz DropOut-f8790b62643cba62b8f329e93e5e3566394441d7.zip | |
Merge branch 'main' into feat/download-java-rt
Diffstat (limited to 'ui/src/stores/game.svelte.ts')
| -rw-r--r-- | ui/src/stores/game.svelte.ts | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/ui/src/stores/game.svelte.ts b/ui/src/stores/game.svelte.ts new file mode 100644 index 0000000..0af3daf --- /dev/null +++ b/ui/src/stores/game.svelte.ts @@ -0,0 +1,48 @@ +import { invoke } from "@tauri-apps/api/core"; +import type { Version } from "../types"; +import { uiState } from "./ui.svelte"; +import { authState } from "./auth.svelte"; + +export class GameState { + versions = $state<Version[]>([]); + selectedVersion = $state(""); + + async loadVersions() { + try { + this.versions = await invoke<Version[]>("get_versions"); + if (this.versions.length > 0) { + const latest = this.versions.find((v) => v.type === "release"); + this.selectedVersion = latest ? latest.id : this.versions[0].id; + } + } 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; + } + + uiState.setStatus("Preparing to launch " + this.selectedVersion + "..."); + console.log("Invoking start_game for version:", this.selectedVersion); + try { + const msg = await invoke<string>("start_game", { versionId: this.selectedVersion }); + console.log("Response:", msg); + uiState.setStatus(msg); + } catch (e) { + console.error(e); + uiState.setStatus("Error: " + e); + } + } +} + +export const gameState = new GameState(); |