┌───────────────────────────────┐ │Stopwatch │ ├───────────────────────────────┤ │-isRunning: boolean │ │-accumulatedMs: number │ │-startTime: number │ │+constructor() │ │+getState(): boolean │ │+reset() │ │+start() │ │+stop() │ │+update() │ │-formatTime(ms: number): string│ └───────────────────────────────┘ | | ┌─────────────────────────────────────────────────────────────────────────┐ │TextSprite │ ├─────────────────────────────────────────────────────────────────────────┤ │+text: string │ │+bg: number │ │+fg: number │ │+maxFontHeight: number │ │+borderWidth: number │ │+borderColor: number │ │+padding: number │ │+outlineWidth: number │ │+outlineColor: number │ │+icon: Image = null │ │__ │ │+constructor(text: string, bg: number, fg: number, maxFontHeight: number,│ │ borderWidth: number, borderColor: number, padding: number, │ │ outlineWidth: number, outlineColor: number, icon: Image = null) │ │__ │ │+update() │ │+setMaxFontHeight(height: number) │ │+setIcon(icon: Image) │ │+setText(text: string) │ │+setBorder(width: number, color: number, padding: number = 0) │ │+setOutline(width: number, color: number) │ └─────────────────────────────────────────────────────────────────────────┘ | ┌──────────┐ │Sprite │ ├──────────┤ │+x: number│ │+y: number│ └──────────┘