an-anime-game-launcher/src/splash.svelte
Observer KRypt0n_ ffa1e4aaff
Wayland windows sizing
- improved `Window` class. Added:
  + `Window.isWayland()` to check if the system runs under wayland
  + `Window.upscaleSize()` to fix sizing of the window if the system uses wayland
- removed ability to resize windows (mistakenly added in the prev commit)
2022-01-08 17:55:17 +02:00

73 lines
1.9 KiB
Svelte

<script context="module" lang="ts">
declare const Neutralino;
</script>
<script lang="ts">
import { onMount } from 'svelte';
import { _, locale } from 'svelte-i18n';
import Configs from './ts/Configs';
import IPC from './ts/core/IPC';
import Window from './ts/neutralino/Window';
import Splash from './assets/gifs/running-qiqi.gif';
import SplashSecret from './assets/gifs/loading-marie-please.gif';
const splash = Math.round(Math.random() * 100) < 100 ? Splash : SplashSecret;
let phrase = Math.round(Math.random() * 2);
onMount(() => {
Window.current.show();
Window.current.setSize({
width: 300,
height: 400,
resizable: false
});
Window.current.center(300, 400);
});
const isLauncherLoaded = () => {
IPC.read().then(async (records) => {
const launcherLoaded = records.filter((record) => record.data === 'launcher-loaded');
if (launcherLoaded.length > 0)
{
for (const record of launcherLoaded)
await record.pop();
Window.current.hide();
Neutralino.app.exit();
}
else setTimeout(isLauncherLoaded, 500);
});
};
Neutralino.events.on('ready', () => isLauncherLoaded());
Neutralino.events.on('windowClose', () => {
Neutralino.app.exit();
});
// Auto theme switcher
Configs.get('theme').then((theme) => {
if (theme === 'system')
theme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
document.body.setAttribute('data-theme', theme as string);
});
</script>
{#if typeof $locale === 'string'}
<main>
<img src={splash} alt="" />
<h2>{$_('splash.title')}</h2>
<p>{$_(`splash.phrases.${phrase}`)}</p>
</main>
{/if}