2025-03-07 11:34:11 +01:00
|
|
|
import {rawUpgrades} from "./rawUpgrades";
|
2025-03-06 16:46:25 +01:00
|
|
|
|
|
|
|
export type colorString = string;
|
2025-03-06 14:06:02 +01:00
|
|
|
|
|
|
|
export type RawLevel = {
|
2025-03-07 11:34:11 +01:00
|
|
|
name: string;
|
|
|
|
size: number;
|
|
|
|
bricks: string;
|
|
|
|
svg: string;
|
|
|
|
color: string;
|
2025-03-06 14:06:02 +01:00
|
|
|
};
|
|
|
|
export type Level = {
|
2025-03-07 11:34:11 +01:00
|
|
|
name: string;
|
|
|
|
size: number;
|
|
|
|
bricks: colorString[];
|
|
|
|
svg: string;
|
|
|
|
color: string;
|
|
|
|
threshold?: number;
|
|
|
|
sortKey?: number;
|
2025-03-06 14:06:02 +01:00
|
|
|
};
|
|
|
|
|
2025-03-06 16:46:25 +01:00
|
|
|
export type Palette = { [k: string]: string };
|
2025-03-06 14:06:02 +01:00
|
|
|
|
2025-03-06 16:46:25 +01:00
|
|
|
export type Upgrade = {
|
2025-03-07 11:34:11 +01:00
|
|
|
threshold: number;
|
|
|
|
giftable: boolean;
|
|
|
|
id: PerkId;
|
|
|
|
name: string;
|
|
|
|
icon: string;
|
|
|
|
max: number;
|
|
|
|
help: (lvl: number) => string;
|
|
|
|
fullHelp: string;
|
|
|
|
requires: PerkId | "";
|
2025-03-06 16:46:25 +01:00
|
|
|
};
|
2025-03-06 14:06:02 +01:00
|
|
|
|
2025-03-06 16:46:25 +01:00
|
|
|
export type PerkId = (typeof rawUpgrades)[number]["id"];
|
2025-03-06 14:06:02 +01:00
|
|
|
|
|
|
|
declare global {
|
2025-03-07 11:34:11 +01:00
|
|
|
interface Window {
|
|
|
|
webkitAudioContext?: typeof AudioContext;
|
|
|
|
}
|
|
|
|
|
|
|
|
interface Document {
|
|
|
|
webkitFullscreenEnabled?: boolean;
|
|
|
|
webkitCancelFullScreen?: () => void;
|
|
|
|
}
|
|
|
|
|
|
|
|
interface Element {
|
|
|
|
webkitRequestFullscreen: typeof Element.requestFullscreen
|
|
|
|
}
|
|
|
|
|
|
|
|
interface MediaStream {
|
|
|
|
// https://devdoc.net/web/developer.mozilla.org/en-US/docs/Web/API/CanvasCaptureMediaStream.html
|
|
|
|
// On firefox, the capture stream has the requestFrame option
|
|
|
|
// instead of the track, go figure
|
|
|
|
requestFrame?:()=>void
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
export type BallLike = {
|
|
|
|
x: number;
|
|
|
|
y: number;
|
|
|
|
vx?: number;
|
|
|
|
vy?: number;
|
2025-03-06 16:46:25 +01:00
|
|
|
}
|
|
|
|
|
2025-03-07 11:34:11 +01:00
|
|
|
export type Coin = {
|
|
|
|
points: number;
|
|
|
|
color: colorString;
|
|
|
|
x: number;
|
|
|
|
y: number;
|
|
|
|
previousx: number;
|
|
|
|
previousy: number;
|
|
|
|
vx: number;
|
|
|
|
vy: number;
|
|
|
|
sx: number;
|
|
|
|
sy: number;
|
|
|
|
a: number;
|
|
|
|
sa: number;
|
|
|
|
weight: number;
|
|
|
|
destroyed?: boolean;
|
|
|
|
coloredABrick?: boolean;
|
2025-03-06 16:46:25 +01:00
|
|
|
}
|
|
|
|
export type Ball = {
|
2025-03-07 11:34:11 +01:00
|
|
|
x: number;
|
|
|
|
previousx: number;
|
|
|
|
y: number;
|
|
|
|
previousy: number;
|
|
|
|
vx: number;
|
|
|
|
vy: number;
|
|
|
|
sx: number;
|
|
|
|
sy: number;
|
|
|
|
sparks: number;
|
|
|
|
piercedSinceBounce: number;
|
|
|
|
hitSinceBounce: number;
|
|
|
|
hitItem: { index: number, color: string }[];
|
|
|
|
bouncesList?: { x: number, y: number }[];
|
|
|
|
sapperUses: number;
|
|
|
|
destroyed?: boolean;
|
|
|
|
previousvx?: number;
|
|
|
|
previousvy?: number;
|
2025-03-06 16:46:25 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2025-03-07 11:34:11 +01:00
|
|
|
export type FlashTypes = "text" | "particle" | 'ball'
|
2025-03-06 16:46:25 +01:00
|
|
|
|
|
|
|
export type Flash = {
|
2025-03-07 11:34:11 +01:00
|
|
|
type: FlashTypes;
|
|
|
|
text?: string;
|
|
|
|
time: number;
|
|
|
|
color: colorString;
|
|
|
|
x: number;
|
|
|
|
y: number;
|
|
|
|
duration: number;
|
|
|
|
size: number;
|
|
|
|
vx?: number;
|
|
|
|
vy?: number;
|
|
|
|
ethereal?: boolean;
|
|
|
|
destroyed?: boolean;
|
|
|
|
}
|
|
|
|
|
|
|
|
export type RunStats= {
|
|
|
|
started: number;
|
|
|
|
levelsPlayed: number;
|
|
|
|
runTime: number;
|
|
|
|
coins_spawned: number;
|
|
|
|
score: number;
|
|
|
|
bricks_broken: number;
|
|
|
|
misses: number;
|
|
|
|
balls_lost: number;
|
|
|
|
puck_bounces: number;
|
|
|
|
upgrades_picked: number;
|
|
|
|
max_combo: number;
|
|
|
|
max_level: number;
|
|
|
|
}
|
|
|
|
|
2025-03-06 16:46:25 +01:00
|
|
|
|
2025-03-07 11:34:11 +01:00
|
|
|
export type RunHistoryItem =RunStats & {
|
|
|
|
perks?: {[k in PerkId]:number};
|
|
|
|
appVersion?:string;
|
2025-03-06 16:46:25 +01:00
|
|
|
}
|
|
|
|
|