breakout71/src/types.d.ts

104 lines
1.9 KiB
TypeScript
Raw Normal View History

import { rawUpgrades } from "./rawUpgrades";
export type colorString = string;
2025-03-06 14:06:02 +01:00
export type RawLevel = {
name: string;
size: number;
bricks: string;
svg: string;
color: string;
2025-03-06 14:06:02 +01:00
};
export type Level = {
name: string;
size: number;
bricks: colorString[];
svg: string;
color: string;
threshold?: number;
sortKey?: number;
2025-03-06 14:06:02 +01:00
};
export type Palette = { [k: string]: string };
2025-03-06 14:06:02 +01:00
export type Upgrade = {
threshold: number;
giftable: boolean;
id: string;
name: string;
icon: string;
max: number;
help: (lvl: string) => string;
fullHelp: string;
requires: PerkId | "";
};
2025-03-06 14:06:02 +01:00
export type PerkId = (typeof rawUpgrades)[number]["id"];
2025-03-06 14:06:02 +01:00
declare global {
interface Window {
webkitAudioContext?: typeof AudioContext;
}
interface Document {
webkitFullscreenEnabled?: boolean;
webkitCancelFullScreen?: ()=>void;
}
interface Element {
webkitRequestFullscreen: typeof Element.requestFullscreen
}
}
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;
}
export type Ball = {
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}[],
sapperUses:number;
destroyed?:boolean;
}
export type FlashTypes= "text"|"particle"|'ball'
export type Flash = {
type: FlashTypes;
text?:string;
time:number;
color:colorString;
x:number;
y:number;
duration:number;
size:number;
vx?:number;
vy?:number;
ethereal?:boolean;
destroyed?:boolean;
}