Working interface between rust and web
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
// Saturn Client Launcher Centralized Service Layer
|
||||
// Handles all data fetching, mod management, and launch logic.
|
||||
import { invoke } from "@tauri-apps/api/core";
|
||||
|
||||
// --- Types ---
|
||||
export interface Mod {
|
||||
id: string;
|
||||
name: string;
|
||||
@@ -21,84 +21,21 @@ export interface GameVersion {
|
||||
|
||||
export interface LauncherSettings {
|
||||
jvmArguments: string;
|
||||
maxMemory: number; // in MB
|
||||
maxMemory: number;
|
||||
}
|
||||
|
||||
// --- Internal state ---
|
||||
const versions: GameVersion[] = [
|
||||
{
|
||||
id: "1.20.1",
|
||||
name: "Fabric 1.20.1",
|
||||
releaseDate: "2023-06-07",
|
||||
type: "release",
|
||||
},
|
||||
{
|
||||
id: "1.20.4",
|
||||
name: "Fabric 1.20.4",
|
||||
releaseDate: "2023-12-07",
|
||||
type: "release",
|
||||
},
|
||||
{
|
||||
id: "1.21",
|
||||
name: "Fabric 1.21",
|
||||
releaseDate: "2024-06-13",
|
||||
type: "release",
|
||||
},
|
||||
];
|
||||
|
||||
const installedMods: Mod[] = [
|
||||
{
|
||||
id: "sodium",
|
||||
name: "Sodium",
|
||||
version: "0.5.8",
|
||||
author: "jellysquid3",
|
||||
description: "Modern rendering engine for Minecraft.",
|
||||
enabled: true,
|
||||
supportedVersions: ["1.20.1", "1.20.4", "1.21"],
|
||||
},
|
||||
{
|
||||
id: "iris",
|
||||
name: "Iris",
|
||||
version: "1.7.0",
|
||||
author: "coderbot",
|
||||
description: "A modern shaders mod for Minecraft.",
|
||||
enabled: true,
|
||||
supportedVersions: ["1.20.1", "1.20.4", "1.21"],
|
||||
},
|
||||
{
|
||||
id: "lithium",
|
||||
name: "Lithium",
|
||||
version: "0.11.2",
|
||||
author: "jellysquid3",
|
||||
description: "General-purpose optimization mod for Minecraft.",
|
||||
enabled: false,
|
||||
supportedVersions: ["1.20.1", "1.20.4"],
|
||||
},
|
||||
];
|
||||
|
||||
let settings: LauncherSettings = {
|
||||
jvmArguments:
|
||||
"-XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200",
|
||||
maxMemory: 4096,
|
||||
};
|
||||
|
||||
// --- Versions ---
|
||||
export async function getVersions(): Promise<GameVersion[]> {
|
||||
return [...versions];
|
||||
return await invoke("get_versions");
|
||||
}
|
||||
|
||||
// --- Mods ---
|
||||
export async function getInstalledMods(versionId: string): Promise<Mod[]> {
|
||||
return installedMods.filter((mod) =>
|
||||
mod.supportedVersions.includes(versionId),
|
||||
);
|
||||
return await invoke("get_installed_mods", { versionId });
|
||||
}
|
||||
|
||||
export async function toggleMod(modId: string): Promise<void> {
|
||||
const mod = installedMods.find((m) => m.id === modId);
|
||||
if (mod) {
|
||||
mod.enabled = !mod.enabled;
|
||||
}
|
||||
await invoke("toggle_mod", { modId });
|
||||
}
|
||||
|
||||
export async function discoverMods(query: string): Promise<Mod[]> {
|
||||
@@ -143,37 +80,23 @@ export async function installMod(
|
||||
mod: Mod,
|
||||
versionsList: string[],
|
||||
): Promise<void> {
|
||||
console.log(`Installing ${mod.name} to versions: ${versionsList.join(", ")}`);
|
||||
|
||||
if (!installedMods.find((m) => m.id === mod.id)) {
|
||||
installedMods.push({
|
||||
...mod,
|
||||
enabled: true,
|
||||
supportedVersions: versionsList,
|
||||
});
|
||||
}
|
||||
await invoke("install_mod", { modItem: mod });
|
||||
}
|
||||
|
||||
// --- Settings ---
|
||||
export async function getSettings(): Promise<LauncherSettings> {
|
||||
return { ...settings };
|
||||
return await invoke("get_settings");
|
||||
}
|
||||
|
||||
export async function updateSettings(
|
||||
newSettings: Partial<LauncherSettings>,
|
||||
): Promise<void> {
|
||||
settings = { ...settings, ...newSettings };
|
||||
await invoke("update_settings", { newSettings });
|
||||
}
|
||||
|
||||
// --- Launch ---
|
||||
export async function launchGame(
|
||||
versionId: string,
|
||||
): Promise<{ success: boolean; message: string }> {
|
||||
console.log(`Launching Saturn Client with version ${versionId}...`);
|
||||
|
||||
return new Promise((resolve) => {
|
||||
setTimeout(() => {
|
||||
resolve({ success: true, message: "Game launched successfully!" });
|
||||
}, 2000);
|
||||
});
|
||||
return await invoke("launch_game", { versionId });
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user