import { WORLD_SCALE } from '../../config.js'; // Hand-tuned profile: flat approach -> steep valley drop -> steep climb out -> // a long stretch of tight, fast bumps that punish sloppy lean control. function buildPoints() { const step = 60 * WORLD_SCALE; const points = []; for (let x = -200 * WORLD_SCALE; x <= 3900 * WORLD_SCALE; x += step) { let y; if (x < 1200 * WORLD_SCALE) { y = 420 * WORLD_SCALE + Math.sin(x / (500 * WORLD_SCALE)) * 10 * WORLD_SCALE; } else if (x < 1500 * WORLD_SCALE) { y = 420 * WORLD_SCALE + 220 * WORLD_SCALE * ((x - 1200 * WORLD_SCALE) / (300 * WORLD_SCALE)); } else if (x < 1650 * WORLD_SCALE) { y = 640 * WORLD_SCALE; } else if (x < 1950 * WORLD_SCALE) { y = 640 * WORLD_SCALE - 260 * WORLD_SCALE * ((x - 1650 * WORLD_SCALE) / (300 * WORLD_SCALE)); } else if (x < 3650 * WORLD_SCALE) { y = 380 * WORLD_SCALE + Math.sin(x / (150 * WORLD_SCALE)) * 45 * WORLD_SCALE; } else { y = 380 * WORLD_SCALE; } points.push({ x, y: Math.round(y) }); } return points; } const END_X = 3900 * WORLD_SCALE; export default { id: 'level03', name: 'Tight Squeeze', description: 'A steep valley and a long run of sharp bumps - lean early, lean often.', kidsAboard: 4, startPosition: { x: 100 * WORLD_SCALE, y: 350 * WORLD_SCALE }, startAngle: 0, terrain: [{ points: buildPoints() }], obstacles: [], goal: { x: END_X - 120 * WORLD_SCALE, y: 260 * WORLD_SCALE, width: 140 * WORLD_SCALE, height: 400 * WORLD_SCALE }, cameraBounds: { x: -300 * WORLD_SCALE, y: 0, width: END_X + 700 * WORLD_SCALE, height: 1000 * WORLD_SCALE }, };