aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lib/APITypes.d.ts5
-rw-r--r--src/lib/profile.ts11
-rw-r--r--src/routes/player/[player]/index.svelte16
3 files changed, 28 insertions, 4 deletions
diff --git a/src/lib/APITypes.d.ts b/src/lib/APITypes.d.ts
index bb0cd25..65e70f3 100644
--- a/src/lib/APITypes.d.ts
+++ b/src/lib/APITypes.d.ts
@@ -111,7 +111,8 @@ export interface CleanUser {
}
export interface CleanProfile extends CleanBasicProfile {
- members?: CleanBasicMember[]
+ members: CleanBasicMember[]
+ mode: GameMode
}
/** A basic profile that only includes the profile uuid and name */
@@ -346,3 +347,5 @@ export interface CoopInvitation {
accepted: boolean
acceptedTimestamp: number | null
}
+
+export type GameMode = 'normal' | 'stranded' | 'bingo' | 'ironman'
diff --git a/src/lib/profile.ts b/src/lib/profile.ts
index ceeac77..106e261 100644
--- a/src/lib/profile.ts
+++ b/src/lib/profile.ts
@@ -11,12 +11,23 @@ export function prettyTimestamp(ms: number) {
return timeAsString
}
+export const MODE_EMOJIS = {
+ ironman: '♻️',
+ stranded: '🏝️'
+}
+export const DEFAULT_MODE_EMOJI = '❓'
+
export function generateInfobox(data: CleanMemberProfile): string[] {
const result: string[] = []
if (data.member.left)
result.push(`🚪 Removed from profile`)
+ if (data.profile.mode !== 'normal') {
+ const modeEmoji = MODE_EMOJIS[data.profile.mode] ?? DEFAULT_MODE_EMOJI
+ result.push(`${modeEmoji} Mode: ${cleanId(data.profile.mode)}`)
+ }
+
if (data.member.lastSave)
result.push(`💾 Last save: ${prettyTimestamp(data.member.lastSave)}`)
diff --git a/src/routes/player/[player]/index.svelte b/src/routes/player/[player]/index.svelte
index 7964af1..c33d43f 100644
--- a/src/routes/player/[player]/index.svelte
+++ b/src/routes/player/[player]/index.svelte
@@ -36,6 +36,10 @@
import Header from '$lib/Header.svelte'
import Head from '$lib/Head.svelte'
import { chooseDefaultBackground } from '$lib/backgrounds'
+ import Emoji from '$lib/Emoji.svelte'
+ import { MODE_EMOJIS, DEFAULT_MODE_EMOJI } from '$lib/profile'
+ import Tooltip from '$lib/Tooltip.svelte'
+ import { cleanId } from '$lib/utils'
export let data: CleanUser & { player: CleanPlayer }
@@ -93,6 +97,14 @@
>
{profile.name}
</a>
+ {#if profile.mode !== 'normal'}
+ <Tooltip>
+ <span slot="tooltip">
+ {cleanId(profile.mode)} mode
+ </span>
+ <Emoji value={MODE_EMOJIS[profile.mode] ?? DEFAULT_MODE_EMOJI} />
+ </Tooltip>
+ {/if}
<span class="profile-members">
{#if (profile.members?.length ?? 0) > 1}
{#each profile.members?.filter(m => !m.left) ?? [] as player}
@@ -119,10 +131,8 @@
</main>
<style>
- .profile-name {
- margin-right: 0.5em;
- }
.profile-members {
+ margin-left: 0.5em;
color: var(--theme-main-text);
}
.profile-members > .member {