Working structure
This commit is contained in:
Generated
+69
-23
@@ -2172,6 +2172,12 @@ dependencies = [
|
|||||||
"selectors 0.24.0",
|
"selectors 0.24.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "lazy_static"
|
||||||
|
version = "1.5.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "leb128fmt"
|
name = "leb128fmt"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
@@ -2329,7 +2335,6 @@ dependencies = [
|
|||||||
"lighty-java",
|
"lighty-java",
|
||||||
"lighty-launch",
|
"lighty-launch",
|
||||||
"lighty-loaders",
|
"lighty-loaders",
|
||||||
"lighty-tauri",
|
|
||||||
"lighty-version",
|
"lighty-version",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"tokio",
|
"tokio",
|
||||||
@@ -2357,28 +2362,6 @@ dependencies = [
|
|||||||
"zip",
|
"zip",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "lighty-tauri"
|
|
||||||
version = "0.8.6"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "8d3842cdcd5530f59351a3d6f0a9d3d57e76b010d456427e789ad479a7c2272d"
|
|
||||||
dependencies = [
|
|
||||||
"directories",
|
|
||||||
"lighty-auth",
|
|
||||||
"lighty-core",
|
|
||||||
"lighty-java",
|
|
||||||
"lighty-launch",
|
|
||||||
"lighty-loaders",
|
|
||||||
"lighty-version",
|
|
||||||
"once_cell",
|
|
||||||
"serde",
|
|
||||||
"serde_json",
|
|
||||||
"tauri",
|
|
||||||
"thiserror 2.0.18",
|
|
||||||
"tokio",
|
|
||||||
"tracing",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "lighty-version"
|
name = "lighty-version"
|
||||||
version = "0.8.6"
|
version = "0.8.6"
|
||||||
@@ -2616,6 +2599,15 @@ version = "0.1.14"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb"
|
checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "nu-ansi-term"
|
||||||
|
version = "0.50.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5"
|
||||||
|
dependencies = [
|
||||||
|
"windows-sys 0.61.2",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "num-conv"
|
name = "num-conv"
|
||||||
version = "0.2.1"
|
version = "0.2.1"
|
||||||
@@ -3860,12 +3852,16 @@ dependencies = [
|
|||||||
name = "saturn-launcher"
|
name = "saturn-launcher"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"anyhow",
|
||||||
|
"directories",
|
||||||
"lighty-launcher",
|
"lighty-launcher",
|
||||||
|
"once_cell",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"tauri",
|
"tauri",
|
||||||
"tauri-build",
|
"tauri-build",
|
||||||
"tauri-plugin-opener",
|
"tauri-plugin-opener",
|
||||||
|
"tracing-subscriber",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -4173,6 +4169,15 @@ dependencies = [
|
|||||||
"digest",
|
"digest",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "sharded-slab"
|
||||||
|
version = "0.1.7"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6"
|
||||||
|
dependencies = [
|
||||||
|
"lazy_static",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "shlex"
|
name = "shlex"
|
||||||
version = "1.3.0"
|
version = "1.3.0"
|
||||||
@@ -4792,6 +4797,15 @@ dependencies = [
|
|||||||
"syn 2.0.117",
|
"syn 2.0.117",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "thread_local"
|
||||||
|
version = "1.1.9"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "time"
|
name = "time"
|
||||||
version = "0.3.47"
|
version = "0.3.47"
|
||||||
@@ -5110,6 +5124,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a"
|
checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"once_cell",
|
"once_cell",
|
||||||
|
"valuable",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "tracing-log"
|
||||||
|
version = "0.2.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3"
|
||||||
|
dependencies = [
|
||||||
|
"log",
|
||||||
|
"once_cell",
|
||||||
|
"tracing-core",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "tracing-subscriber"
|
||||||
|
version = "0.3.23"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319"
|
||||||
|
dependencies = [
|
||||||
|
"nu-ansi-term",
|
||||||
|
"sharded-slab",
|
||||||
|
"smallvec",
|
||||||
|
"thread_local",
|
||||||
|
"tracing-core",
|
||||||
|
"tracing-log",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -5277,6 +5317,12 @@ dependencies = [
|
|||||||
"wasm-bindgen",
|
"wasm-bindgen",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "valuable"
|
||||||
|
version = "0.1.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "version-compare"
|
name = "version-compare"
|
||||||
version = "0.2.1"
|
version = "0.2.1"
|
||||||
|
|||||||
@@ -22,4 +22,8 @@ tauri = { version = "2", features = [] }
|
|||||||
tauri-plugin-opener = "2"
|
tauri-plugin-opener = "2"
|
||||||
serde = { version = "1", features = ["derive"] }
|
serde = { version = "1", features = ["derive"] }
|
||||||
serde_json = "1"
|
serde_json = "1"
|
||||||
lighty-launcher = { version = "0.8.6", features = ["fabric", "tauri-commands"] }
|
lighty-launcher = { version = "0.8.6", features = ["fabric"] }
|
||||||
|
directories = "6.0"
|
||||||
|
once_cell = "1.21"
|
||||||
|
tracing-subscriber = "0.3"
|
||||||
|
anyhow = "1.0"
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
use directories::ProjectDirs;
|
||||||
|
use lighty_launcher::{
|
||||||
|
auth::{Authenticator, OfflineAuth},
|
||||||
|
java::JavaDistribution,
|
||||||
|
launch::Launch,
|
||||||
|
loaders::Loader,
|
||||||
|
version::VersionBuilder,
|
||||||
|
};
|
||||||
|
use once_cell::sync::Lazy;
|
||||||
|
|
||||||
|
static LAUNCHER_DIR: Lazy<ProjectDirs> = Lazy::new(|| {
|
||||||
|
ProjectDirs::from("org", "SaturnLauncher", "SaturnLauncher")
|
||||||
|
.expect("Failed to create project directories")
|
||||||
|
});
|
||||||
|
|
||||||
|
#[tauri::command]
|
||||||
|
pub async fn launch() -> Result<(), String> {
|
||||||
|
println!("Launcher directory: {:?}", LAUNCHER_DIR);
|
||||||
|
|
||||||
|
tracing_subscriber::fmt::init();
|
||||||
|
|
||||||
|
// Authenticate
|
||||||
|
let mut auth = OfflineAuth::new("PlayerName");
|
||||||
|
let profile = auth
|
||||||
|
.authenticate()
|
||||||
|
.await
|
||||||
|
.map_err(|e| format!("Authentication failed: {}", e))?;
|
||||||
|
|
||||||
|
// Create version instance
|
||||||
|
let mut version = VersionBuilder::new(
|
||||||
|
"vanilla-1.21.1",
|
||||||
|
Loader::Vanilla,
|
||||||
|
"",
|
||||||
|
"1.21.1",
|
||||||
|
&LAUNCHER_DIR,
|
||||||
|
);
|
||||||
|
|
||||||
|
// Launch the game
|
||||||
|
version
|
||||||
|
.launch(&profile, JavaDistribution::Temurin)
|
||||||
|
.run()
|
||||||
|
.await
|
||||||
|
.map_err(|e| format!("Launch failed: {}", e))?;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
pub mod commands;
|
pub mod commands;
|
||||||
|
pub mod launcher;
|
||||||
|
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use std::sync::Mutex;
|
use std::sync::Mutex;
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
// Prevents additional console window on Windows in release, DO NOT REMOVE!!
|
// Prevents additional console window on Windows in release, DO NOT REMOVE!!
|
||||||
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
|
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
|
||||||
|
|
||||||
use lighty_launcher::tauri::lighty_plugin;
|
|
||||||
use saturn_launcher_lib::{commands::*, AppState};
|
use saturn_launcher_lib::{commands::*, AppState};
|
||||||
use std::sync::Mutex;
|
use std::sync::Mutex;
|
||||||
|
|
||||||
@@ -9,14 +8,14 @@ use std::sync::Mutex;
|
|||||||
fn main() {
|
fn main() {
|
||||||
tauri::Builder::default()
|
tauri::Builder::default()
|
||||||
.plugin(tauri_plugin_opener::init())
|
.plugin(tauri_plugin_opener::init())
|
||||||
.plugin(lighty_plugin())
|
|
||||||
.manage(Mutex::new(AppState::default()))
|
.manage(Mutex::new(AppState::default()))
|
||||||
.invoke_handler(tauri::generate_handler![
|
.invoke_handler(tauri::generate_handler![
|
||||||
get_installed_mods,
|
get_installed_mods,
|
||||||
toggle_mod,
|
toggle_mod,
|
||||||
install_mod,
|
install_mod,
|
||||||
get_settings,
|
get_settings,
|
||||||
update_settings
|
update_settings,
|
||||||
|
saturn_launcher_lib::launcher::launch
|
||||||
])
|
])
|
||||||
.run(tauri::generate_context!())
|
.run(tauri::generate_context!())
|
||||||
.expect("error while running tauri application");
|
.expect("error while running tauri application");
|
||||||
|
|||||||
+1
-1
@@ -8,7 +8,7 @@ import {
|
|||||||
User,
|
User,
|
||||||
LogOut,
|
LogOut,
|
||||||
} from "lucide-react";
|
} from "lucide-react";
|
||||||
import { getVersions } from "./services/LauncherService";
|
import { getVersions } from "./services/SaturnApi";
|
||||||
import { clsx, type ClassValue } from "clsx";
|
import { clsx, type ClassValue } from "clsx";
|
||||||
import { twMerge } from "tailwind-merge";
|
import { twMerge } from "tailwind-merge";
|
||||||
import Logo from "@/assets/logo.png";
|
import Logo from "@/assets/logo.png";
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import {
|
|||||||
getVersions,
|
getVersions,
|
||||||
toggleMod,
|
toggleMod,
|
||||||
installMod,
|
installMod,
|
||||||
} from "../services/LauncherService";
|
} from "../services/SaturnApi";
|
||||||
import { clsx, type ClassValue } from "clsx";
|
import { clsx, type ClassValue } from "clsx";
|
||||||
import { twMerge } from "tailwind-merge";
|
import { twMerge } from "tailwind-merge";
|
||||||
import { motion, AnimatePresence } from "framer-motion";
|
import { motion, AnimatePresence } from "framer-motion";
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
import React, { useEffect, useState } from "react";
|
import React, { useEffect, useState } from "react";
|
||||||
import { Play, Loader2 } from "lucide-react";
|
import { Play, Loader2 } from "lucide-react";
|
||||||
import { launchGame } from "../services/LauncherService";
|
// import { launchGame } from "../services/SaturnApi";
|
||||||
import Bg from "@/assets/bg.png";
|
import Bg from "@/assets/bg.png";
|
||||||
import { listen } from "@tauri-apps/api/event";
|
import { listen } from "@tauri-apps/api/event";
|
||||||
import { GameVersion } from "@/services/Types";
|
import { GameVersion } from "@/services/Types";
|
||||||
|
import { launch } from "@/services/LauncherApi";
|
||||||
|
|
||||||
interface PlaySectionProps {
|
interface PlaySectionProps {
|
||||||
version: GameVersion;
|
version: GameVersion;
|
||||||
@@ -43,7 +44,7 @@ const PlaySection: React.FC<PlaySectionProps> = ({ version }) => {
|
|||||||
<div className="absolute -inset-1 bg-linear-to-r from-blue-600 to-cyan-500 rounded-lg blur opacity-25 group-hover:opacity-50 transition duration-1000 group-hover:duration-200"></div>
|
<div className="absolute -inset-1 bg-linear-to-r from-blue-600 to-cyan-500 rounded-lg blur opacity-25 group-hover:opacity-50 transition duration-1000 group-hover:duration-200"></div>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
onClick={() => launchGame(version.id)}
|
onClick={() => launch()}
|
||||||
disabled={isLaunching}
|
disabled={isLaunching}
|
||||||
className="relative btn-primary px-16 py-4 text-xl flex items-center gap-3 min-w-60 justify-center"
|
className="relative btn-primary px-16 py-4 text-xl flex items-center gap-3 min-w-60 justify-center"
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import {
|
|||||||
Info,
|
Info,
|
||||||
AlertTriangle,
|
AlertTriangle,
|
||||||
} from "lucide-react";
|
} from "lucide-react";
|
||||||
import { getSettings, updateSettings } from "../services/LauncherService";
|
import { getSettings, updateSettings } from "../services/SaturnApi";
|
||||||
import { motion } from "framer-motion";
|
import { motion } from "framer-motion";
|
||||||
import { LauncherSettings } from "@/services/Types";
|
import { LauncherSettings } from "@/services/Types";
|
||||||
|
|
||||||
@@ -118,8 +118,7 @@ const SettingsSection: React.FC = () => {
|
|||||||
<div className="relative w-full mt-2 h-6">
|
<div className="relative w-full mt-2 h-6">
|
||||||
{[1024, 4096, 8192, 12288, 16384].map((value) => {
|
{[1024, 4096, 8192, 12288, 16384].map((value) => {
|
||||||
const percent =
|
const percent =
|
||||||
(((value - 1024) / (16384 - 1024)) * 100 - 50) * 0.97 +
|
(((value - 1024) / (16384 - 1024)) * 100 - 50) * 0.97 + 50;
|
||||||
50;
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<span
|
<span
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
import { invoke } from "@tauri-apps/api/core";
|
||||||
|
|
||||||
|
const clientId = "74909cec-49b6-4fee-aa60-1b2a57ef72e1";
|
||||||
|
|
||||||
|
export async function authenticate() {
|
||||||
|
return await invoke("plugin:lighty-launcher|authenticate", {
|
||||||
|
client_id: clientId,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function launch() {
|
||||||
|
return await invoke("launch");
|
||||||
|
}
|
||||||
@@ -75,11 +75,3 @@ export async function updateSettings(
|
|||||||
): Promise<void> {
|
): Promise<void> {
|
||||||
await invoke("update_settings", { newSettings });
|
await invoke("update_settings", { newSettings });
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- Launch ---
|
|
||||||
export async function launchGame(
|
|
||||||
versionId: string,
|
|
||||||
): Promise<{ success: boolean; message: string }> {
|
|
||||||
await invoke("plugin:lighty-launcher|launch", { versionId });
|
|
||||||
return await invoke("launch_game", { versionId });
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user