Add tap-controlled incremental space-knight game
Auto-flying knight, crystal zones, pirate/boss combat, shop upgrades, falling/golden asteroids, particle juice, droid evolution, and a supernova prestige cutscene, per the design spec. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01D5SuZW1XGCkahPX7cHMoRP
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
9f903a5094
commit
cbd547944e
@@ -0,0 +1,99 @@
|
||||
export type UpgradeKey = 'crystal' | 'speed' | 'damage' | 'droid';
|
||||
|
||||
export interface CrystalEntity {
|
||||
id: number;
|
||||
x: number;
|
||||
y: number;
|
||||
value: number;
|
||||
radius: number;
|
||||
rotation: number;
|
||||
spin: number;
|
||||
jitter: number[];
|
||||
}
|
||||
|
||||
export interface EnemyEntity {
|
||||
id: number;
|
||||
x: number;
|
||||
y: number;
|
||||
hp: number;
|
||||
maxHp: number;
|
||||
speed: number;
|
||||
radius: number;
|
||||
isBoss: boolean;
|
||||
state: 'chase' | 'fight';
|
||||
wanderAngle: number;
|
||||
jitter: number[];
|
||||
hitFlash: number;
|
||||
}
|
||||
|
||||
export interface DroidEntity {
|
||||
id: number;
|
||||
angleOffset: number;
|
||||
cooldown: number;
|
||||
laserTimer: number;
|
||||
}
|
||||
|
||||
export interface AsteroidEntity {
|
||||
id: number;
|
||||
x: number;
|
||||
y: number;
|
||||
vx: number;
|
||||
speed: number;
|
||||
radius: number;
|
||||
rotation: number;
|
||||
spin: number;
|
||||
jitter: number[];
|
||||
}
|
||||
|
||||
export interface GoldenAsteroidEntity {
|
||||
id: number;
|
||||
x: number;
|
||||
y: number;
|
||||
vx: number;
|
||||
vy: number;
|
||||
radius: number;
|
||||
rotation: number;
|
||||
jitter: number[];
|
||||
}
|
||||
|
||||
export interface Particle {
|
||||
x: number;
|
||||
y: number;
|
||||
vx: number;
|
||||
vy: number;
|
||||
life: number;
|
||||
maxLife: number;
|
||||
size: number;
|
||||
color: string;
|
||||
}
|
||||
|
||||
export interface FloatingText {
|
||||
x: number;
|
||||
y: number;
|
||||
vy: number;
|
||||
life: number;
|
||||
maxLife: number;
|
||||
text: string;
|
||||
color: string;
|
||||
}
|
||||
|
||||
export interface GameSnapshot {
|
||||
score: number;
|
||||
zone: number;
|
||||
crystalsInZone: number;
|
||||
crystalsRequired: number;
|
||||
darkMatter: number;
|
||||
bossActive: boolean;
|
||||
bossHp: number;
|
||||
bossMaxHp: number;
|
||||
pirateActive: boolean;
|
||||
pirateHp: number;
|
||||
pirateMaxHp: number;
|
||||
levels: Record<UpgradeKey, number>;
|
||||
costs: Record<UpgradeKey, number>;
|
||||
canAfford: Record<UpgradeKey, boolean>;
|
||||
droidCount: number;
|
||||
canPrestige: boolean;
|
||||
prestigeGain: number;
|
||||
cutsceneActive: boolean;
|
||||
}
|
||||
Reference in New Issue
Block a user