feat: skryté multiplayerové minihry přes websocket
CI / Generate TypeScript types (push) Canceled after 7s
CI / Server unit tests (push) Canceled after 0s
CI / Build server (push) Canceled after 0s
CI / Build client (push) Canceled after 0s
CI / Playwright E2E tests (push) Canceled after 0s
CI / Build and push Docker image (push) Canceled after 0s
CI / Notify (push) Canceled after 0s
CI / Generate TypeScript types (push) Canceled after 7s
CI / Server unit tests (push) Canceled after 0s
CI / Build server (push) Canceled after 0s
CI / Build client (push) Canceled after 0s
CI / Playwright E2E tests (push) Canceled after 0s
CI / Build and push Docker image (push) Canceled after 0s
CI / Notify (push) Canceled after 0s
Minihry se otevírají trojklikem na logo a napsáním kódu hry
("help" vypíše seznam do konzole prohlížeče):
- reakce: reakční hra, 3 kola, pořadí podle součtu časů
- snake: had pro více hráčů, simulaci drží server
- tetris: battle Tetris s odpadními řádky a lokálním tréninkem
- pong: Pong 1v1, ovládání myší i klávesami, bot se 4 obtížnostmi
- kresleni: kreslení a hádání jídel z dnešních menu
Ikony her se řídí zvoleným vzhledem. Stav her je v paměti serveru,
předpokládá se jedna replika.
This commit is contained in:
28 files changed
+5050
-2
No files matched your search
@@ -0,0 +1,29 @@
|
||||
import { StyleTheme, useSettings } from "../context/settings";
|
||||
|
||||
export type GameId = 'reaction' | 'snake' | 'tetris' | 'pong' | 'drawing';
|
||||
|
||||
/** Ikony miniher podle vizuálního stylu aplikace. */
|
||||
const ICONS: Record<StyleTheme, Record<GameId, string>> = {
|
||||
simple: { reaction: '⚡', snake: '🐍', tetris: '🧱', pong: '🏓', drawing: '🎨' },
|
||||
// Dostihy: startovní vlajka, kůň místo hada, mrkve jako kostky, žokej, trofej
|
||||
umamusume: { reaction: '🏁', snake: '🐎', tetris: '🥕', pong: '🏇', drawing: '🏆' },
|
||||
// Duha, jednorožec, drahokamy, balónky a paleta
|
||||
mlp: { reaction: '🌈', snake: '🦄', tetris: '💎', pong: '🎈', drawing: '🖌️' },
|
||||
// Pekelná korespondence: plamen, rudá nit, lampion, slaměná panenka, svitek
|
||||
hellgirl: { reaction: '🔥', snake: '🪢', tetris: '🏮', pong: '🪆', drawing: '📜' },
|
||||
};
|
||||
|
||||
/** Styl z <html data-luncher-theme> — pro místa mimo React kontext nastavení. */
|
||||
function currentTheme(): StyleTheme {
|
||||
const theme = document.documentElement.getAttribute('data-luncher-theme') as StyleTheme | null;
|
||||
return theme && theme in ICONS ? theme : 'simple';
|
||||
}
|
||||
|
||||
/** Ikona hry pro aktuální styl (mimo React, např. výpis do konzole). */
|
||||
export const gameIcon = (game: GameId, theme: StyleTheme = currentTheme()) => ICONS[theme]?.[game] ?? ICONS.simple[game];
|
||||
|
||||
/** Ikona hry pro aktuální styl; stránky bez nastavení (statistiky) použijí atribut na <html>. */
|
||||
export function useGameIcon(game: GameId) {
|
||||
const settings = useSettings();
|
||||
return gameIcon(game, settings?.styleTheme ?? currentTheme());
|
||||
}
|
||||
Reference in new issue
Block a user