// ------------------------------------------------------------------------ // lens-overlay.js - Returns an SVG string for the event overlay inside // the big ScopeReticle. // // Rendered INSIDE the lens clip path, BELOW the glass shine/shade layers. // cx, cy = lens centre coords; lensR = lens radius. // // To add a new overlay for an event: add another 'if (...)' block below // that matches by event.emoji or event.id and returns an SVG fragment // string. Return null when no overlay applies. // ------------------------------------------------------------------------ export function getLensOverlaySVG(event, cx, cy, lensR) { if (!event) return null; const id = event.id; if (event.emoji === '☄️') { return [ '', '', '', '', '', '', '', ].join(''); } if (id.includes('solar-eclipse')) { const cx_ = cx, cy_ = cy - 20; return '' + '' + '' + '' + '' + '' + ''; } if (id.includes('lunar-eclipse')) { const cx_ = cx, cy_ = cy - 30; return '' + '' + '' + '' + '' + '' + ''; } if (event.emoji === '🪐' && event.id.includes('conjunction')) { return '' + '' + ''; } if (event.emoji === '🔴') { return '' + '' + ''; } if (id === 'stargazing') { const pts = [[cx-50,cy-55,1.8],[cx+40,cy-65,1.4],[cx-20,cy-70,1.0],[cx+65,cy-40,1.6],[cx-60,cy-30,1.2],[cx+50,cy-55,1.0],[cx-35,cy-45,1.4],[cx+20,cy-50,1.8],[cx-75,cy-50,1.0]]; const dots = pts.map(function(s){return '';}).join(''); return '' + dots + ''; } if (id === 'perfect-sunset') { return '' + '' + '' + '' + '' + ''; } if (id === 'heat-spike') { return '' + '' + ''; } if (id === 'wet') { // Rain is now drawn continuously on the scope FX canvas; no static overlay. return null; } if (id === 'wind') { const wl = [-30,5,40].map(function(y){ return ''; }).join(''); return '' + wl + ''; } if (id === 'storm') { // Driving rain + lightning flashes are drawn on the FX canvas; keep just // the static forked bolt as the event signifier. const bolt = ''; return '' + bolt + ''; } if (id === 'frost') { const fc = [[-50,40],[0,55],[50,40],[-30,65],[30,65]].map(function(p){ var dx=p[0], dy=p[1]; return ''; }).join(''); return '' + fc + ''; } return null; }