From 5238a9de4e2e2b822db77e487db988df2df1b61f Mon Sep 17 00:00:00 2001 From: /home/neo <158327205+neoapps-dev@users.noreply.github.com> Date: Sat, 4 Jul 2026 14:17:51 +0300 Subject: [PATCH] feat(hooks/useGameManager): Moon Edition panorama (#113) --- .../moonedition_Panorama_Background_Day.png | Bin 0 -> 10310 bytes .../moonedition_Panorama_Background_Night.png | Bin 0 -> 10310 bytes src/hooks/useGameManager.ts | 44 +++++++++++------- 3 files changed, 26 insertions(+), 18 deletions(-) create mode 100644 public/panorama/moonedition_Panorama_Background_Day.png create mode 100644 public/panorama/moonedition_Panorama_Background_Night.png diff --git a/public/panorama/moonedition_Panorama_Background_Day.png b/public/panorama/moonedition_Panorama_Background_Day.png new file mode 100644 index 0000000000000000000000000000000000000000..329a008b999aabe95f36dbe47190c3ccb7a4ca27 GIT binary patch literal 10310 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 Z$=>OI=h2TcpZh1CytFc;Qqnm1{{Y3#8hZc$ literal 0 HcmV?d00001 diff --git a/public/panorama/moonedition_Panorama_Background_Night.png b/public/panorama/moonedition_Panorama_Background_Night.png new file mode 100644 index 0000000000000000000000000000000000000000..329a008b999aabe95f36dbe47190c3ccb7a4ca27 GIT binary patch literal 10310 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 Z$=>OI=h2TcpZh1CytFc;Qqnm1{{Y3#8hZc$ literal 0 HcmV?d00001 diff --git a/src/hooks/useGameManager.ts b/src/hooks/useGameManager.ts index 2236caa..fd38f41 100644 --- a/src/hooks/useGameManager.ts +++ b/src/hooks/useGameManager.ts @@ -75,7 +75,7 @@ const BASE_EDITIONS = [ titleImage: "/images/minecraft_title_moon.png", supportsSlimSkins: false, logo: "/images/moonEdition.png", - panorama: "vanilla_tu19", + panorama: "moonedition", }, ]; @@ -132,7 +132,9 @@ export function useGameManager({ }: GameManagerProps) { const [installs, setInstalls] = useState([]); const [isGameRunning, setIsGameRunning] = useState(false); - const [downloadProgress, setDownloadProgress] = useState>({}); + const [downloadProgress, setDownloadProgress] = useState< + Record + >({}); const [downloadingIds, setDownloadingIds] = useState([]); const [isRunnerDownloading, setIsRunnerDownloading] = useState(false); const [runnerDownloadProgress, setRunnerDownloadProgress] = useState< @@ -360,7 +362,10 @@ export function useGameManager({ useEffect(() => { checkInstalls(); const unlistenDownload = TauriService.onDownloadProgress((data) => - setDownloadProgress((prev) => ({ ...prev, [data.instanceId]: data.percent })), + setDownloadProgress((prev) => ({ + ...prev, + [data.instanceId]: data.percent, + })), ); const unlistenRunner = TauriService.onRunnerDownloadProgress((p) => setRunnerDownloadProgress(p), @@ -451,21 +456,24 @@ export function useGameManager({ [checkInstalls], ); - const handleCancelDownload = useCallback(async (id: string) => { - try { - await TauriService.cancelDownload(id); - await TauriService.deleteInstance(id); - setDownloadProgress((prev) => { - const next = { ...prev }; - delete next[id]; - return next; - }); - setDownloadingIds((prev) => prev.filter((did) => did !== id)); - await checkInstalls(); - } catch (e) { - console.error(e); - } - }, [checkInstalls]); + const handleCancelDownload = useCallback( + async (id: string) => { + try { + await TauriService.cancelDownload(id); + await TauriService.deleteInstance(id); + setDownloadProgress((prev) => { + const next = { ...prev }; + delete next[id]; + return next; + }); + setDownloadingIds((prev) => prev.filter((did) => did !== id)); + await checkInstalls(); + } catch (e) { + console.error(e); + } + }, + [checkInstalls], + ); const handleLaunch = useCallback(async () => { if (isGameRunning) return;