-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtypes.ts
More file actions
81 lines (71 loc) · 1.42 KB
/
types.ts
File metadata and controls
81 lines (71 loc) · 1.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
export interface Point {
x: number;
y: number;
}
export enum GameState {
LOADING = 'LOADING',
MENU = 'MENU',
PLAYING = 'PLAYING',
GAME_OVER = 'GAME_OVER'
}
export type InputMode = 'camera' | 'pointer';
export type CameraStatus = 'idle' | 'loading' | 'ready' | 'error';
export interface GameSettings {
mirrorVideo: boolean;
showCameraFeed: boolean;
showHandSkeleton: boolean;
showTrail: boolean;
lowVfx: boolean;
}
export interface GameStats {
score: number;
lives: number;
combo: number;
maxCombo: number;
sliced: number;
missed: number;
}
export interface Fruit {
id: string;
x: number;
y: number;
vx: number;
vy: number;
radius: number;
color: string;
type: 'fruit' | 'bomb';
rotation: number;
rotationSpeed: number;
sliced: boolean;
}
export interface Particle {
id: string;
x: number;
y: number;
vx: number;
vy: number;
color: string;
life: number; // 0 to 1
size: number;
}
export interface VisionResult {
x: number; // 0-1 normalized (Index Tip)
y: number; // 0-1 normalized (Index Tip)
landmarks?: { x: number; y: number }[]; // All hand landmarks
}
export interface LeaderboardEntry {
id: string;
player: string;
score: number;
accuracy: number;
maxCombo: number;
inputMode: InputMode;
createdAt: string;
}
export interface LeaderboardSubmission {
player: string;
score: number;
accuracy: number;
maxCombo: number;
inputMode: InputMode;
}