ruben 2 years ago
parent a62dca55e8
commit 02940b332a

@ -1,12 +1,12 @@
<script lang="ts"> <script lang="ts">
import { SvelteUIProvider, Container, NativeSelect, Text, Switch, Button, Center, Title } from '@svelteuidev/core'; import { SvelteUIProvider, Modal, NativeSelect, Text, Switch, Button, Center, Title } from '@svelteuidev/core';
import FaMoon from 'svelte-icons/fa/FaMoon.svelte' import FaMoon from 'svelte-icons/fa/FaMoon.svelte'
import FaSun from 'svelte-icons/fa/FaSun.svelte' import FaSun from 'svelte-icons/fa/FaSun.svelte'
import { page } from '$app/stores'; import { page } from '$app/stores';
import type {PageData } from './$types'; import type {PageData } from './$types';
import { onMount } from 'svelte'; import { onMount } from 'svelte';
export let data: PageData; export let data: PageData;
let isDark = false; let isDark = true;
function toggleTheme() { function toggleTheme() {
isDark = !isDark; isDark = !isDark;
} }
@ -15,20 +15,21 @@
let selectedOpName: any = null; let selectedOpName: any = null;
let guesses: any = []; let guesses: any = [];
let options = data.operators.map((operator) => ({ let options = data.operators.map((operator) => ({
label: operator.name, label: operator.name,
value: operator.name, value: operator.name,
})); }));
let finished = false;
</script> </script>
<SvelteUIProvider withGlobalStyles themeObserver={isDark ? 'dark' : 'light'}> <SvelteUIProvider withGlobalStyles themeObserver={isDark ? 'dark' : 'light'}>
<div style="display: flex; justify-content: flex-end; width:100%;"> <div style="display: flex; justify-content: flex-end; width:100%;">
<div style="width: 1.5rem; height: 1.5rem;"> <div style="width: 1.5rem; height: 1.5rem;">
<FaSun/> <FaMoon/>
</div> </div>
<div style="margin-right: 0.5rem; margin-left: 0.5rem;"> <div style="margin-right: 0.5rem; margin-left: 0.5rem;">
<Switch on:change={toggleTheme}/> <Switch on:change={toggleTheme}/>
</div> </div>
<div style="width: 1.5rem; height: 1.5rem;"> <div style="width: 1.5rem; height: 1.5rem;">
<FaMoon/> <FaSun/>
</div> </div>
</div> </div>
<Center override={{margin: '5rem'}}> <Center override={{margin: '5rem'}}>
@ -56,6 +57,7 @@
minWidth: '8rem', minWidth: '8rem',
}} }}
description='Select an operator' description='Select an operator'
disabled={finished}
/> />
</div> </div>
<Button <Button
@ -64,34 +66,48 @@
maxWidth: '20rem', maxWidth: '20rem',
minWidth: '10rem', minWidth: '10rem',
}} }}
disabled={finished}
on:click={() => { on:click={() => {
if(!selectedOp) return; if(!selectedOp) return;
guesses = guesses.concat([selectedOp]); guesses = guesses.concat([selectedOp]);
options = options.filter((option) => option.value !== selectedOpName); options = options.filter((option) => option.value !== selectedOpName);
if (selectedOp.name === data.selectedOperator.name) {
finished = true;
}
selectedOp = null; selectedOp = null;
selectedOpName = null; selectedOpName = null;
}} }}
> >
Guess Guess
</Button> </Button>
<div> <div style="display: flex; flex-direction: column; gap: 0.5rem;" >
{#each guesses as guess } {#each guesses as guess }
<div style="display: flex; flex-direction: row;"> <div style="display: flex; flex-direction: row; gap: 0.5rem;">
{#if guess.name === data.selectedOperator.name} {#if guess.name === data.selectedOperator.name}
<div style="height: full; display: flex; align-items: center;"><Text override={{color: 'red', fontWeight: 'bold'}}>Correct!</Text></div> <div style="height: full; display: flex; align-items: center; min-width: 4rem;"><Text override={{ fontWeight: 'bold'}}>Correct!</Text></div>
{:else} {:else}
<div style="height: full; display: flex; align-items: center;"><Text override={{color: 'red', fontWeight: 'bold'}}>Wrong!</Text></div> <div style="height: full; display: flex; align-items: center; min-width: 4rem;"><Text override={{ fontWeight: 'bold'}}>Wrong!</Text></div>
{/if} {/if}
<img src={guess.image} alt="operator_image" style="width: 4rem; height: 4rem;" /> <img src={guess.image} alt="operator_image" style="width: 4rem; height: 4rem;" />
<Center override={{bc: guess.gender == data.selectedOperator.gender ? 'green' : 'red', padding: '1rem', minW: '4rem'}}> <Center override={{bc: guess.gender == data.selectedOperator.gender ? 'green' : 'red', padding: '1rem', minW: '3.5rem', borderRadius: '1rem'}}>
<Text override={{fontWeight: 'bold'}}>{['male', 'female', 'divers'][guess.gender]}</Text> <Text override={{fontWeight: 'bold'}}>{['male', 'female', 'divers'][guess.gender]}</Text>
</Center> </Center>
<Center override={{bc: guess.gender == data.selectedOperator.gender ? 'green' : 'red', padding: '1rem', minW: '4rem'}}> <Center override={{bc: guess.gender == data.selectedOperator.gender ? 'green' : 'red', padding: '1rem', minW: '2rem', borderRadius: '1rem'}}>
<img src={guess.side} alt='side' style="width: 2rem; height: 2rem;" /> <img src={guess.side} alt='side' style="width: 2rem; height: 2rem;" />
</Center> </Center>
<Center override={{bc: guess.speed == data.selectedOperator.speed ? 'green' : 'red', padding: '1rem', minW: '4rem', borderRadius: '1rem'}}>
<Text>{guess.speed} Speed</Text>
</Center>
<Center override={{bc: guess.squad == data.selectedOperator.squad ? 'green' : 'red', padding: '1rem', minW: '5rem', borderRadius: '1rem'}}>
<Text>{['Rainbow','Nighthaven','Wolfguard','Ghosteyes'][guess.squad]}</Text>
</Center>
</div> </div>
{/each} {/each}
</div> </div>
</div> </div>
</Center> </Center>
<Modal centered opened={finished} withCloseButton={false} >
<img src={data.selectedOperator.image} alt="operator_image" style="width: 4rem; height: 4rem;" />
<Text>{data.selectedOperator.name} is Correct!</Text><Text>It took you {guesses.length} {guesses.length == 1 ? 'guess' : 'guesses'} to find the correct operator.</Text>
</Modal>
</SvelteUIProvider> </SvelteUIProvider>
Loading…
Cancel
Save