feat: show the launchers' own logos when importing
This commit is contained in:
1 parent
b62b471da2
commit
daedc88f2d
2 files changed
+29
-12
No files matched your search
@@ -186,7 +186,6 @@ Importing instances offers every launcher the importers read — Prism Launcher,
|
||||
ATLauncher, GDLauncher and CurseForge — whether they are installed or not, each with the folder it
|
||||
keeps its instances in on this system, Flatpak and macOS bundles included, and each with its own
|
||||
logo. Upstream listed only the launchers it found, and left the rest to a path typed in by hand.
|
||||
MultiMC keeps a plain badge instead: its branding may not be passed on.
|
||||
|
||||
A running instance can be started again from the button next to Stop, as whichever account is
|
||||
selected, and the Logs tab then shows a console for each copy.
|
||||
|
||||
@@ -28,15 +28,17 @@ else's logo around.
|
||||
packages/ui/src/assets/launchers/README.md | 16 ++
|
||||
.../ui/src/assets/launchers/atlauncher.svg | 1 +
|
||||
.../ui/src/assets/launchers/gdlauncher.png | Bin 0 -> 7218 bytes
|
||||
packages/ui/src/assets/launchers/multimc.svg | 1 +
|
||||
packages/ui/src/assets/launchers/polymc.svg | 21 +++
|
||||
.../src/assets/launchers/prism-launcher.svg | 57 +++++++
|
||||
.../components/ImportInstanceStage.vue | 109 ++++++++++++-
|
||||
.../components/LauncherMark.vue | 47 ++++++
|
||||
.../components/LauncherMark.vue | 55 +++++++
|
||||
packages/ui/src/providers/instance-import.ts | 14 ++
|
||||
14 files changed, 417 insertions(+), 42 deletions(-)
|
||||
15 files changed, 426 insertions(+), 42 deletions(-)
|
||||
create mode 100644 packages/ui/src/assets/launchers/README.md
|
||||
create mode 100644 packages/ui/src/assets/launchers/atlauncher.svg
|
||||
create mode 100644 packages/ui/src/assets/launchers/gdlauncher.png
|
||||
create mode 100644 packages/ui/src/assets/launchers/multimc.svg
|
||||
create mode 100644 packages/ui/src/assets/launchers/polymc.svg
|
||||
create mode 100644 packages/ui/src/assets/launchers/prism-launcher.svg
|
||||
create mode 100644 packages/ui/src/components/flows/creation-flow-modal/components/LauncherMark.vue
|
||||
@@ -341,7 +343,7 @@ index 72f315d..15da6da 100644
|
||||
/// Checks if this PathBuf is a valid instance for the given launcher type
|
||||
diff --git a/packages/ui/src/assets/launchers/README.md b/packages/ui/src/assets/launchers/README.md
|
||||
new file mode 100644
|
||||
index 0000000..33a2c0a
|
||||
index 0000000..4c7d7a6
|
||||
--- /dev/null
|
||||
+++ b/packages/ui/src/assets/launchers/README.md
|
||||
@@ -0,0 +1,16 @@
|
||||
@@ -356,11 +358,11 @@ index 0000000..33a2c0a
|
||||
+| `polymc.svg` | [PolyMC/PolyMC](https://github.com/PolyMC/PolyMC), `program_info` | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/), unchanged |
|
||||
+| `atlauncher.svg` | [ATLauncher/ATLauncher](https://github.com/ATLauncher/ATLauncher), `packaging/linux` | GPL-3.0, unchanged |
|
||||
+| `gdlauncher.png` | [gorilla-devs/GDLauncher](https://github.com/gorilla-devs/GDLauncher), `public/icon.png` | GPL-3.0, scaled down to 128×128 |
|
||||
+| `multimc.svg` | [MultiMC/Launcher](https://github.com/MultiMC/Launcher), `branding` | No licence given; shown to name the launcher, optimised with svgo |
|
||||
+
|
||||
+CurseForge's logo is the one Modrinth already ships in `@modrinth/assets`.
|
||||
+
|
||||
+MultiMC has none here: its name and logo may not be redistributed, so it keeps a plain badge with
|
||||
+its initials.
|
||||
+A launcher without a logo here falls back to a badge with its initials.
|
||||
diff --git a/packages/ui/src/assets/launchers/atlauncher.svg b/packages/ui/src/assets/launchers/atlauncher.svg
|
||||
new file mode 100644
|
||||
index 0000000..5dd0000
|
||||
@@ -524,6 +526,14 @@ LS3j3^P6<r_Bp?1#
|
||||
literal 0
|
||||
HcmV?d00001
|
||||
|
||||
diff --git a/packages/ui/src/assets/launchers/multimc.svg b/packages/ui/src/assets/launchers/multimc.svg
|
||||
new file mode 100644
|
||||
index 0000000..0c072ef
|
||||
--- /dev/null
|
||||
+++ b/packages/ui/src/assets/launchers/multimc.svg
|
||||
@@ -0,0 +1 @@
|
||||
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="68.267" height="68.267"><defs><linearGradient id="g"><stop offset="0" style="stop-color:#98c867;stop-opacity:1"/><stop offset="1" style="stop-color:#5c9a33;stop-opacity:1"/></linearGradient><linearGradient id="a"><stop offset="0" style="stop-color:#75b54b;stop-opacity:1"/><stop offset="1" style="stop-color:#75b54b;stop-opacity:.6"/></linearGradient><linearGradient id="b"><stop offset="0" style="stop-color:#000;stop-opacity:.8"/><stop offset="1" style="stop-color:#000;stop-opacity:.35"/></linearGradient><linearGradient xlink:href="#a" id="n" x1="6.734" x2="50.507" y1="28.511" y2="61.774" gradientTransform="matrix(1.26715 0 0 .8979 -.02 -.008)" gradientUnits="userSpaceOnUse"/><linearGradient xlink:href="#b" id="m" x1="14.312" x2="44.097" y1="9.795" y2="82.973" gradientTransform="scale(1.26715 .8979)" gradientUnits="userSpaceOnUse"/><linearGradient id="d"><stop offset="0" style="stop-color:#000;stop-opacity:.0627451"/><stop offset="1" style="stop-color:#322217;stop-opacity:.58823532"/></linearGradient><linearGradient id="f"><stop offset="0" style="stop-color:#a3704b;stop-opacity:1"/><stop offset="1" style="stop-color:#6a4a33;stop-opacity:1"/></linearGradient><linearGradient id="c"><stop offset="0" style="stop-color:#966c4a;stop-opacity:1"/><stop offset="1" style="stop-color:#593d29;stop-opacity:1"/></linearGradient><linearGradient xlink:href="#c" id="h" x1="36.546" x2="86.416" y1="33.805" y2="97.066" gradientUnits="userSpaceOnUse"/><linearGradient xlink:href="#d" id="k" x1="29.867" x2="38.4" y1="29.868" y2="38.401" gradientTransform="translate(-.001)" gradientUnits="userSpaceOnUse"/><linearGradient xlink:href="#b" id="l" x1="14.312" x2="44.097" y1="9.795" y2="82.973" gradientTransform="matrix(1.26715 0 0 .8979 -.829 -1.001)" gradientUnits="userSpaceOnUse"/><radialGradient xlink:href="#f" id="i" cx="34.133" cy="34.133" r="29.867" fx="34.133" fy="34.133" gradientTransform="translate(0 -.001)" gradientUnits="userSpaceOnUse"/><radialGradient xlink:href="#g" id="j" cx="-42.668" cy="-34.134" r="34.133" fx="-42.668" fy="-34.134" gradientTransform="matrix(1.75003 .125 -.01781 .24936 95.394 18.11)" gradientUnits="userSpaceOnUse"/></defs><g transform="translate(0 .001)"><rect width="68.267" height="68.267" rx="8.533" ry="8.533" style="fill:url(#h);fill-opacity:1;stroke:none;stroke-width:17.06666756"/><rect width="59.733" height="59.733" x="4.266" y="4.266" rx="4.267" ry="4.267" style="fill:url(#i);fill-opacity:1;stroke:none;stroke-width:14.93333435"/><path d="m4.267 4.265-.001 8.533h4.268v4.267h8.533v4.266h4.265V8.532H25.6v8.533h4.266v-4.267h4.267v8.533H38.4v-4.266h4.267v4.266h4.268v-4.266H51.2v-4.267h4.267v4.267H64v-12.8z" style="opacity:.6;fill:#593d29;fill-opacity:1;stroke:none;stroke-width:17.06666756"/><path d="M8.533-.002A8.514 8.514 0 0 0 0 8.531V12.8h4.265V8.531h4.268V12.8h8.533v4.266h4.266v-12.8h4.267v8.533h4.266V8.531h4.268v8.534h4.265v-4.266h4.268v4.266h4.267v-4.266H51.2V8.531h4.268V12.8H64V8.531h4.265a8.514 8.514 0 0 0-8.533-8.533zm-3.02 5.514" style="fill:url(#j);fill-opacity:1;stroke:none;stroke-width:17.06666756"/><path d="M8.532 0A8.514 8.514 0 0 0 0 8.531v51.2a8.516 8.516 0 0 0 8.533 8.535h51.2a8.516 8.516 0 0 0 8.533-8.535v-51.2A8.514 8.514 0 0 0 59.732 0zm0 4.267h51.2a4.257 4.257 0 0 1 4.267 4.265v51.2a4.26 4.26 0 0 1-4.267 4.267h-51.2a4.26 4.26 0 0 1-4.267-4.267v-51.2a4.257 4.257 0 0 1 4.267-4.265" style="opacity:1;fill:url(#k);fill-opacity:1;stroke:none;stroke-width:17.06666756"/></g><path d="M38.887 44.94q-1.462-1.2-3.772-4.008-3.157 4.009-5.94 5.78-3.488 2.136-8.909 2.137-6.363 0-10.56-3.374-4.43-3.54-4.43-9.386 0-5.611 4.43-9.42 3.96-3.374 10.655-3.374 3.442 0 5.986 1.002 2.97 1.102 4.997 3.007 1.885 1.704 3.771 4.008 3.159-4.008 5.94-5.779 3.489-2.137 8.91-2.137 6.363 0 10.56 3.373 4.43 3.54 4.43 9.387 0 5.61-4.43 9.42-3.96 3.373-10.655 3.373-3.442 0-5.986-1.002-2.546-.901-4.997-3.006m-19.14-.468q7.779 0 12.446-8.017-5.988-8.751-12.445-8.751-4.715 0-7.119 2.405-2.592 2.572-2.592 5.979 0 3.741 2.592 6.046 2.64 2.338 7.119 2.338m30.735-16.702q-7.023 0-12.445 8.017 5.94 8.752 12.445 8.752 4.715 0 7.118-2.405 2.593-2.572 2.593-5.98 0-3.74-2.593-6.045-2.64-2.34-7.118-2.339" style="font-style:normal;font-variant:normal;font-weight:400;font-stretch:normal;font-size:76.18933868px;line-height:125%;font-family:"DejaVu Sans";-inkscape-font-specification:"DejaVu Sans";letter-spacing:0;word-spacing:0;fill:url(#l);fill-opacity:1;stroke:none;stroke-width:1.06666672;opacity:.5"/><path d="M39.715 45.942q-1.461-1.203-3.77-4.008-3.16 4.008-5.94 5.779-3.489 2.137-8.91 2.137-6.364 0-10.56-3.373-4.43-3.54-4.43-9.387 0-5.61 4.43-9.42 3.96-3.373 10.654-3.373 3.441 0 5.987 1.002 2.97 1.103 4.997 3.006 1.886 1.704 3.771 4.009 3.159-4.009 5.94-5.78 3.488-2.137 8.91-2.137 6.363 0 10.559 3.374 4.43 3.54 4.43 9.386 0 5.611-4.43 9.42-3.96 3.374-10.654 3.374-3.441 0-5.987-1.003-2.546-.9-4.997-3.006m-19.139-.467q7.779
Line truncated
|
||||
\ No newline at end of file
|
||||
diff --git a/packages/ui/src/assets/launchers/polymc.svg b/packages/ui/src/assets/launchers/polymc.svg
|
||||
new file mode 100644
|
||||
index 0000000..c192d50
|
||||
@@ -796,16 +806,22 @@ index a4dfcdb..5384d29 100644
|
||||
type: 'error',
|
||||
diff --git a/packages/ui/src/components/flows/creation-flow-modal/components/LauncherMark.vue b/packages/ui/src/components/flows/creation-flow-modal/components/LauncherMark.vue
|
||||
new file mode 100644
|
||||
index 0000000..ead64f1
|
||||
index 0000000..aa1b97d
|
||||
--- /dev/null
|
||||
+++ b/packages/ui/src/components/flows/creation-flow-modal/components/LauncherMark.vue
|
||||
@@ -0,0 +1,47 @@
|
||||
@@ -0,0 +1,55 @@
|
||||
+<!--
|
||||
+ A launcher's own logo, or its initials in a badge where the launcher does not
|
||||
+ let its logo be passed on. See src/assets/launchers/README.md.
|
||||
+ A launcher's own logo, or its initials in a badge for one we have none of.
|
||||
+ See src/assets/launchers/README.md.
|
||||
+-->
|
||||
+<template>
|
||||
+ <CurseForgeIcon v-if="name === 'CurseForge'" class="size-8 shrink-0 text-contrast" />
|
||||
+ <!-- CurseForge's is a wide mark rather than a square icon, so it gets a badge. -->
|
||||
+ <span
|
||||
+ v-if="name === 'CurseForge'"
|
||||
+ class="flex size-8 shrink-0 items-center justify-center rounded-lg bg-surface-4"
|
||||
+ >
|
||||
+ <CurseForgeIcon class="size-5 text-contrast" />
|
||||
+ </span>
|
||||
+ <img v-else-if="logo" :src="logo" :alt="''" class="size-8 shrink-0 rounded-lg" />
|
||||
+ <span
|
||||
+ v-else
|
||||
@@ -824,6 +840,7 @@ index 0000000..ead64f1
|
||||
+// and all, rather than an icon that takes the colour around it.
|
||||
+import atlauncher from '../../../../assets/launchers/atlauncher.svg?url'
|
||||
+import gdlauncher from '../../../../assets/launchers/gdlauncher.png'
|
||||
+import multimc from '../../../../assets/launchers/multimc.svg?url'
|
||||
+import polymc from '../../../../assets/launchers/polymc.svg?url'
|
||||
+import prismLauncher from '../../../../assets/launchers/prism-launcher.svg?url'
|
||||
+
|
||||
@@ -831,6 +848,7 @@ index 0000000..ead64f1
|
||||
+
|
||||
+const LOGOS: Record<string, string> = {
|
||||
+ 'Prism Launcher': prismLauncher,
|
||||
+ MultiMC: multimc,
|
||||
+ PolyMC: polymc,
|
||||
+ ATLauncher: atlauncher,
|
||||
+ GDLauncher: gdlauncher,
|
||||
@@ -838,7 +856,7 @@ index 0000000..ead64f1
|
||||
+
|
||||
+const logo = computed(() => LOGOS[props.name])
|
||||
+
|
||||
+// MultiMC gives MM, Custom (foo) gives C.
|
||||
+// Custom (foo) gives C, MultiMC would give MM.
|
||||
+const mark = computed(
|
||||
+ () =>
|
||||
+ props.name
|
||||
|
||||
Reference in new issue
Block a user