diff --git a/bun.lock b/bun.lock
index 159561c..24cad72 100644
--- a/bun.lock
+++ b/bun.lock
@@ -12,6 +12,7 @@
"@tauri-apps/plugin-fs": "2.4.0",
"@tauri-apps/plugin-shell": "2.3.0",
"@tauri-apps/plugin-sql": "2.3.0",
+ "animejs": "^4.0.2",
"ky": "1.8.1",
"lucide-svelte": "0.523.0",
"osu-classes": "3.1.0",
@@ -232,6 +233,8 @@
"acorn": ["acorn@8.15.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="],
+ "animejs": ["animejs@4.0.2", "", {}, "sha512-f0L/kSya2RF23iMSF/VO01pMmLwlAFoiQeNAvBXhEyLzIPd2/QTBRatwGUqkVCC6seaAJYzAkGir55N4SL+h3A=="],
+
"ansi-regex": ["ansi-regex@6.1.0", "", {}, "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA=="],
"ansi-styles": ["ansi-styles@6.2.1", "", {}, "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug=="],
diff --git a/package.json b/package.json
index 5979644..c17589e 100644
--- a/package.json
+++ b/package.json
@@ -24,6 +24,7 @@
"@tauri-apps/plugin-fs": "2.4.0",
"@tauri-apps/plugin-shell": "2.3.0",
"@tauri-apps/plugin-sql": "2.3.0",
+ "animejs": "^4.0.2",
"ky": "1.8.1",
"lucide-svelte": "0.523.0",
"osu-classes": "3.1.0",
diff --git a/src/assets/cursor-additive.png b/src/assets/cursor-additive.png
new file mode 100644
index 0000000..8dcda49
Binary files /dev/null and b/src/assets/cursor-additive.png differ
diff --git a/src/assets/cursor.png b/src/assets/cursor.png
new file mode 100644
index 0000000..f491867
Binary files /dev/null and b/src/assets/cursor.png differ
diff --git a/src/lib/components/ui/checkbox/checkbox.svelte b/src/lib/components/ui/checkbox/checkbox.svelte
new file mode 100644
index 0000000..2395094
--- /dev/null
+++ b/src/lib/components/ui/checkbox/checkbox.svelte
@@ -0,0 +1,35 @@
+
+
+
+ {#snippet children({ checked, indeterminate })}
+
+ {#if indeterminate}
+
+ {:else}
+
+ {/if}
+
+ {/snippet}
+
diff --git a/src/lib/components/ui/checkbox/index.ts b/src/lib/components/ui/checkbox/index.ts
new file mode 100644
index 0000000..6d92d94
--- /dev/null
+++ b/src/lib/components/ui/checkbox/index.ts
@@ -0,0 +1,6 @@
+import Root from "./checkbox.svelte";
+export {
+ Root,
+ //
+ Root as Checkbox,
+};
diff --git a/src/lib/components/ui/label/index.ts b/src/lib/components/ui/label/index.ts
new file mode 100644
index 0000000..8bfca0b
--- /dev/null
+++ b/src/lib/components/ui/label/index.ts
@@ -0,0 +1,7 @@
+import Root from "./label.svelte";
+
+export {
+ Root,
+ //
+ Root as Label,
+};
diff --git a/src/lib/components/ui/label/label.svelte b/src/lib/components/ui/label/label.svelte
new file mode 100644
index 0000000..247d23c
--- /dev/null
+++ b/src/lib/components/ui/label/label.svelte
@@ -0,0 +1,19 @@
+
+
+
diff --git a/src/lib/components/ui/osu-cursor/OsuCursor.svelte b/src/lib/components/ui/osu-cursor/OsuCursor.svelte
new file mode 100644
index 0000000..894523d
--- /dev/null
+++ b/src/lib/components/ui/osu-cursor/OsuCursor.svelte
@@ -0,0 +1,176 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/lib/components/ui/titlebar/titlebar.svelte b/src/lib/components/ui/titlebar/titlebar.svelte
index 8518a31..22ea0ce 100644
--- a/src/lib/components/ui/titlebar/titlebar.svelte
+++ b/src/lib/components/ui/titlebar/titlebar.svelte
@@ -19,7 +19,7 @@
});
-
+
EZPPLauncher
diff --git a/src/lib/global.ts b/src/lib/global.ts
index d6ad204..f9e8066 100644
--- a/src/lib/global.ts
+++ b/src/lib/global.ts
@@ -3,14 +3,11 @@ import { ezppfarm } from './api/ezpp';
export const server_ping = writable
(undefined);
export const server_connection_fails = writable(0);
-export let server_no_connection = false;
export const online_friends = writable(undefined);
export const beatmap_sets = writable(undefined);
-export const updateNoConnection = (noConnection: boolean) => (server_no_connection = noConnection);
-
export const setupValues = () => {
updatePing();
updateFriends();
@@ -26,7 +23,7 @@ export const setupValues = () => {
const updatePing = async () => {
const serverPing = await ezppfarm.ping();
- if (!serverPing || server_no_connection) {
+ if (!serverPing) {
server_connection_fails.update((num) => num + 1);
} else {
server_connection_fails.set(0);
@@ -36,12 +33,8 @@ const updatePing = async () => {
const updateFriends = async () => {
await new Promise((res) => setTimeout(res, Math.random() * 300));
- if (server_no_connection) {
- online_friends.set(undefined);
- } else {
- const onlineFriends = Math.round(Math.random() * 10);
- online_friends.set(onlineFriends);
- }
+ const onlineFriends = Math.round(Math.random() * 10);
+ online_friends.set(onlineFriends);
};
const updateBeatmapSets = async () => {
diff --git a/src/lib/osuUtil.ts b/src/lib/osuUtil.ts
new file mode 100644
index 0000000..fdb59d2
--- /dev/null
+++ b/src/lib/osuUtil.ts
@@ -0,0 +1,3 @@
+export const clientNeedsUpdate = () => {
+
+}
\ No newline at end of file
diff --git a/src/pages/Launch.svelte b/src/pages/Launch.svelte
new file mode 100644
index 0000000..0a1c7cb
--- /dev/null
+++ b/src/pages/Launch.svelte
@@ -0,0 +1,299 @@
+
+
+
+
+
+
+
Launching...
+
+
+
+
Downloading update files...
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Quetzalcoatl
+
+ Owner
+
+
+
+
+
+
+
+ osu!vn
+
+
+
+ osu!vn
+ osu!rx
+ osu!ap
+
+
+
+
+
+ Mode Stats
+
+
+
+ Rank
+ #727
+
+
+ PP
+ 727
+
+
+
+ Accuracy
+ 72.72%
+
+ Play Count
+ 727
+
+ Play Time
+ 727h
+
+
+
+
+
+
+
+ (selectedTab = 'home')}
+ >
+ Home
+
+ (selectedTab = 'settings')}
+ >
+ Settings
+
+
+ {#if selectedTab === 'home'}
+
+
+
+
+
+
+
+
Beatmap Sets imported
+
+
+
+
+ {#if $server_connection_fails > 1}
+
+ {:else}
+
+ {/if}
+
+
+
Ping to Server
+
+
+
{
+ launching = true;
+ setTimeout(() => {
+ launching = false;
+ }, 5000);
+ }}
+ >
+
+ Launch
+
+
+
+
+
+ Client Info
+
+
+ osu! Version
+
+ 20250626.1
+
+
+ Beatmap Sets
+ {numberHumanReadable($beatmap_sets ?? 0)}
+
+ Skins
+ {numberHumanReadable(727)}
+
+
+ {:else if selectedTab === 'settings'}
+
+
EZPPLauncher Settings
+
+
+
Lazer-Style Cursor
+
+ Enable a custom cursor in the Launcher like in the lazer build of osu!
+
+
+
+
+
+
Cursor Smoothening
+
+ Makes the custom cursor movement smoother.
+
+
+
+
+
+ {/if}
+
+
diff --git a/src/pages/Loading.svelte b/src/pages/Loading.svelte
new file mode 100644
index 0000000..9f57cf6
--- /dev/null
+++ b/src/pages/Loading.svelte
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/SetupWizard.svelte b/src/pages/SetupWizard.svelte
new file mode 100644
index 0000000..9139a35
--- /dev/null
+++ b/src/pages/SetupWizard.svelte
@@ -0,0 +1,65 @@
+
+
+
+
+ {#each steps as step, i (step)}
+
+ {/each}
+
+
+
+ {#if selectedStep === 1}
+
Welcome to EZPPLauncher!
+
+ {/if}
+
+
+ (selectedStep = Math.max(selectedStep - 1, 1))}
+ disabled={selectedStep <= 1}>Previous
+ (selectedStep = Math.min(selectedStep + 1, steps.length))}
+ disabled={selectedStep >= steps.length}>Next
+
+
+
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte
index 852b234..3bc4713 100644
--- a/src/routes/+layout.svelte
+++ b/src/routes/+layout.svelte
@@ -3,11 +3,14 @@
import '../app.css';
import { setupValues } from '@/global';
import { onMount } from 'svelte';
+ import OsuCursor from '@/components/ui/osu-cursor/OsuCursor.svelte';
let { children } = $props();
onMount(setupValues);
+
+
{@render children()}
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte
index ce5858f..e3eaf31 100644
--- a/src/routes/+page.svelte
+++ b/src/routes/+page.svelte
@@ -1,271 +1,7 @@
-
-
-
-
-
Downloading update files...
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Quetzalcoatl
-
- Owner
-
-
-
-
-
-
-
- osu!vn
-
-
-
- osu!vn
- osu!rx
- osu!ap
-
-
-
-
-
- Mode Stats
-
-
-
- Rank
- #727
-
-
- PP
- 727
-
-
-
- Accuracy
- 72.72%
-
- Play Count
- 727
-
- Play Time
- 727h
-
-
-
-
-
-
- Friends
-
-
3 online
-
-
-
-
-
-
- (selectedTab = 'home')}
- >
- Home
-
- (selectedTab = 'settings')}
- >
- Settings
-
-
-
-
-
-
-
-
-
-
Beatmap Sets imported
-
-
-
- {#if $server_connection_fails > 1}
-
- {:else}
-
- {/if}
-
-
-
Friends online
-
-
-
- {#if $server_connection_fails > 1}
-
- {:else}
-
- {/if}
-
-
-
Ping to Server
-
-
-
{
- launching = true;
- setTimeout(() => {
- launching = false;
- }, 5000);
- }}
- >
-
- Launch
-
- {#key server_no_connection}
-
{
- updateNoConnection(!server_no_connection);
- }}
- >
-
- Connection test
-
- {/key}
-
-
-
-
- Client Info
-
-
- osu! Version
-
- 20250626.1
-
-
- Beatmap Sets
- {numberHumanReadable($beatmap_sets ?? 0)}
-
- Skins
- {numberHumanReadable(727)}
-
-
-
-
+
\ No newline at end of file