@hypersocial/cli-games 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,695 @@
1
+ import * as _xterm_xterm from '@xterm/xterm';
2
+ import { Terminal } from '@xterm/xterm';
3
+ import { PhosphorMode } from './themes.js';
4
+
5
+ /**
6
+ * Shared utilities for games
7
+ *
8
+ * This module provides theme-aware utilities for games.
9
+ * The theme must be configured by the consuming application via setTheme().
10
+ */
11
+
12
+ /**
13
+ * Set the current theme mode
14
+ * Call this from your app when the theme changes
15
+ */
16
+ declare function setTheme(mode: PhosphorMode): void;
17
+ /**
18
+ * Get the current theme mode
19
+ */
20
+ declare function getTheme(): PhosphorMode;
21
+ /**
22
+ * Check if a terminal is valid and can accept writes
23
+ */
24
+ declare function isTerminalValid(terminal: Terminal | null | undefined): terminal is Terminal;
25
+ /**
26
+ * Enter alternate screen buffer with state tracking.
27
+ * Safe to call multiple times - will log warning but not double-enter.
28
+ *
29
+ * @param terminal - The xterm terminal instance
30
+ * @param reason - Description of why we're entering (for debugging)
31
+ * @returns true if buffer was entered, false if already in buffer or terminal invalid
32
+ */
33
+ declare function enterAlternateBuffer(terminal: Terminal, reason: string): boolean;
34
+ /**
35
+ * Exit alternate screen buffer with state tracking.
36
+ * Safe to call multiple times - will log warning but not double-exit.
37
+ *
38
+ * @param terminal - The xterm terminal instance
39
+ * @param reason - Description of why we're exiting (for debugging)
40
+ * @returns true if buffer was exited, false if not in buffer or terminal invalid
41
+ */
42
+ declare function exitAlternateBuffer(terminal: Terminal, reason: string): boolean;
43
+ /**
44
+ * Check if terminal is currently in alternate buffer
45
+ */
46
+ declare function isInAlternateBuffer(terminal: Terminal): boolean;
47
+ /**
48
+ * Force exit alternate buffer without state check (for error recovery)
49
+ * Use sparingly - prefer exitAlternateBuffer for normal operations
50
+ */
51
+ declare function forceExitAlternateBuffer(terminal: Terminal, reason: string): void;
52
+ /**
53
+ * Get theme-appropriate ANSI color escape code
54
+ */
55
+ declare function getThemeColorCode(mode: PhosphorMode): string;
56
+ /**
57
+ * Get current theme color code
58
+ */
59
+ declare function getCurrentThemeColor(): string;
60
+ /**
61
+ * Check if current theme is a light theme (needs dark text)
62
+ */
63
+ declare function isLightTheme(): boolean;
64
+ /**
65
+ * Get a subtle/muted color that blends with the terminal background
66
+ * Useful for background elements like doors, walls, etc.
67
+ */
68
+ declare function getSubtleBackgroundColor(): string;
69
+ interface VerticalAnchorOptions {
70
+ headerRows?: number;
71
+ footerRows?: number;
72
+ minTop?: number;
73
+ }
74
+ /**
75
+ * Compute a vertically-centered top row for content while reserving header/footer space.
76
+ */
77
+ declare function getVerticalAnchor(terminalRows: number, contentRows: number, options?: VerticalAnchorOptions): number;
78
+
79
+ /**
80
+ * Game Transitions - Centralized hacker-style transition effects
81
+ *
82
+ * Provides cinematic transitions for game entry, exit, and switching.
83
+ * Games don't need to know about these - they just dispatch events.
84
+ */
85
+
86
+ /**
87
+ * Boot transition - plays before game starts
88
+ */
89
+ declare function playBootTransition(terminal: Terminal): Promise<void>;
90
+ /**
91
+ * Exit transition - plays when game quits back to shell
92
+ */
93
+ declare function playExitTransition(terminal: Terminal): Promise<void>;
94
+ /**
95
+ * Switch transition - plays when switching to a new game
96
+ */
97
+ declare function playSwitchTransition(terminal: Terminal): Promise<void>;
98
+ /**
99
+ * Quick boot - shorter version for game switching (game-to-game)
100
+ */
101
+ declare function playQuickBoot(terminal: Terminal): Promise<void>;
102
+ /**
103
+ * Select transition - plays when selecting a game from the menu
104
+ * Shows the game name with a cool reveal effect
105
+ */
106
+ declare function playSelectTransition(terminal: Terminal, gameName: string): Promise<void>;
107
+ declare const GAME_EVENTS: {
108
+ readonly QUIT: "hypersurge:game-quit";
109
+ readonly SWITCH: "hypersurge:random-game";
110
+ readonly GAMES_MENU: "hypersurge:games-menu";
111
+ readonly LAUNCH_GAME: "hypersurge:launch-game";
112
+ };
113
+ /**
114
+ * Helper for games to dispatch quit event
115
+ * This triggers the exit transition before returning to shell
116
+ */
117
+ declare function dispatchGameQuit(terminal: Terminal): void;
118
+ /**
119
+ * Helper for games to dispatch switch event
120
+ * This triggers the switch transition before loading new game
121
+ */
122
+ declare function dispatchGameSwitch(terminal: Terminal): void;
123
+ /**
124
+ * Helper for games to dispatch games menu event
125
+ * This triggers the games menu to let user select a game
126
+ */
127
+ declare function dispatchGamesMenu(terminal: Terminal): void;
128
+ /**
129
+ * Helper to dispatch launch game event
130
+ * This triggers TerminalPool to launch a specific game with proper tracking
131
+ */
132
+ declare function dispatchLaunchGame(terminal: Terminal, gameId: string): void;
133
+
134
+ /**
135
+ * Shared Menu System for Easter Egg Games
136
+ *
137
+ * Provides consistent menu navigation (arrow keys + Enter/Space)
138
+ * while maintaining keyboard shortcuts for quick access.
139
+ */
140
+ interface MenuItem {
141
+ label: string;
142
+ shortcut?: string;
143
+ action: () => void;
144
+ }
145
+ interface MenuState {
146
+ selection: number;
147
+ items: MenuItem[];
148
+ }
149
+ /**
150
+ * Create a new menu state
151
+ */
152
+ declare function createMenuState(items: MenuItem[]): MenuState;
153
+ /**
154
+ * Navigate menu selection up
155
+ */
156
+ declare function menuUp(state: MenuState): void;
157
+ /**
158
+ * Navigate menu selection down
159
+ */
160
+ declare function menuDown(state: MenuState): void;
161
+ /**
162
+ * Reset menu selection to top
163
+ */
164
+ declare function menuReset(state: MenuState): void;
165
+ /**
166
+ * Execute the currently selected menu item
167
+ */
168
+ declare function menuConfirm(state: MenuState): void;
169
+ /**
170
+ * Handle keyboard input for menu navigation
171
+ * Returns true if the key was handled, false otherwise
172
+ */
173
+ declare function handleMenuInput(state: MenuState, key: string, domEvent: KeyboardEvent): boolean;
174
+ interface RenderMenuOptions {
175
+ title: string;
176
+ x: number;
177
+ y: number;
178
+ width?: number;
179
+ showShortcuts?: boolean;
180
+ blinkTitle?: boolean;
181
+ }
182
+ /**
183
+ * Render a menu box with highlighted selection
184
+ * Returns ANSI escape sequence string
185
+ */
186
+ declare function renderMenu(state: MenuState, options: RenderMenuOptions): string;
187
+ /**
188
+ * Standard pause menu items used across most games
189
+ */
190
+ declare function createPauseMenuItems(callbacks: {
191
+ onResume: () => void;
192
+ onRestart: () => void;
193
+ onQuit: () => void;
194
+ onListGames?: () => void;
195
+ onNextGame?: () => void;
196
+ onHelp?: () => void;
197
+ }): MenuItem[];
198
+ /**
199
+ * Standard game over menu items
200
+ */
201
+ declare function createGameOverMenuItems(callbacks: {
202
+ onRestart: () => void;
203
+ onQuit: () => void;
204
+ onNextGame?: () => void;
205
+ }): MenuItem[];
206
+ /**
207
+ * Mode selection menu (Tutorial/Play) used by games with tutorials
208
+ */
209
+ declare function createModeSelectMenuItems(callbacks: {
210
+ onTutorial: () => void;
211
+ onPlay: () => void;
212
+ }): MenuItem[];
213
+ interface SimpleMenuItem {
214
+ label: string;
215
+ shortcut?: string;
216
+ }
217
+ /**
218
+ * Handle menu navigation without callbacks
219
+ * Returns new selection index
220
+ */
221
+ declare function navigateMenu(currentSelection: number, itemCount: number, key: string, domEvent: KeyboardEvent): {
222
+ newSelection: number;
223
+ confirmed: boolean;
224
+ };
225
+ /**
226
+ * Check if a shortcut key was pressed
227
+ * Returns the index of the matching item, or -1 if no match
228
+ */
229
+ declare function checkShortcut(items: SimpleMenuItem[], key: string): number;
230
+ /**
231
+ * Render a simple menu (index-based, no callbacks)
232
+ * Returns ANSI escape sequence string
233
+ */
234
+ declare function renderSimpleMenu(items: SimpleMenuItem[], selection: number, options: {
235
+ centerX: number;
236
+ startY: number;
237
+ showShortcuts?: boolean;
238
+ }): string;
239
+ /**
240
+ * Common pause menu items definition
241
+ */
242
+ declare const PAUSE_MENU_ITEMS: SimpleMenuItem[];
243
+ /**
244
+ * Common mode select items definition
245
+ */
246
+ declare const MODE_SELECT_ITEMS: SimpleMenuItem[];
247
+
248
+ /**
249
+ * Hyper 2048
250
+ *
251
+ * Slide and merge DATA PACKETS to reach TERABYTE (2048).
252
+ * Cyberpunk-themed with glitchy effects and theme-aware colors.
253
+ */
254
+
255
+ /**
256
+ * 2048 Game Controller
257
+ */
258
+ interface Game2048Controller {
259
+ stop: () => void;
260
+ isRunning: boolean;
261
+ }
262
+ declare function run2048Game(terminal: Terminal): Game2048Controller;
263
+
264
+ /**
265
+ * Hyper Asteroids
266
+ *
267
+ * Classic asteroids with ship rotation, thrust physics, and shooting.
268
+ * Simplified visuals for terminal - single-character asteroids and ship.
269
+ * Features screen wrapping, asteroid splitting, particle effects.
270
+ */
271
+
272
+ interface AsteroidsController {
273
+ stop: () => void;
274
+ isRunning: boolean;
275
+ }
276
+ declare function runAsteroidsGame(terminal: Terminal): AsteroidsController;
277
+
278
+ /**
279
+ * Hyper Breakout
280
+ *
281
+ * Classic breakout/brick breaker with cyberpunk theme.
282
+ * Paddle at bottom, ball bounces to break bricks at top.
283
+ * Features power-ups, particle explosions, and screen shake.
284
+ */
285
+
286
+ /**
287
+ * Breakout Game Controller
288
+ */
289
+ interface BreakoutController {
290
+ stop: () => void;
291
+ isRunning: boolean;
292
+ }
293
+ declare function runBreakoutGame(terminal: Terminal): BreakoutController;
294
+
295
+ /**
296
+ * Hyper Chopper
297
+ *
298
+ * UGH!-inspired 2D physics delivery game.
299
+ * Fly a prehistoric helicopter, pick up passengers,
300
+ * deliver them to platforms. Don't fall in the water!
301
+ *
302
+ * FIXED SCREEN - no scrolling, like Pac-Man
303
+ */
304
+
305
+ /**
306
+ * Courier Game Controller
307
+ */
308
+ interface CourierController {
309
+ stop: () => void;
310
+ isRunning: boolean;
311
+ }
312
+ /**
313
+ * Hyper Chopper Game
314
+ */
315
+ declare function runCourierGame(terminal: Terminal): CourierController;
316
+
317
+ /**
318
+ * Hyper Crack - Terminal Hacking Game
319
+ *
320
+ * Crack passwords to breach security layers before
321
+ * the trace detection catches you. Wordle-style mechanics
322
+ * with cyberpunk hacker aesthetics.
323
+ */
324
+
325
+ /**
326
+ * Crack Game Controller
327
+ */
328
+ interface CrackController {
329
+ stop: () => void;
330
+ isRunning: boolean;
331
+ }
332
+ /**
333
+ * Cyberpunk Terminal Hacking Game
334
+ */
335
+ declare function runCrackGame(terminal: Terminal): CrackController;
336
+
337
+ /**
338
+ * Hyper Frogger
339
+ *
340
+ * Guide your frog across dangerous roads and rivers!
341
+ * - Avoid cars and trucks on the road
342
+ * - Hop on logs and turtles to cross the water
343
+ * - Reach all 5 lily pads to advance
344
+ *
345
+ * Features:
346
+ * - Progressive difficulty (starts easy)
347
+ * - Visual frog character with animation
348
+ * - Better themed obstacles
349
+ * - Lower terminal requirements
350
+ */
351
+
352
+ interface FroggerController {
353
+ stop: () => void;
354
+ isRunning: boolean;
355
+ }
356
+ declare function runFroggerGame(terminal: Terminal): FroggerController;
357
+
358
+ /**
359
+ * Hyper Hangman
360
+ *
361
+ * Cyberpunk-themed word guessing game with glitchy effects,
362
+ * neon visuals, and theme-aware colors.
363
+ */
364
+
365
+ /**
366
+ * Hangman Game Controller
367
+ */
368
+ interface HangmanController {
369
+ stop: () => void;
370
+ isRunning: boolean;
371
+ }
372
+ /**
373
+ * Cyberpunk Hangman Game
374
+ */
375
+ declare function runHangmanGame(terminal: Terminal): HangmanController;
376
+
377
+ /**
378
+ * Hyper Minesweeper
379
+ *
380
+ * Cyberpunk minesweeper - "defuse the malware grid".
381
+ * Navigate the grid, flag malware, reveal safe sectors.
382
+ * Theme-aware with glitchy effects and particle systems.
383
+ */
384
+
385
+ /**
386
+ * Minesweeper Game Controller
387
+ */
388
+ interface MinesweeperController {
389
+ stop: () => void;
390
+ isRunning: boolean;
391
+ }
392
+ declare function runMinesweeperGame(terminal: Terminal): MinesweeperController;
393
+
394
+ /**
395
+ * Hyper Pong
396
+ *
397
+ * Cyberpunk-themed Pong game with glitchy effects,
398
+ * neon visuals, and theme-aware colors.
399
+ * Single player vs AI.
400
+ */
401
+
402
+ /**
403
+ * Pong Game Controller
404
+ */
405
+ interface PongController {
406
+ stop: () => void;
407
+ isRunning: boolean;
408
+ }
409
+ /**
410
+ * Cyberpunk Pong Game
411
+ */
412
+ declare function runPongGame(terminal: Terminal): PongController;
413
+
414
+ /**
415
+ * Hyper Runner
416
+ *
417
+ * Cyberpunk endless runner game - dodge obstacles,
418
+ * collect power-ups, and survive as long as you can.
419
+ * Subway Surfers-style vertical perspective with cyberpunk aesthetics.
420
+ */
421
+
422
+ /**
423
+ * Runner Game Controller
424
+ */
425
+ interface RunnerController {
426
+ stop: () => void;
427
+ isRunning: boolean;
428
+ }
429
+ /**
430
+ * Cyberpunk Endless Runner - Vertical perspective
431
+ */
432
+ declare function runRunnerGame(terminal: Terminal): RunnerController;
433
+
434
+ /**
435
+ * Hyper Simon
436
+ *
437
+ * Cyberpunk memory sequence game - "hack the mainframe" by repeating patterns.
438
+ * Features 4 quadrants (1/2/3/4 or arrow keys), visual flash effects,
439
+ * speed increases, and particle bursts on success.
440
+ */
441
+
442
+ /**
443
+ * Simon Game Controller
444
+ */
445
+ interface SimonController {
446
+ stop: () => void;
447
+ isRunning: boolean;
448
+ }
449
+ declare function runSimonGame(terminal: Terminal): SimonController;
450
+
451
+ /**
452
+ * Hyper Snake Game
453
+ *
454
+ * Cyberpunk-themed snake game with glitchy title,
455
+ * neon borders, and theme-aware colors.
456
+ */
457
+
458
+ /**
459
+ * Snake Game Controller
460
+ */
461
+ interface SnakeController {
462
+ stop: () => void;
463
+ isRunning: boolean;
464
+ }
465
+ /**
466
+ * Cyberpunk Snake Game
467
+ */
468
+ declare function runSnakeGame(terminal: Terminal): SnakeController;
469
+
470
+ /**
471
+ * Hyper Space Invaders
472
+ *
473
+ * Cyberpunk-themed Space Invaders with glitchy effects,
474
+ * neon visuals, and theme-aware colors.
475
+ */
476
+
477
+ /**
478
+ * Space Invaders Game Controller
479
+ */
480
+ interface SpaceInvadersController {
481
+ stop: () => void;
482
+ isRunning: boolean;
483
+ }
484
+ /**
485
+ * Cyberpunk Space Invaders
486
+ */
487
+ declare function runSpaceInvadersGame(terminal: Terminal): SpaceInvadersController;
488
+
489
+ /**
490
+ * Hyper Tetris
491
+ *
492
+ * Cyberpunk-themed Tetris with glitchy effects,
493
+ * neon borders, and theme-aware colors.
494
+ */
495
+
496
+ /**
497
+ * Tetris Game Controller
498
+ */
499
+ interface TetrisController {
500
+ stop: () => void;
501
+ isRunning: boolean;
502
+ }
503
+ /**
504
+ * Cyberpunk Tetris Game
505
+ */
506
+ declare function runTetrisGame(terminal: Terminal): TetrisController;
507
+
508
+ /**
509
+ * Hyper Tower
510
+ *
511
+ * Stack falling blocks perfectly to build the tallest tower.
512
+ * Blocks swing left/right - press space to drop.
513
+ * Overhanging parts fall off, making subsequent blocks narrower.
514
+ * Perfect alignments give bonus points and combo multipliers.
515
+ * Cyberpunk-themed with glitchy effects and theme-aware colors.
516
+ */
517
+
518
+ /**
519
+ * Tower Game Controller
520
+ */
521
+ interface TowerController {
522
+ stop: () => void;
523
+ isRunning: boolean;
524
+ }
525
+ declare function runTowerGame(terminal: Terminal): TowerController;
526
+
527
+ /**
528
+ * Hyper Tron
529
+ *
530
+ * Light cycles - you vs AI. Don't hit walls or trails.
531
+ * Cyberpunk-themed with glitchy effects and theme-aware colors.
532
+ * Best of 5 rounds, speed increases each round, optional shrinking arena.
533
+ */
534
+
535
+ /**
536
+ * Tron Game Controller
537
+ */
538
+ interface TronController {
539
+ stop: () => void;
540
+ isRunning: boolean;
541
+ }
542
+ declare function runTronGame(terminal: Terminal): TronController;
543
+
544
+ /**
545
+ * Hyper Typing Test
546
+ *
547
+ * Cyberpunk-themed typing speed test with glitchy effects,
548
+ * neon visuals, and theme-aware colors.
549
+ * Tests WPM (words per minute) and accuracy.
550
+ */
551
+
552
+ /**
553
+ * Typing Test Game Controller
554
+ */
555
+ interface TypingTestController {
556
+ stop: () => void;
557
+ isRunning: boolean;
558
+ }
559
+ /**
560
+ * Cyberpunk Typing Test
561
+ */
562
+ declare function runTypingTest(terminal: Terminal): TypingTestController;
563
+
564
+ /**
565
+ * Hyper Wordle
566
+ *
567
+ * Classic 5-letter word guessing game with cyberpunk aesthetics.
568
+ * Crack the cipher in 6 attempts. Green = correct, Yellow = wrong position, Gray = absent.
569
+ * Features on-screen keyboard, statistics tracking, and particle celebrations.
570
+ */
571
+
572
+ /**
573
+ * Wordle Game Controller
574
+ */
575
+ interface WordleController {
576
+ stop: () => void;
577
+ isRunning: boolean;
578
+ }
579
+ declare function runWordleGame(terminal: Terminal): WordleController;
580
+
581
+ /**
582
+ * Games Menu
583
+ *
584
+ * Interactive game selection menu accessible via ::games command
585
+ * or by pressing L in any game's pause menu.
586
+ */
587
+
588
+ interface GamesMenuController {
589
+ stop: () => void;
590
+ isRunning: boolean;
591
+ }
592
+ interface GamesMenuOptions {
593
+ onGameSelect?: (gameId: string) => void;
594
+ onQuit?: () => void;
595
+ }
596
+ /**
597
+ * Show interactive games menu
598
+ */
599
+ declare function showGamesMenu(terminal: Terminal, optionsOrCallback?: GamesMenuOptions | ((gameId: string) => void)): GamesMenuController;
600
+
601
+ /**
602
+ * Matrix Rain Effect
603
+ *
604
+ * Digital rain animation inspired by The Matrix.
605
+ * Shows intro text, then starts the rain on keypress.
606
+ */
607
+
608
+ /**
609
+ * Matrix controller for managing the animation state
610
+ */
611
+ interface MatrixController {
612
+ stop: () => void;
613
+ isRunning: boolean;
614
+ }
615
+ /**
616
+ * Get the current matrix controller (if running)
617
+ */
618
+ declare function getActiveMatrixController(): MatrixController | null;
619
+ /**
620
+ * Execute matrix rain effect - fullscreen, theme-aware, key-to-stop
621
+ */
622
+ declare function runMatrixEffect(terminal: Terminal): MatrixController;
623
+ /**
624
+ * Start the actual matrix rain (called after intro keypress)
625
+ */
626
+ declare function startMatrixRain(terminal: Terminal): void;
627
+ /**
628
+ * Check if we're in matrix intro phase
629
+ */
630
+ declare function isMatrixWaitingForKey(): boolean;
631
+ /**
632
+ * Handle keypress during matrix effect
633
+ */
634
+ declare function handleMatrixKeypress(_terminal: Terminal): boolean;
635
+
636
+ /**
637
+ * Fake Hacking Animation
638
+ *
639
+ * Displays a fake "hacking" sequence for fun.
640
+ */
641
+
642
+ interface HackController {
643
+ stop: () => void;
644
+ isRunning: boolean;
645
+ }
646
+ /**
647
+ * Execute fake hacking animation
648
+ */
649
+ declare function runHackEffect(terminal: Terminal): HackController;
650
+
651
+ /**
652
+ * Fake Reboot Animation
653
+ *
654
+ * Simulates a system reboot sequence.
655
+ */
656
+
657
+ interface RebootController {
658
+ stop: () => void;
659
+ isRunning: boolean;
660
+ }
661
+ /**
662
+ * Execute fake reboot animation
663
+ */
664
+ declare function runRebootEffect(terminal: Terminal): RebootController;
665
+
666
+ /**
667
+ * Game registry with metadata
668
+ */
669
+ interface GameInfo {
670
+ id: string;
671
+ name: string;
672
+ description: string;
673
+ run: (terminal: _xterm_xterm.Terminal) => {
674
+ stop: () => void;
675
+ isRunning: boolean;
676
+ };
677
+ }
678
+ declare const games: GameInfo[];
679
+ /**
680
+ * Get a game by ID
681
+ */
682
+ declare function getGame(id: string): GameInfo | undefined;
683
+ /**
684
+ * Get a random game
685
+ */
686
+ declare function getRandomGame(): GameInfo;
687
+ /**
688
+ * Run a game by ID
689
+ */
690
+ declare function runGame(id: string, terminal: _xterm_xterm.Terminal): {
691
+ stop: () => void;
692
+ isRunning: boolean;
693
+ } | undefined;
694
+
695
+ export { GAME_EVENTS, type GameInfo, type GamesMenuController, type GamesMenuOptions, type HackController, MODE_SELECT_ITEMS, type MatrixController, type MenuItem, type MenuState, PAUSE_MENU_ITEMS, PhosphorMode, type RebootController, type RenderMenuOptions, type SimpleMenuItem, checkShortcut, createGameOverMenuItems, createMenuState, createModeSelectMenuItems, createPauseMenuItems, dispatchGameQuit, dispatchGameSwitch, dispatchGamesMenu, dispatchLaunchGame, enterAlternateBuffer, exitAlternateBuffer, forceExitAlternateBuffer, games, getActiveMatrixController, getCurrentThemeColor, getGame, getRandomGame, getSubtleBackgroundColor, getTheme, getThemeColorCode, getVerticalAnchor, handleMatrixKeypress, handleMenuInput, isInAlternateBuffer, isLightTheme, isMatrixWaitingForKey, isTerminalValid, menuConfirm, menuDown, menuReset, menuUp, navigateMenu, playBootTransition, playExitTransition, playQuickBoot, playSelectTransition, playSwitchTransition, renderMenu, renderSimpleMenu, run2048Game, runAsteroidsGame, runBreakoutGame, runCourierGame, runCrackGame, runFroggerGame, runGame, runHackEffect, runHangmanGame, runMatrixEffect, runMinesweeperGame, runPongGame, runRebootEffect, runRunnerGame, runSimonGame, runSnakeGame, runSpaceInvadersGame, runTetrisGame, runTowerGame, runTronGame, runTypingTest, runWordleGame, setTheme, showGamesMenu, startMatrixRain };