diff options
| author | srdusr <trevorgray@srdusr.com> | 2025-09-26 13:39:28 +0200 |
|---|---|---|
| committer | srdusr <trevorgray@srdusr.com> | 2025-09-26 13:39:28 +0200 |
| commit | 8d60c7f93407988ee0232ea90980028f299cb0f3 (patch) | |
| tree | b343b691d1bce64fb3bc9b40324857486f2be244 /web/src/types.ts | |
| parent | 76f0d0e902e6ed164704572bd81faa5e5e560cf3 (diff) | |
| download | typerpunk-8d60c7f93407988ee0232ea90980028f299cb0f3.tar.gz typerpunk-8d60c7f93407988ee0232ea90980028f299cb0f3.zip | |
Initial Commit
Diffstat (limited to 'web/src/types.ts')
| -rw-r--r-- | web/src/types.ts | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/web/src/types.ts b/web/src/types.ts new file mode 100644 index 0000000..07871c2 --- /dev/null +++ b/web/src/types.ts @@ -0,0 +1,54 @@ +export type Screen = 'main-menu' | 'typing-game' | 'end-screen'; + +export interface Stats { + wpm: number; + rawWpm: number; + accuracy: number; + time: number; + correctChars: number; + incorrectChars: number; + totalChars: number; + currentStreak: number; + bestStreak: number; +} + +export interface GameState { + screen: Screen; + currentText: string; + currentAttribution?: string; + input: string; + startTime: number | null; + isRunning: boolean; + stats: Stats; +} + +export enum Theme { + Light = 'light', + Dark = 'dark' +} + +export interface ThemeColors { + primary: string; + secondary: string; + background: string; + text: string; + error: string; + success: string; +} + +export interface TyperPunkGame { + handle_input(input: string): void; + handle_backspace(ctrl: boolean): boolean; + get_stats(): [number, number]; + get_stats_and_input(): [string, number, number]; + is_finished(): boolean; + get_text(): string; + get_input(): string; + set_text(text: string): void; + start(): void; + get_wpm(): number; + get_time_elapsed(): number; + get_raw_wpm(): number; +} + +export type TyperPunk = TyperPunkGame;
\ No newline at end of file |
