mirror of
https://github.com/open-goal/launcher.git
synced 2024-10-19 14:47:36 -04:00
jak2: prepare for jak 2 support (#341)
This commit is contained in:
parent
3f5c4cc1fc
commit
578855deba
100
src-tauri/Cargo.lock
generated
100
src-tauri/Cargo.lock
generated
|
@ -1732,7 +1732,21 @@ checksum = "e5c13fb08e5d4dfc151ee5e88bae63f7773d61852f3bdc73c9f4b9e1bde03148"
|
|||
dependencies = [
|
||||
"log",
|
||||
"mac",
|
||||
"markup5ever",
|
||||
"markup5ever 0.10.1",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 1.0.109",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "html5ever"
|
||||
version = "0.26.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bea68cab48b8459f17cf1c944c67ddc572d272d9f2b274140f223ecb1da4a3b7"
|
||||
dependencies = [
|
||||
"log",
|
||||
"mac",
|
||||
"markup5ever 0.11.0",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 1.0.109",
|
||||
|
@ -2074,7 +2088,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "1ea8e9c6e031377cff82ee3001dc8026cdf431ed4e2e6b51f98ab8c73484a358"
|
||||
dependencies = [
|
||||
"cssparser",
|
||||
"html5ever",
|
||||
"html5ever 0.25.2",
|
||||
"matches",
|
||||
"selectors",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "kuchikiki"
|
||||
version = "0.8.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f29e4755b7b995046f510a7520c42b2fed58b77bd94d5a87a8eb43d2fd126da8"
|
||||
dependencies = [
|
||||
"cssparser",
|
||||
"html5ever 0.26.0",
|
||||
"indexmap 1.9.3",
|
||||
"matches",
|
||||
"selectors",
|
||||
]
|
||||
|
@ -2199,7 +2226,21 @@ checksum = "a24f40fb03852d1cdd84330cddcaf98e9ec08a7b7768e952fad3b4cf048ec8fd"
|
|||
dependencies = [
|
||||
"log",
|
||||
"phf 0.8.0",
|
||||
"phf_codegen",
|
||||
"phf_codegen 0.8.0",
|
||||
"string_cache",
|
||||
"string_cache_codegen",
|
||||
"tendril",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "markup5ever"
|
||||
version = "0.11.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7a2629bb1404f3d34c2e921f21fd34ba00b206124c81f65c50b43b6aaefeb016"
|
||||
dependencies = [
|
||||
"log",
|
||||
"phf 0.10.1",
|
||||
"phf_codegen 0.10.0",
|
||||
"string_cache",
|
||||
"string_cache_codegen",
|
||||
"tendril",
|
||||
|
@ -2778,6 +2819,16 @@ dependencies = [
|
|||
"phf_shared 0.8.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "phf_codegen"
|
||||
version = "0.10.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4fb1c3a8bc4dd4e5cfce29b44ffc14bedd2ee294559a294e2a4d4c9e9a6a13cd"
|
||||
dependencies = [
|
||||
"phf_generator 0.10.0",
|
||||
"phf_shared 0.10.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "phf_generator"
|
||||
version = "0.8.0"
|
||||
|
@ -3398,7 +3449,7 @@ dependencies = [
|
|||
"log",
|
||||
"matches",
|
||||
"phf 0.8.0",
|
||||
"phf_codegen",
|
||||
"phf_codegen 0.8.0",
|
||||
"precomputed-hash",
|
||||
"servo_arc",
|
||||
"smallvec",
|
||||
|
@ -3925,9 +3976,9 @@ checksum = "9d0e916b1148c8e263850e1ebcbd046f333e0683c724876bb0da63ea4373dc8a"
|
|||
|
||||
[[package]]
|
||||
name = "tauri"
|
||||
version = "1.4.1"
|
||||
version = "1.5.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7fbe522898e35407a8e60dc3870f7579fea2fc262a6a6072eccdd37ae1e1d91e"
|
||||
checksum = "0238c5063bf9613054149a1b6bce4935922e532b7d8211f36989a490a79806be"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"bytes",
|
||||
|
@ -3980,12 +4031,13 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "tauri-build"
|
||||
version = "1.4.0"
|
||||
version = "1.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7d2edd6a259b5591c8efdeb9d5702cb53515b82a6affebd55c7fd6d3a27b7d1b"
|
||||
checksum = "defbfc551bd38ab997e5f8e458f87396d2559d05ce32095076ad6c30f7fc5f9c"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"cargo_toml",
|
||||
"dirs-next",
|
||||
"heck 0.4.1",
|
||||
"json-patch",
|
||||
"semver",
|
||||
|
@ -3993,13 +4045,14 @@ dependencies = [
|
|||
"serde_json",
|
||||
"tauri-utils",
|
||||
"tauri-winres",
|
||||
"walkdir",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tauri-codegen"
|
||||
version = "1.4.0"
|
||||
version = "1.4.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "54ad2d49fdeab4a08717f5b49a163bdc72efc3b1950b6758245fcde79b645e1a"
|
||||
checksum = "7b3475e55acec0b4a50fb96435f19631fb58cbcd31923e1a213de5c382536bbb"
|
||||
dependencies = [
|
||||
"base64 0.21.3",
|
||||
"brotli",
|
||||
|
@ -4023,9 +4076,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "tauri-macros"
|
||||
version = "1.4.0"
|
||||
version = "1.4.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8eb12a2454e747896929338d93b0642144bb51e0dddbb36e579035731f0d76b7"
|
||||
checksum = "613740228de92d9196b795ac455091d3a5fbdac2654abb8bb07d010b62ab43af"
|
||||
dependencies = [
|
||||
"heck 0.4.1",
|
||||
"proc-macro2",
|
||||
|
@ -4037,9 +4090,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "tauri-runtime"
|
||||
version = "0.14.0"
|
||||
version = "0.14.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "108683199cb18f96d2d4134187bb789964143c845d2d154848dda209191fd769"
|
||||
checksum = "07f8e9e53e00e9f41212c115749e87d5cd2a9eebccafca77a19722eeecd56d43"
|
||||
dependencies = [
|
||||
"gtk",
|
||||
"http",
|
||||
|
@ -4058,9 +4111,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "tauri-runtime-wry"
|
||||
version = "0.14.0"
|
||||
version = "0.14.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0b7aa256a1407a3a091b5d843eccc1a5042289baf0a43d1179d9f0fcfea37c1b"
|
||||
checksum = "8141d72b6b65f2008911e9ef5b98a68d1e3413b7a1464e8f85eb3673bb19a895"
|
||||
dependencies = [
|
||||
"cocoa",
|
||||
"gtk",
|
||||
|
@ -4078,19 +4131,20 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "tauri-utils"
|
||||
version = "1.4.0"
|
||||
version = "1.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "03fc02bb6072bb397e1d473c6f76c953cda48b4a2d0cce605df284aa74a12e84"
|
||||
checksum = "34d55e185904a84a419308d523c2c6891d5e2dbcee740c4997eb42e75a7b0f46"
|
||||
dependencies = [
|
||||
"brotli",
|
||||
"ctor",
|
||||
"dunce",
|
||||
"glob",
|
||||
"heck 0.4.1",
|
||||
"html5ever",
|
||||
"html5ever 0.26.0",
|
||||
"infer",
|
||||
"json-patch",
|
||||
"kuchiki",
|
||||
"kuchikiki",
|
||||
"log",
|
||||
"memchr",
|
||||
"phf 0.10.1",
|
||||
"proc-macro2",
|
||||
|
@ -5211,9 +5265,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "wry"
|
||||
version = "0.24.3"
|
||||
version = "0.24.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "33748f35413c8a98d45f7a08832d848c0c5915501803d1faade5a4ebcd258cea"
|
||||
checksum = "88ef04bdad49eba2e01f06e53688c8413bd6a87b0bc14b72284465cf96e3578e"
|
||||
dependencies = [
|
||||
"base64 0.13.1",
|
||||
"block",
|
||||
|
@ -5225,7 +5279,7 @@ dependencies = [
|
|||
"gio",
|
||||
"glib",
|
||||
"gtk",
|
||||
"html5ever",
|
||||
"html5ever 0.25.2",
|
||||
"http",
|
||||
"kuchiki",
|
||||
"libc",
|
||||
|
|
|
@ -12,7 +12,7 @@ rust-version = "1.61"
|
|||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[build-dependencies]
|
||||
tauri-build = { version = "1.4.0", features = [] }
|
||||
tauri-build = { version = "1.5.0", features = [] }
|
||||
|
||||
[dependencies]
|
||||
backtrace = "0.3.69"
|
||||
|
@ -32,7 +32,7 @@ serde = { version = "1.0", features = ["derive"] }
|
|||
serde_json = "1.0.107"
|
||||
sysinfo = "0.29.10"
|
||||
tar = "0.4.40"
|
||||
tauri = { version = "1.4.1", features = ["api-all", "devtools", "reqwest-client"] }
|
||||
tauri = { version = "1.5.1", features = ["api-all", "devtools", "reqwest-client"] }
|
||||
thiserror = "1.0.49"
|
||||
tokio = { version = "1", features = ["full"] }
|
||||
walkdir = "2.4.0"
|
||||
|
|
|
@ -289,6 +289,8 @@ pub async fn extract_and_validate_iso(
|
|||
|
||||
let mut args = vec![
|
||||
path_to_iso.clone(),
|
||||
"--game".to_string(),
|
||||
game_name.clone(),
|
||||
"--extract".to_string(),
|
||||
"--validate".to_string(),
|
||||
"--proj-path".to_string(),
|
||||
|
@ -387,6 +389,8 @@ pub async fn run_decompiler(
|
|||
command
|
||||
.args([
|
||||
source_path,
|
||||
"--game".to_string(),
|
||||
game_name.clone(),
|
||||
"--decompile".to_string(),
|
||||
"--proj-path".to_string(),
|
||||
data_folder.to_string_lossy().into_owned(),
|
||||
|
@ -473,6 +477,8 @@ pub async fn run_compiler(
|
|||
command
|
||||
.args([
|
||||
source_path,
|
||||
"--game".to_string(),
|
||||
game_name.clone(),
|
||||
"--compile".to_string(),
|
||||
"--proj-path".to_string(),
|
||||
data_folder.to_string_lossy().into_owned(),
|
||||
|
|
|
@ -392,3 +392,25 @@ pub async fn set_enabled_texture_packs(
|
|||
})?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub async fn does_active_tooling_version_support_game(
|
||||
config: tauri::State<'_, tokio::sync::Mutex<LauncherConfig>>,
|
||||
game_name: String,
|
||||
) -> Result<bool, CommandError> {
|
||||
let config_lock = config.lock().await;
|
||||
// If we can't determine the version, assume its our first release
|
||||
let active_version = config_lock
|
||||
.active_version
|
||||
.as_ref()
|
||||
.ok_or(CommandError::Configuration(
|
||||
"No active version set, can't perform operation".to_owned(),
|
||||
))?;
|
||||
let tooling_version = Version::parse(active_version.strip_prefix('v').unwrap_or(&active_version))
|
||||
.unwrap_or(Version::new(0, 0, 1));
|
||||
match game_name.as_str() {
|
||||
"jak1" => Ok(true),
|
||||
"jak2" => Ok(tooling_version.minor >= 1 && tooling_version.patch >= 44),
|
||||
_ => Ok(false),
|
||||
}
|
||||
}
|
||||
|
|
|
@ -140,6 +140,7 @@ fn main() {
|
|||
commands::binaries::update_data_directory,
|
||||
commands::config::cleanup_enabled_texture_packs,
|
||||
commands::config::delete_old_data_directory,
|
||||
commands::config::does_active_tooling_version_support_game,
|
||||
commands::config::finalize_installation,
|
||||
commands::config::get_active_tooling_version_folder,
|
||||
commands::config::get_active_tooling_version,
|
||||
|
|
|
@ -29,7 +29,10 @@
|
|||
window.sessionStorage.setItem("refreshHack", "true");
|
||||
}
|
||||
// Set locale from settings
|
||||
setLocale(await getLocale());
|
||||
const locale = await getLocale();
|
||||
if (locale !== null) {
|
||||
setLocale(locale);
|
||||
}
|
||||
});
|
||||
|
||||
if (!isInDebugMode()) {
|
||||
|
@ -82,12 +85,6 @@
|
|||
primary={false}
|
||||
let:params
|
||||
/>
|
||||
<Route
|
||||
path="/jak2"
|
||||
component={GameInProgress}
|
||||
primary={false}
|
||||
let:params
|
||||
/>
|
||||
<Route
|
||||
path="/settings/:tab"
|
||||
component={Settings}
|
||||
|
|
|
@ -152,5 +152,14 @@
|
|||
"update_changelog_header_pullRequest": "Pull Request",
|
||||
"update_description": "View the changes below and click the button to update to the latest version. The launcher will restart when finished.",
|
||||
"update_header": "Launcher Update Available",
|
||||
"update_versionLabel": "Version"
|
||||
"update_versionLabel": "Version",
|
||||
"gameControls_toolingTooOld_button_setVersion": "Set Version",
|
||||
"gameControls_toolingTooOld_header": "Tooling Version Does Not Support Game!",
|
||||
"gameControls_toolingTooOld_subheader": "Head over to the following settings page to download the latest release",
|
||||
"gameControls_beta_headerA": "Jak 2 is in Beta!",
|
||||
"gameControls_beta_headerB": "You will encounter minor bugs and instability.",
|
||||
"gameControls_beta_issueTracker_linkPreText": "For a list of all known issues, see",
|
||||
"gameControls_beta_issueTracker_linkText": "here",
|
||||
"gameControls_beta_bugReport_linkPreText": "To submit a non-duplicate bug report, see",
|
||||
"gameControls_beta_bugReport_linkText": "here"
|
||||
}
|
||||
|
|
18
src/components/games/GameNotSupportedByTooling.svelte
Normal file
18
src/components/games/GameNotSupportedByTooling.svelte
Normal file
|
@ -0,0 +1,18 @@
|
|||
<script>
|
||||
import { Button } from "flowbite-svelte";
|
||||
import { _ } from "svelte-i18n";
|
||||
</script>
|
||||
|
||||
<div class="flex flex-col h-full justify-center items-center p-5 text-center">
|
||||
<h1 class="text-2xl font-black mb-5 text-outline">
|
||||
{$_("gameControls_toolingTooOld_header")}
|
||||
</h1>
|
||||
<p class="mb-10">
|
||||
{$_("gameControls_toolingTooOld_subheader")}
|
||||
</p>
|
||||
<Button
|
||||
class="border-solid border-2 border-slate-500 rounded bg-slate-900 hover:bg-slate-800 text-sm text-white font-semibold px-5 py-2"
|
||||
href="/settings/versions"
|
||||
>{$_("gameControls_toolingTooOld_button_setVersion")}</Button
|
||||
>
|
||||
</div>
|
|
@ -244,3 +244,15 @@ export async function setEnabledTexturePacks(
|
|||
},
|
||||
);
|
||||
}
|
||||
|
||||
export async function doesActiveToolingVersionSupportGame(
|
||||
gameName: string,
|
||||
): Promise<boolean> {
|
||||
return await invoke_rpc(
|
||||
"does_active_tooling_version_support_game",
|
||||
{
|
||||
gameName: gameName,
|
||||
},
|
||||
() => false,
|
||||
);
|
||||
}
|
||||
|
|
|
@ -4,8 +4,10 @@
|
|||
import GameControls from "../components/games/GameControls.svelte";
|
||||
import GameSetup from "../components/games/setup/GameSetup.svelte";
|
||||
import { onMount } from "svelte";
|
||||
import { Spinner } from "flowbite-svelte";
|
||||
import { Alert, Spinner } from "flowbite-svelte";
|
||||
import { _ } from "svelte-i18n";
|
||||
import {
|
||||
doesActiveToolingVersionSupportGame,
|
||||
getInstalledVersion,
|
||||
getInstalledVersionFolder,
|
||||
isGameInstalled,
|
||||
|
@ -18,9 +20,12 @@
|
|||
getActiveVersionFolder,
|
||||
} from "$lib/rpc/versions";
|
||||
import GameToolsNotSet from "../components/games/GameToolsNotSet.svelte";
|
||||
import GameNotSupportedByTooling from "../components/games/GameNotSupportedByTooling.svelte";
|
||||
import { VersionStore } from "$lib/stores/VersionStore";
|
||||
|
||||
const params = useParams();
|
||||
$: $params, loadGameInfo();
|
||||
|
||||
let activeGame = SupportedGame.Jak1;
|
||||
let componentLoaded = false;
|
||||
|
||||
|
@ -32,7 +37,15 @@
|
|||
|
||||
let versionMismatchDetected = false;
|
||||
|
||||
let gameInBeta = false;
|
||||
let gameSupportedByTooling = false;
|
||||
|
||||
onMount(async () => {
|
||||
loadGameInfo();
|
||||
});
|
||||
|
||||
async function loadGameInfo() {
|
||||
componentLoaded = false;
|
||||
// Figure out what game we are displaying
|
||||
if (
|
||||
$params["game_name"] !== undefined &&
|
||||
|
@ -44,6 +57,14 @@
|
|||
activeGame = SupportedGame.Jak1;
|
||||
}
|
||||
|
||||
if (activeGame === SupportedGame.Jak2) {
|
||||
gameInBeta = true;
|
||||
}
|
||||
|
||||
gameSupportedByTooling = await doesActiveToolingVersionSupportGame(
|
||||
getInternalName(activeGame),
|
||||
);
|
||||
|
||||
// First off, check that they've downloaded and have a jak-project release set
|
||||
const activeVersionExists = await ensureActiveVersionStillExists();
|
||||
$VersionStore.activeVersionType = await getActiveVersionFolder();
|
||||
|
@ -73,9 +94,9 @@
|
|||
}
|
||||
|
||||
componentLoaded = true;
|
||||
});
|
||||
}
|
||||
|
||||
async function updateGameState(evt) {
|
||||
async function updateGameState(event) {
|
||||
gameInstalled = await isGameInstalled(getInternalName(activeGame));
|
||||
}
|
||||
|
||||
|
@ -94,6 +115,8 @@
|
|||
<div class="flex flex-col h-full justify-center items-center">
|
||||
<Spinner color="yellow" size={"12"} />
|
||||
</div>
|
||||
{:else if !gameSupportedByTooling}
|
||||
<GameNotSupportedByTooling />
|
||||
{:else if $VersionStore.activeVersionName === null || $VersionStore.activeVersionType === null}
|
||||
<GameToolsNotSet />
|
||||
{:else if !gameInstalled}
|
||||
|
@ -112,6 +135,35 @@
|
|||
on:job={runGameJob}
|
||||
/>
|
||||
{:else}
|
||||
{#if gameInBeta}
|
||||
<Alert color="red" rounded={false} class="border-t-4">
|
||||
<span class="font-bold">{$_("gameControls_beta_headerA")}</span>
|
||||
<em>{$_("gameControls_beta_headerB")}</em>
|
||||
<br />
|
||||
<ul>
|
||||
<li>
|
||||
{$_("gameControls_beta_issueTracker_linkPreText")}
|
||||
<a
|
||||
class="text-blue-400"
|
||||
href="https://github.com/orgs/open-goal/projects/3/views/8?query=is%3Aopen+sort%3Aupdated-desc"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>{$_("gameControls_beta_issueTracker_linkText")}</a
|
||||
>
|
||||
</li>
|
||||
<li>
|
||||
{$_("gameControls_beta_bugReport_linkPreText")}
|
||||
<a
|
||||
class="text-blue-400"
|
||||
href="https://github.com/open-goal/jak-project/issues/new?assignees=&labels=bug%2Cjak2&projects=&template=jak2-bug-report.yml"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>{$_("gameControls_beta_bugReport_linkText")}</a
|
||||
>
|
||||
</li>
|
||||
</ul>
|
||||
</Alert>
|
||||
{/if}
|
||||
<GameControls
|
||||
{activeGame}
|
||||
on:change={updateGameState}
|
||||
|
|
Loading…
Reference in a new issue