51 lines
3.4 KiB
JavaScript
51 lines
3.4 KiB
JavaScript
// ─── Game rules ──────────────────────────────────────────────────────────────
|
||
const MAX_DOCKS = 6; // failed docks before game over
|
||
const NUM_ANCHORS = 6; // anchor points around the central molecule
|
||
const ANCHOR_RADIUS = 120; // px distance from center to anchor points
|
||
const CLICK_RADIUS = 38; // px hit radius for clicking an anchor
|
||
|
||
// ─── Spawn timing ────────────────────────────────────────────────────────────
|
||
const SPAWN_INTERVAL_START = 2500; // ms between spawns at the start
|
||
const SPAWN_INTERVAL_MIN = 700; // ms floor (fastest difficulty)
|
||
const SPAWN_DIFFICULTY_STEP = 18; // ms reduction per spawn
|
||
|
||
// ─── Incoming atom ───────────────────────────────────────────────────────────
|
||
const ATOM_SPEED_MIN = 1.4; // px/frame minimum
|
||
const ATOM_SPEED_MAX = 3.2; // px/frame maximum (min + random range)
|
||
const ATOM_RADIUS_MIN = 16; // px nucleus radius minimum
|
||
const ATOM_RADIUS_MAX = 24; // px nucleus radius maximum (min + random range)
|
||
const ATOM_HUE_MIN = 180; // hsl hue range start (blue-cyan)
|
||
const ATOM_HUE_RANGE = 60; // hsl hue range width
|
||
const ATOM_ELECTRON_SPEED_MIN = 0.05;
|
||
const ATOM_ELECTRON_SPEED_MAX = 0.08;
|
||
|
||
// ─── Particles ───────────────────────────────────────────────────────────────
|
||
const BURST_COUNT = 20; // particles per burst
|
||
const BURST_SPEED_MIN = 2;
|
||
const BURST_SPEED_MAX = 7;
|
||
const PARTICLE_DECAY_MIN = 0.022;
|
||
const PARTICLE_DECAY_MAX = 0.047;
|
||
const PARTICLE_RADIUS_MIN = 2;
|
||
const PARTICLE_RADIUS_MAX = 6;
|
||
|
||
// ─── Anchor block flash ───────────────────────────────────────────────────────
|
||
const BLOCK_TIMER_FRAMES = 20; // frames the green flash lasts after a block
|
||
|
||
// ─── Stars ───────────────────────────────────────────────────────────────────
|
||
const STAR_COUNT = 160;
|
||
const STAR_ALPHA_MIN = 0.15;
|
||
const STAR_ALPHA_RANGE = 0.55;
|
||
const STAR_RADIUS_MAX = 1.5;
|
||
|
||
// ─── Central nucleus ─────────────────────────────────────────────────────────
|
||
const NUCLEUS_RADIUS = 52; // px
|
||
const NUCLEUS_ORBITS = 3; // electron orbits to draw
|
||
|
||
// ─── Cystinstein indicator ────────────────────────────────────────────────────
|
||
const CYS_CENTER_X = 65; // px within the 130×130 side canvas
|
||
const CYS_CENTER_Y = 65;
|
||
const CYS_CORE_RADIUS = 14; // central atom radius
|
||
const CYS_DOCK_RADIUS = 28; // distance from center to docked atoms
|
||
const CYS_ATOM_RADIUS = 9; // docked atom radius
|
||
const CYS_RING_RADIUS = 48; // final danger ring radius
|