PageSourceSearch

https://paideia-lernwelt.web.app/assets/AbenteuerSeite-Bj9cPzzC.js

js paideia-lernwelt.web.app collected 2026-10-03 12:32:44 UTC 64,887 bytes, 1 lines download raw bytes

1import{j as a,r as S}from"./react-C_oDh_9Q.js";import{q as _t,r as Nt,t as Et,v as Tt,M as It,C as Ft}from"./App-CeP4ys-W.js";import{V as fe,s as $e,bd as At,u as Qe,J as et,n as Pt,$ as Rt,a_ as me,a as he,b6 as Lt}from"./index-CXZ0FFhB.js";import{b as tt}from"./wegfink-Bmd_7Aw-.js";import{V as We}from"./Bausteine-CQXJUdOq.js";import{a as Ct,I as O,b as ne,F as we,G as $t,g as Wt,S as nt,c as it,e as st,i as rt,d as at,o as Dt,f as ce,h as ke,k as de,j as ve,s as Fe,l as Bt,m as Ht,n as De,p as Gt,q as Kt,r as Be,t as He,u as Ge,w as Ut,v as Zt,A as Ot,x as Vt,y as qt,z as Xt,W as Jt,B as Yt,C as Qt,D as en,E as tn,H as nn,J as sn}from"./abenteuer-J4QdOMYT.js";import{u as rn}from"./useKindRuntimeReleaseContext-Cmeh4AQY.js";import{t as an}from"./planer-CbmCL4xo.js";import{u as ln}from"./runtime-JBB-ifg5.js";import{k as on}from"./tag-DpYbBve3.js";import"./_commonjsHelpers-CqkleIqs.js";import"./vorlade-helfer-BXl3LOEh.js";import"./curriculum-grundstufe-extra-BAWbnOGF.js";import"./aufgaben-CPrx1W14.js";import"./medien-freigaben-DbcdxLi9.js";import"./curriculum-englisch-DYuxcRuz.js";import"./dekodierung-CVi5RZBu.js";import"./vorleseText-B0dd3Qkr.js";import"./curriculum-oberstufe-HeR750uv.js";import"./ahsOberstufeMathematik-CiN81bI9.js";import"./curriculum-mathematik-pq8rPHRH.js";import"./curriculum-lesen-CRJcn6IE.js";import"./curriculum-sprache-E2iDaEPK.js";import"./curriculum-sachwissen-BHlJs3nn.js";import"./curriculum-lektionen-B_GDlKiN.js";import"./firebase-CZ1-EOTx.js";import"./learningResourceAuthorityClient-CdzDPkvE.js";import"./themenstraenge-Bou6eR06.js";import"./kompetenzstand-qZRm1kwc.js";import"./wiederholung-DnkmxCJ6.js";import"./rueckschritt-B51yuE8W.js";import"./logic-DJPWxEpk.js";import"./voraussetzungen-CEHsbvjD.js";import"./arbeitsniveauUntergrenze-CMXHp1tW.js";import"./altersschutz-BEGQKoxe.js";const Ke=66.667;function cn({stand:e,onInsel:i}){const n=Ct(e).insel,t=O.findIndex(h=>h.id===n),s=O.map(h=>[h.karte.x,h.karte.y/100*Ke]),r=s.slice(0,t+1).map(([h,o])=>`${h},${o}`).join(" "),c=s.slice(t).map(([h,o])=>`${h},${o}`).join(" ");return a.jsxs("div",{className:"abenteuer-inselkarte",children:[a.jsx("img",{src:ne("inselkarte"),alt:"Karte des Wolkenarchipels mit sechs Inseln",width:1536,height:1024,loading:"lazy"}),a.jsxs("svg",{viewBox:`0 0 100 ${Ke}`,preserveAspectRatio:"none","aria-hidden":"true",focusable:"false",children:[a.jsx("polyline",{points:c,className:"abenteuer-inselkarte__kommend"}),t>0?a.jsx("polyline",{points:r,className:"abenteuer-inselkarte__gefahren"}):null]}),a.jsx("ol",{className:"abenteuer-inselkarte__inseln",children:O.map((h,o)=>{const l=o<t||e.staffelFertig?"besucht":o===t?"jetzt":"kommt";return a.jsx("li",{style:{left:`${h.karte.x}%`,top:`${h.karte.y}%`},"data-zustand":l,children:a.jsxs("button",{type:"button",className:"abenteuer-inselkarte__insel",onClick:()=>i?.(h.id),"aria-current":l==="jetzt"?"location":void 0,children:[a.jsx("span",{className:"abenteuer-inselkarte__punkt","aria-hidden":"true"}),a.jsx("span",{className:"abenteuer-inselkarte__name",children:h.name}),a.jsx("span",{className:"visually-hidden",children:l==="jetzt"?", hier ist die Heureka gerade":l==="besucht"?", schon besucht":", liegt noch vor dir"})]})},h.id)})})]})}function Ue(e,i){if(e.art==="gold")return`Kommt mit deinem ${e.pokal}. Pokal aus dem Lernen.`;const n=e.episode?at(e.episode):void 0;if(!n)return"";const t=`Episode ${n.kapitel}.${n.nummer}`;if(st(n)>Dt(i))return"Liegt auf einer Strecke, die noch vor dir liegt.";if(e.art==="kompassteil")return`Wartet hinter dem Endgegner in ${t}.`;if(e.art==="versteckt"){const s=(e.lage?.hoehe??0)<.5?"ganz oben, zwischen den Felsen":"ganz unten, dicht über dem Wolkenmeer";return`Gut versteckt in ${t}. Schau ${s}.`}return`Liegt auf dem Weg in ${t}.`}function Ze({fund:e,gefunden:i,hinweis:n}){return a.jsxs("li",{className:"abenteuer-fund","data-gefunden":i?"ja":"nein","data-art":e.art,children:[a.jsx("img",{src:ne(e.bild),alt:i?e.name:"",width:160,height:160,loading:"lazy"}),a.jsxs("div",{children:[a.jsx("h4",{children:i?e.name:e.art==="gold"?"Goldenes Erinnerungsstück":"Noch nicht gefunden"}),i?a.jsxs(a.Fragment,{children:[a.jsx("p",{children:e.wissen}),a.jsx(fe,{text:`${e.name}. ${e.wissen}`,className:"leise-taste",nurZeichen:!0,label:`${e.name} vorlesen`})]}):a.jsx("p",{className:"abenteuer-fund__hinweis",children:n})]})]})}function hn({stand:e,pokale:i,insel:n,onInsel:t,onEpisode:s}){const r=S.useRef([]),c=O.find(m=>m.id===n)??O[0],h=we.filter(m=>m.insel===c.id),o=$t.filter(m=>m.insel===c.id),l=new Set(Wt(i).map(m=>m.id)),f=new Set(e.fundstuecke),b=nt.filter(m=>m.insel===c.id),k=h.filter(m=>f.has(m.id)).length,x=o.filter(m=>l.has(m.id)).length,w=it(e),D=m=>{const R=O.findIndex(C=>C.id===c.id);let _=-1;m.key==="ArrowRight"?_=(R+1)%O.length:m.key==="ArrowLeft"?_=(R-1+O.length)%O.length:m.key==="Home"?_=0:m.key==="End"&&(_=O.length-1),!(_<0)&&(m.preventDefault(),t(O[_].id),r.current[_]?.focus())};return a.jsxs("div",{className:"abenteuer-buch",children:[a.jsx("div",{className:"abenteuer-buch__reiter",role:"tablist","aria-label":"Inseln im Sammelbuch",onKeyDown:D,children:O.map((m,R)=>a.jsx("button",{ref:_=>{r.current[R]=_},type:"button",role:"tab",id:`abenteuer-reiter-${m.id}`,"aria-selected":m.id===c.id,"aria-controls":"abenteuer-buchseite",tabIndex:m.id===c.id?0:-1,onClick:()=>t(m.id),children:m.name.replace(/^(Die|Der) /,"")},m.id))}),a.jsxs("section",{id:"abenteuer-buchseite",role:"tabpanel","aria-labelledby":`abenteuer-reiter-${c.id}`,className:"abenteuer-buch__seite",children:[a.jsxs("header",{className:"abenteuer-buch__kopf",children:[a.jsxs("div",{children:[a.jsx("h3",{children:c.name}),a.jsx("p",{children:c.kurz})]}),a.jsxs("p",{className:"abenteuer-buch__zahl",children:[k," von ",h.length," Fundstücken · ",x," von ",o.length," goldenen"]})]}),a.jsxs("ul",{className:"abenteuer-buch__funde",children:[h.map(m=>a.jsx(Ze,{fund:m,gefunden:f.has(m.id),hinweis:Ue(m,e)}
1,m.id)),o.map(m=>a.jsx(Ze,{fund:m,gefunden:l.has(m.id),hinweis:Ue(m,e)},m.id))]}),a.jsx("h4",{className:"abenteuer-buch__unter",children:"Episoden auf dieser Insel"}),a.jsx("ol",{className:"abenteuer-buch__episoden",children:b.flatMap(m=>m.episoden).map(m=>{const R=st(m),_=rt(e,m.id),C=!e.staffelFertig&&R===w+1,H=m.fundstuecke.filter($=>we.some(G=>G.id===$)),q=H.filter($=>f.has($)).length;return a.jsxs("li",{"data-zustand":_?"geflogen":C?"jetzt":"kommt",children:[a.jsxs("span",{className:"abenteuer-buch__nr",children:[m.kapitel,".",m.nummer]}),a.jsx("span",{className:"abenteuer-buch__etitel",children:_||C?m.titel:"Noch nicht erzählt"}),a.jsx("span",{className:"abenteuer-buch__efunde",children:H.length===0?"Endgegner":`${q} von ${H.length} gefunden`}),_?a.jsx("button",{type:"button",className:"leise-taste",onClick:()=>s(m.id),children:"Noch einmal fliegen"}):C?a.jsx("button",{type:"button",className:"leise-taste",onClick:()=>s(m.id),children:"Als Nächstes"}):a.jsx("span",{className:"abenteuer-buch__zu",children:"kommt noch"})]},m.id)})})]})]})}function lt(e){let i=e>>>0;return()=>{i=i+1831565813>>>0;let n=i;return n=Math.imul(n^n>>>15,n|1),n^=n+Math.imul(n^n>>>7,n|61),((n^n>>>14)>>>0)/4294967296}}function ot(e){let i=2166136261;for(let n=0;n<e.length;n+=1)i^=e.charCodeAt(n),i=Math.imul(i,16777619);return i>>>0}function A(e,i,n){return i+(n-i)*e()}function ct(e,i){const n=[...e];for(let t=n.length-1;t>0;t-=1){const s=Math.floor(i()*(t+1));[n[t],n[s]]=[n[s],n[t]]}return n}const ht=26,un=110;function Ne(e,i){const n=e.trim();return n.length>0&&n.length<=i}function dn(e,i){const n=new Set([e.trim().toLocaleLowerCase("de")]),t=[];for(const s of i){const r=s.trim().toLocaleLowerCase("de");!Ne(s,ht)||n.has(r)||(n.add(r),t.push(s.trim()))}return t}function Ee(e){const i=[];for(const s of e.fragen)i.push({id:`f:${s.id}`,frage:s.frage,antwort:s.antwort,ablenker:s.ablenker,herkunft:s.herkunft});const n=e.wortpaare.map(s=>s.en),t=e.wortpaare.map(s=>s.de);e.wortpaare.forEach((s,r)=>{const c=r%2===0;i.push(c?{id:`w:${s.de}`,frage:`Was heißt „${s.de}“ auf Englisch?`,antwort:s.en,ablenker:n.filter(h=>h!==s.en),herkunft:s.herkunft}:{id:`w:${s.en}`,frage:`Was heißt „${s.en}“ auf Deutsch?`,antwort:s.de,ablenker:t.filter(h=>h!==s.de),herkunft:s.herkunft})});for(const s of e.artikelNomen)i.push({id:`a:${s.nomen}`,frage:`Welcher Artikel passt zu „${s.nomen}“?`,antwort:s.artikel,ablenker:["der","die","das"].filter(r=>r!==s.artikel),herkunft:s.herkunft});for(const s of e.silbenWoerter){const r=s.silben.length;if(r<1)continue;const c=[r+1,r-1,r+2].filter(h=>h>=1).map(String);i.push({id:`s:${s.wort}`,frage:`Wie viele Silben hat „${s.wort}“?`,antwort:String(r),ablenker:c,herkunft:s.herkunft})}return i.map(s=>({...s,ablenker:dn(s.antwort,s.ablenker)})).filter(s=>Ne(s.frage,un)&&Ne(s.antwort,ht)&&s.ablenker.length>=2)}function fn(e,i){const n=e.herkunft.quelle==="lektion"?0:2,t=i.includes(e.herkunft.fach)?0:1;return n+t}function gn(e,i,n){const t=ct(e.ablenker,i).slice(0,2),s=Math.floor(i()*3),r=[...t];return r.splice(s,0,e.antwort.trim()),{id:`${e.id}#${n}`,frage:e.frage,antworten:[r[0],r[1],r[2]],richtig:s,ausLektion:e.herkunft.quelle==="lektion",fach:e.herkunft.fach,einheitTitel:e.herkunft.einheitTitel}}function bn(e,i,n,t){const s=lt(t);let r=Ee(e);r.length<3&&(r=[...r,...Ee(mn)]);const c=ct(r,s).map((o,l)=>({kandidat:o,index:l,rang:fn(o,i.faecher)})).sort((o,l)=>o.rang-l.rang||o.index-l.index).map(o=>o.kandidat),h=[];for(let o=0;o<n;o+=1)h.push(gn(c[o%c.length],s,o));return h}function Oe(e){return Ee(e).some(i=>i.herkunft.quelle==="lektion")}const N=e=>({quelle:"grundstock",fach:e}),mn={fragen:[{id:"g-m1",frage:"Wie viel ist 7 + 5?",antwort:"12",ablenker:["11","13","75"],herkunft:N("Mathematik")},{id:"g-m2",frage:"Wie viel ist 20 − 8?",antwort:"12",ablenker:["28","14","10"],herkunft:N("Mathematik")},{id:"g-m3",frage:"Wie viel ist 6 · 4?",antwort:"24",ablenker:["10","20","26"],herkunft:N("Mathematik")},{id:"g-m4",frage:"Welche Zahl ist gerade?",antwort:"14",ablenker:["9","15","21"],herkunft:N("Mathematik")},{id:"g-m5",frage:"Wie viele Minuten hat eine Stunde?",antwort:"60",ablenker:["100","24","30"],herkunft:N("Mathematik")},{id:"g-m6",frage:"Die Hälfte von 18 ist …",antwort:"9",ablenker:["8","36","6"],herkunft:N("Mathematik")},{id:"g-s1",frage:"Wie viele Beine hat eine Spinne?",antwort:"8",ablenker:["6","4","10"],herkunft:N("Sachwissen")},{id:"g-s2",frage:"Welcher Planet ist der größte?",antwort:"Jupiter",ablenker:["Mars","Venus","Merkur"],herkunft:N("Sachwissen")},{id:"g-s3",frage:"Was brauchen Pflanzen zum Wachsen?",antwort:"Licht und Wasser",ablenker:["Sand und Salz","Nur Dunkelheit","Eis und Rauch"],herkunft:N("Sachwissen")},{id:"g-s4",frage:"Woraus besteht Messing?",antwort:"Kupfer und Zink",ablenker:["Eisen und Holz","Gold und Glas","Sand und Salz"],herkunft:N("Sachwissen")},{id:"g-s5",frage:"In welcher Jahreszeit fallen die Blätter?",antwort:"Herbst",ablenker:["Frühling","Sommer","Mittag"],herkunft:N("Sachwissen")},{id:"g-l1",frage:"Was reimt sich auf „Haus“?",antwort:"Maus",ablenker:["Hu
1nd","Haut","Hose"],herkunft:N("Lesen")},{id:"g-l2",frage:"Welches Wort beginnt mit „Sch“?",antwort:"Schiff",ablenker:["Stein","Fisch","Tisch"],herkunft:N("Lesen")},{id:"g-l3",frage:"Das Gegenteil von „hell“ ist …",antwort:"dunkel",ablenker:["hoch","laut","leicht"],herkunft:N("Sprache & Schreiben")},{id:"g-l4",frage:"Welches Wort ist ein Tunwort?",antwort:"fliegen",ablenker:["Vogel","blau","Himmel"],herkunft:N("Sprache & Schreiben")},{id:"g-l5",frage:"Wie schreibt man es richtig?",antwort:"Fahrrad",ablenker:["Farrad","Fahrad","Varrad"],herkunft:N("Sprache & Schreiben")}],wortpaare:[{de:"Baum",en:"tree",herkunft:N("Englisch")},{de:"Vogel",en:"bird",herkunft:N("Englisch")},{de:"Himmel",en:"sky",herkunft:N("Englisch")},{de:"Schiff",en:"ship",herkunft:N("Englisch")},{de:"Stern",en:"star",herkunft:N("Englisch")},{de:"Wolke",en:"cloud",herkunft:N("Englisch")}],artikelNomen:[{nomen:"Brücke",artikel:"die",herkunft:N("Sprache & Schreiben")},{nomen:"Schiff",artikel:"das",herkunft:N("Sprache & Schreiben")},{nomen:"Wind",artikel:"der",herkunft:N("Sprache & Schreiben")},{nomen:"Insel",artikel:"die",herkunft:N("Sprache & Schreiben")}],silbenWoerter:[{wort:"Laterne",silben:["La","ter","ne"],herkunft:N("Lesen")},{wort:"Kompass",silben:["Kom","pass"],herkunft:N("Lesen")},{wort:"Luftschiff",silben:["Luft","schiff"],herkunft:N("Lesen")}]},p={breite:960,hoehe:540},V=220,v=50,E=490,te=22,Te={normal:{tempo:180,auftrieb:1500,schwere:950,steigMax:380,sinkMax:330},ruhig:{tempo:140,auftrieb:1150,schwere:720,steigMax:280,sinkMax:240}},ut=300,dt=900,kn=760,pn=.78,Y={rueckenwindStoss:{faktor:2.1,dauer:.55},rueckenwind:{faktor:1.35,dauer:2.4},falschesTor:{faktor:.55,dauer:1.3},treffer:{faktor:.7,dauer:1},unverwundbar:1.4},xn=3,wn=720,Ve=650;function zn(e){return v+e*(E-v)}function yn(e,i){const n=lt(ot(e.id)),t=Math.round(e.flugSekunden*Te.normal.tempo),s=!!e.endgegner,r=s?[Math.round(t/3),Math.round(2*t/3),t]:[Math.round(t*.25),Math.round(t*.5),Math.round(t*.75)],c=new Set(e.zutaten),h=c.has("nebel"),o=c.has("nacht"),l=Math.max(4,Math.round(t/3800)),f=2600,b=t-(s?1400:1900),k=[];for(let d=0;d<l;d+=1){const u=f+(b-f)*d/(l-1);k.push(Math.round(u+A(n,-220,220)))}for(let d=0;d<r.length;d+=1){if(s&&d===2)continue;const u=k.find(g=>Math.abs(g-r[d])<500);u!==void 0&&(r[d]=u+Ve+60)}const x=[[0,900],...k.map(d=>[d-wn,d+Ve]),...r.map(d=>[d-170,d+170]),[t-260,t+5e3]],w=[],D=[];for(const d of e.fundstuecke){const u=ce(d);if(!u?.lage)continue;let g=Math.round(u.lage.anteil*t);for(let P=0;P<6;P+=1){const W=x.find(([B,K])=>B>0&&g>=B-140&&g<=K+140);if(!W)break;g=W[1]+420}const z=zn(u.lage.hoehe),y=u.art==="versteckt";if(D.push({fundId:d,x:g,y:z,versteckt:y}),y){const W=u.lage.hoehe<.5?1:-1;for(const B of[-72,72])w.push({art:"fels",x:g+B,y:z+W*96,r:48,hub:0,periode:1,phase:0});w.push({art:"wolke",x:g-300,y:z+W*60,r:46,hub:0,periode:1,phase:0}),e.kapitel>=3&&w.push({art:"kraehe",x:g+300,y:z+W*40,r:20,hub:36,periode:2.4,phase:n()*Math.PI*2})}x.push([g-360,g+360])}const m=(560-12*(e.kapitel-1)-28*(e.nummer-1))*(h||o?1.12:1);let R=1e3;for(;R<t-260;){const d=x.find(([u,g])=>R>=u&&R<=g);if(d){R=d[1]+60;continue}if(e.kapitel>=4&&n()<.22){const u=A(n,v+110,E-110),g=A(n,34,46),z=u-90-g,y=u+90+g;z>v-g&&w.push({art:"fels",x:R,y:z,r:g,hub:0,periode:1,phase:0}),y<E+g&&w.push({art:"fels",x:R,y,r:g,hub:0,periode:1,phase:0})}else{const u=n(),g=u<.28?"kraehe":u<.63?"wolke":"fels",z=g==="kraehe"?20:g==="wolke"?A(n,38,54):A(n,34,50),y=g==="kraehe"?A(n,40,90):0,P=A(n,v+20+y,E-10-y);w.push({art:g,x:R,y:P,r:z,hub:y,periode:A(n,2.2,3.6),phase:n()*Math.PI*2})}R+=A(n,m*.75,m*1.25)}const _=[],C=(d,u)=>!x.some(([g,z])=>u>=g&&d<=z),H=e.nummer===1?.8:1;if(c.has("boeen"))for(let d=1500;d<t-600;d+=A(n,1400,2e3)){const u=A(n,260,420);if(!C(d,d+u))continue;const g=(n()<.5?-1:1)*A(n,750,1150)*H;_.push({art:"boe",x0:d,x1:d+u,kraft:g})}if(c.has("stroemung"))for(let d=1300;d<t-1400;d+=A(n,2200,3e3)){const u=A(n,900,1400);C(d,d+u)&&_.push({art:"stroemung",x0:d,x1:d+u,y:A(n,150,390),breite:150,kraft:(n()<.5?-1:1)*A(n,500,760)*H})}if(c.has("magnet"))for(let d=1400;d<t-500;d+=A(n,1300,1800)){if(!C(d-260,d+260))continue;const g=n()<.5?v-8:E+8;
1_.push({art:"magnet",x:d,y:g,staerke:A(n,900,1350)*H,reichweite:250}),w.push({art:"magnet",x:d,y:g,r:32,hub:0,periode:1,phase:0})}if(c.has("blitze"))for(let d=1300;d<t-500;d+=A(n,1200,1700))C(d-60,d+60)&&_.push({art:"blitz",x:d,yBis:A(n,210,320),periode:3,phase:n()*3});const q=w.filter(d=>d.art==="magnet"||!_.some(u=>u.art==="magnet"&&Math.abs(u.x-d.x)<110&&d.art!=="fels"||u.art==="blitz"&&Math.abs(u.x-d.x)<90));q.sort((d,u)=>d.x-u.x);const $=[],G=(d,u)=>q.some(g=>{const z=g.r+g.hub+26;return Math.abs(g.x-d)<z&&Math.abs(g.y-u)<z})||k.some(g=>Math.abs(g-d)<130);for(let d=700;d<t-200;d+=A(n,520,780)){const u=n(),g=A(n,v+40,E-40),z=[];for(let y=0;y<6;y+=1){const P=d+y*40,W=u<.4?g:u<.75?g-Math.sin(y/5*Math.PI)*60:g+Math.sin(y/5*Math.PI*2)*40;z.push([P,Math.min(E-6,Math.max(v+6,W))])}for(const[y,P]of z)G(y,P)||$.push({art:"zahnrad",x:y,y:P})}const Q=q.filter(d=>d.art==="wolke"||d.art==="fels"),J=Math.min(8,Q.length);for(let d=0;d<J;d+=1){const u=Q[Math.floor((d+.5)/J*Q.length)],g=u.y-u.r-te-16,z=u.y+u.r+te+16,y=g>v+10?g:z;y<E-10&&$.push({art:"funke",x:u.x,y})}$.sort((d,u)=>d.x-u.x);const ae=e.fundstuecke.find(d=>ce(d)?.art==="kompassteil")??null;return{episodeId:e.id,insel:i.id,laenge:t,kontrollpunkte:r,hindernisse:q,sammeldinge:$,funde:D,tore:k,zone
1n:_,endgegner:e.endgegner?.art??null,kompassteil:ae,nebel:h,nacht:o,begleiter:e.begleiter??null}}function ft(e){const i=(E-v)/3;return e<v+i?0:e<v+2*i?1:2}function Sn(e){const i=(E-v)/3;return v+i*(e+.5)}function qe(e){const{level:i}=e,n=e.ruhig??!1,t=Math.max(0,Math.min(3,e.startAbschnitt??0)),s=t>0?i.kontrollpunkte[t-1]+12:0,r=e.fragen.slice(0,i.tore.length),c=i.tore.map((h,o)=>({x:h,frage:r[o%Math.max(1,r.length)],endgegner:!1,angekuendigt:!1,ergebnis:"offen"})).filter(h=>h.frage!==void 0&&h.x>s);return{level:i,werte:n?Te.ruhig:Te.normal,ruhig:n,zeit:0,zeitLimit:e.zeitLimit??ut,x:s,y:(v+E)/2,vy:0,unverwundbarBis:1.2,autopilot:null,wirkungen:[],gesammelt:new Uint8Array(i.sammeldinge.length),zahnraeder:0,funken:0,bekannteFunde:new Set(e.bekannteFunde??[]),gefunden:[],tore:c,reserveFragen:e.fragen.slice(i.tore.length),richtig:0,richtigAusLektion:0,falsch:0,abschnitt:t,treffer:0,endgegner:null,status:"fliegt",letzterTreffer:-10}}function vn(e){return e.x-V}function gt(e,i){return e.hub===0?e.y:e.y+e.hub*Math.sin(2*Math.PI*i/e.periode+e.phase)}function bt(e,i){const n=((i+e.phase)%e.periode+e.periode)%e.periode;return n>=e.periode-.4?"einschlag":n>=e.periode-1.3?"flackern":"ruhe"}function jn(e){let i=1;for(const t of e.wirkungen)t.bis>e.zeit&&(i*=t.faktor);const n=Mn(e);n&&n.x-e.x<kn&&n.x>e.x&&(i*=pn);for(const t of e.level.zonen)t.art==="stroemung"&&e.x>=t.x0&&e.x<=t.x1&&Math.abs(e.y-t.y)<t.breite/2&&(i*=1.15);return Math.max(.4,Math.min(2.4,i))}function Mn(e){return e.tore.find(i=>i.ergebnis==="offen")}function _n(e){let i=0;for(const n of e.level.zonen)if(n.art==="boe"&&e.x>=n.x0&&e.x<=n.x1)i+=n.kraft;else if(n.art==="stroemung"&&e.x>=n.x0&&e.x<=n.x1&&Math.abs(e.y-n.y)<n.breite/2)i+=n.kraft;else if(n.art==="magnet"){const t=n.x-e.x,s=n.y-e.y,r=Math.hypot(t,s);r<n.reichweite&&r>1&&(i+=n.staerke*(1-r/n.reichweite)*Math.sign(s))}return i}function Nn(e,i,n,t,s){const r=(i?-t.auftrieb:t.schwere)+n;let c=e.vy+r*s;c=Math.max(-t.steigMax,Math.min(t.sinkMax,c));let h=e.y+c*s,o=!1;return h<v&&(h=v,c=Math.max(0,c)),h>E&&(h=E,c=-Math.min(260,Math.abs(c)*.5+140),o=!0),{y:h,vy:c,aufgesetzt:o}}function pe(e,i,n,t,s,r){const c=e-t,h=i-s,o=n+r;return c*c+h*h<o*o}function En(e,i){const n=Sn(i),t=Math.max(-e.werte.steigMax,Math.min(e.werte.sinkMax,(n-e.y)*3));return e.vy>t}function xe(e,i,n){e.wirkungen=e.wirkungen.filter(t=>t.bis>e.zeit),e.wirkungen.push({faktor:i,bis:e.zeit+n})}function Ie(e,i,n){e.treffer+=1,e.letzterTreffer=e.zeit,e.unverwundbarBis=e.zeit+Y.unverwundbar,e.zahnraeder=Math.max(0,e.zahnraeder-xn),e.vy=n?200:-200,xe(e,Y.treffer.faktor,Y.treffer.dauer),i.push({art:"treffer"})}function Tn(e,i,n){const t=ft(e.y)===i.frage.richtig;i.ergebnis=t?"richtig":"falsch",t?(e.richtig+=1,i.frage.ausLektion&&(e.richtigAusLektion+=1),xe(e,Y.rueckenwindStoss.faktor,Y.rueckenwindStoss.dauer),xe(e,Y.rueckenwind.faktor,Y.rueckenwind.dauer)):(e.falsch+=1,xe(e,Y.falschesTor.faktor,Y.falschesTor.dauer)),e.autopilot=null,n.push({art:"tor",richtig:t,frage:i.frage})}function In(e){const i=e.reserveFragen.shift();if(i)return i;const n=e.tore.map(r=>r.frage);if(n.length===0)return;const t=n[(e.richtig+e.falsch)%n.length],s=[t.antworten[2],t.antworten[0],t.antworten[1]];return{...t,id:`${t.id}+`,antworten:s,richtig:(t.richtig+1)%3}}const oe=760,Fn=46,mt=760,Ae=170;function An(e,i,n){e.endgegner={art:i,phase:"kampf",erfolge:0,t:0,x:oe,y:(v+E)/2,sturz:null,ruheBis:1.5,wandX:e.x+mt,lueckeHoehe:(v+E)/2,besiegtAm:0},i==="raetselkette"&&kt(e),n.push({art:"endgegner-start"})}function kt(e){const i=In(e);i&&e.tore.push({x:e.x+dt+150,frage:i,endgegner:!0,angekuendigt:!1,ergebnis:"offen"})}function Pn(e,i){const n=(v+E)/2,t=(E-v)/2-Ae/2-10,s=(i?.7:1)*(.9+e.erfolge*.15);return n+t*Math.sin(e.t*s)}const je=Ae;function Rn(e,i,n){const t=e.endgegner;if(!t||t.phase!=="kampf")return;t.t+=i;const s=(v+E)/2;if(t.art==="verfolgen"){const r=e.ruhig?.75:1;if(!t.sturz)t.x+=(oe-t.x)*Math.min(1,i*3),t.y=s+150*Math.sin(t.t*1.3*r),t.t>t.ruheBis&&(t.sturz={start:t.t,hoehe:t.y});else{const c=t.t-t.sturz.start,h=.6/r,o=.9/r,l=.8;t.y+=(t.sturz.hoehe-t.y)*Math.min(1,i*6),c<h?t.x=oe:c<h+o?t.x=oe-(oe-V-20)*((c-h)/o):c<h+o+l?t.x=V+20:(t.sturz=null,t.ruheBis=t.t+1.6,n.push({art:"endgegner-daneben"})),t.sturz&&pe(V,e.y,te,t.x,t.y,Fn)&&(t.erfolge+=1,t.sturz=null,t.ruheBis=t.t+1.4,t.x=oe-120,n.push({art:"endgegner-treffer",erfolge:t.erfolge}))}}else if(t.art==="durchflug")t.lueckeHoehe=Pn(t,e.ruhig),e.x>=t.wandX&&(Math.abs(e.y-t.lueckeHoehe)<=Ae/2-te*.4?(t.erfolge+=1,n.push({art:"endgegner-treffer",erfolge:t.erfolge})):(Ie(e,n,e.y<t.lueckeHoehe),n.push({art:"endgegner-daneben"})),t.wandX=e.x+mt);else{const r=e.tore.filter(c=>c.endgegner&&c.ergebnis==="richtig").length;r>t.erfolge&&(t.erfolge=r,n.push({art:"endgegner-treffer",erfolge:r})),t.erfolge<3&&!e.tore.some(c=>
1c.endgegner&&c.ergebnis==="offen")&&kt(e)}t.erfolge>=3&&(t.phase="besiegt",t.besiegtAm=e.zeit,n.push({art:"endgegner-besiegt"}),e.level.kompassteil&&!e.bekannteFunde.has(e.level.kompassteil)&&!e.gefunden.includes(e.level.kompassteil)&&(e.gefunden.push(e.level.kompassteil),n.push({art:"fund",fundId:e.level.kompassteil})))}function Ln(e,i,n){const t=[];if(e.status!=="fliegt")return t;const s=Math.max(0,Math.min(.05,n));e.zeit+=s;const r=i.hoch||e.autopilot!==null&&En(e,e.autopilot);i.hoch&&(e.autopilot=null);const c=Nn(e,r,_n(e),e.werte,s);e.y=c.y,e.vy=c.vy,c.aufgesetzt&&t.push({art:"wolkenmeer"});const h=e.x;e.x+=e.werte.tempo*jn(e)*s;for(const l of e.tore)l.ergebnis==="offen"&&(!l.angekuendigt&&l.x-e.x<=dt&&(l.angekuendigt=!0,t.push({art:"frage",frage:l.frage})),h<l.x&&e.x>=l.x&&Tn(e,l,t));e.level.kontrollpunkte.forEach((l,f)=>{e.abschnitt<f+1&&e.x>=l&&(e.abschnitt=f+1,t.push({art:"kontrollpunkt",abschnitt:f+1}))});const o=e.level.sammeldinge;for(let l=0;l<o.length;l+=1){const f=o[l];if(!(f.x<e.x-60)){if(f.x>e.x+60)break;e.gesammelt[l]||pe(e.x,e.y,te+6,f.x,f.y,f.art==="funke"?12:11)&&(e.gesammelt[l]=1,f.art==="zahnrad"?(e.zahnraeder+=1,t.push({art:"zahnrad"})):(e.funken+=1,t.push({art:"funke"})))}}for(const l of e.level.funde)e.bekannteFunde.has(l.fundId)||e.gefunden.includes(l.fundId)||pe(e.x,e.y,te+8,l.x,l.y,20)&&(e.gefunden.push(l.fundId),t.push({art:"fund",fundId:l.fundId}));if(e.zeit>=e.unverwundbarBis)for(const l of e.level.hindernisse){if(l.x<e.x-120)continue;if(l.x>e.x+120)break;const f=gt(l,e.zeit);if(pe(e.x,e.y,te-4,l.x,f,l.r-4)){Ie(e,t,e.y<f);break}}if(e.zeit>=e.unverwundbarBis){for(const l of e.level.zonen)if(!(l.art!=="blitz"||Math.abs(l.x-e.x)>20)&&e.y-te<l.yBis&&bt(l,e.zeit)==="einschlag"){Ie(e,t,!1);break}}if(e.x>=e.level.laenge){if(!e.level.endgegner)return e.status="ziel",t.push({art:"ziel"}),t;e.endgegner||An(e,e.level.endgegner,t)}return e.endgegner&&(Rn(e,s,t),e.endgegner.phase==="besiegt"&&e.zeit-e.endgegner.besiegtAm>1.6)?(e.status="ziel",t.push({art:"ziel"}),t):(e.zeit>=e.zeitLimit&&(e.status="zeit",t.push({art:"zeit"})),t)}function Cn(e,i=!1){return{status:i?"abbruch":e.status==="ziel"?"ziel":"zeit",zahnraeder:e.zahnraeder,funken:e.funken,gefunden:[...e.gefunden],richtig:e.richtig,richtigAusLektion:e.richtigAusLektion,falsch:e.falsch,abschnitt:e.abschnitt,nochmal:e.tore.filter(n=>n.ergebnis==="falsch").map(n=>({frage:n.frage.frage,antwort:n.frage.antworten[n.frage.richtig]}))}}const pt="heureka.abenteuer.stumm";function xt(){try{return window.localStorage.getItem(pt)==="1"}catch{return!1}}function $n(e){try{window.localStorage.setItem(pt,e?"1":"0")}catch{}}const Wn={zahnrad:[[1320,0,.07,"triangle",.08]],funke:[[988,0,.08,"sine",.1],[1480,.06,.12,"sine",.09]],fund:[[784,0,.14,"triangle",.12],[988,.1,.14,"triangle",.12],[1319,.2,.3,"triangle",.12]],treffer:[[140,0,.18,"sawtooth",.07],[90,.05,.2,"sine",.1]],richtig:[[523,0,.1,"triangle",.12],[659,.08,.1,"triangle",.12],[784,.16,.22,"triangle",.12]],falsch:[[392,0,.14,"sine",.09],[330,.12,.2,"sine",.08]],leuchtfeuer:[[660,0,.5,"sine",.08],[990,0,.5,"sine",.04]],gegner:[[440,0,.1,"square",.05],[660,.08,.16,"triangle",.1]],ziel:[[523,0,.14,"triangle",.12],[659,.12,.14,"triangle",.12],[784,.24,.14,"triangle",.12],[1047,.36,.4,"triangle",.12]],wolke:[[220,0,.1,"sine",.05]]};class Dn{kontext=null;stumm;constructor(i=xt()){this.stumm=i}sicherKontext(){if(this.kontext)return this.kontext;const i=typeof window<"u"?window.AudioContext??window.webkitAudioContext:void 0;if(!i)return null;try{this.kontext=new i}catch{this.kontext=null}return this.kontext}wecke(){const i=this.sicherKontext();i?.state==="suspended"&&i.resume()}spiele(i){if(this.stumm)return;const n=this.sicherKontext();if(!n)return;const t=n.currentTime;for(const[s,r,c,h="sine",o=.1]of Wn[i]){const l=n.createOscillator(),f=n.createGain();l.type=h,l.frequency.setValueAtTime(s,t+r),f.gain.setValueAtTime(1e-4,t+r),f.gain.exponentialRampToValueAtTime(o,t+r+.012),f.gain.exponentialRampToValueAtTime(1e-4,t+r+c),l.connect(f).connect(n.destination),l.start(t+r),l.stop(t+r+c+.05)}}beenden(){this.kontext?.close().catch(()=>{}),this.kontext=null}}const Bn='"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',be="#b08d3e",X="#8f6f28",Me="#0e6e73",Hn="#101f26",ue="#e0b54a";
1function ie(e){return!!(e&&e.complete&&e.naturalWidth>0)}function se(e,i,n){const t=document.createElement("canvas");t.width=Math.ceil(e),t.height=Math.ceil(i);const s=t.getContext("2d");return s&&n(s),t}function Gn(e,i,n,t,s){e.beginPath();for(let r=0;r<s*2;r+=1){const c=r/(s*2)*Math.PI*2,h=r%2===0?t:t*.78,o=c-Math.PI/(s*2),l=c+Math.PI/(s*2);e.lineTo(i+Math.cos(o)*h,n+Math.sin(o)*h),e.lineTo(i+Math.cos(l)*h,n+Math.sin(l)*h)}e.closePath()}class Xe{constructor(i,n,t,s,r){this.leinwand=i,this.level=n,this.insel=t,this.bilder=s,this.ruhig=r;const c=i.getContext("2d");if(!c)throw new Error("Keine Zeichenfläche");this.ctx=c;const{fels:h}=t.farben;this.zahnrad=se(28,28,o=>{Gn(o,14,14,13,8),o.fillStyle=be,o.fill(),o.lineWidth=1.5,o.strokeStyle=X,o.stroke(),o.beginPath(),o.arc(14,14,4,0,Math.PI*2),o.fillStyle="#f4ead2",o.fill()}),this.funke=se(34,34,o=>{const l=o.createRadialGradient(17,17,1,17,17,17);l.addColorStop(0,"rgba(255,248,220,1)"),l.addColorStop(.35,"rgba(224,181,74,0.9)"),l.addColorStop(1,"rgba(224,181,74,0)"),o.fillStyle=l,o.fillRect(0,0,34,34),o.beginPath();for(let f=0;f<8;f+=1){const b=f%2===0?12:4,k=f/8*Math.PI*2-Math.PI/2;o.lineTo(17+Math.cos(k)*b,17+Math.sin(k)*b)}o.closePath(),o.fillStyle="#fff6d8",o.fill()}),this.wolkenmeer=se(p.breite,90,o=>{o.fillStyle="rgba(255,255,255,0.92)";for(let l=-40;l<p.breite+60;l+=70){const f=38+l*37%23;o.beginPath(),o.arc(l,52+l*13%11,f,0,Math.PI*2),o.fill()}o.fillRect(0,60,p.breite,30)}),this.ferne=se(p.breite*2,200,o=>{o.fillStyle=h,o.globalAlpha=.22;for(let l=60;l<p.breite*2;l+=330){const f=140+l*7%90;o.beginPath(),o.ellipse(l,120,f,26,0,0,Math.PI*2),o.fill(),o.beginPath(),o.moveTo(l-f*.7,120),o.quadraticCurveTo(l,190,l+f*.7,120),o.fill()}}),this.felsen=[0,1,2].map(o=>se(120,120,l=>{l.translate(60,60);const f=[0,5,-3,6,-2,4,0].map(k=>k*(1+o*.3));l.beginPath(),l.moveTo(-52,-18),f.forEach((k,x)=>l.lineTo(-52+104*(x+1)/(f.length+1),-30-k)),l.lineTo(52,-18),l.lineTo(44,6),l.lineTo(26,26+o*3),l.lineTo(10,52),l.lineTo(-2,40),l.lineTo(-18,30),l.lineTo(-40,10),l.closePath();const b=l.createLinearGradient(0,-30,0,52);b.addColorStop(0,h),b.addColorStop(1,"#241c16"),l.fillStyle=b,l.fill(),l.strokeStyle="rgba(0,0,0,0.3)",l.lineWidth=2.5,l.stroke(),l.fillStyle="#6f8f4e",l.beginPath(),l.moveTo(-52,-18),f.forEach((k,x)=>l.lineTo(-52+104*(x+1)/(f.length+1),-32-k)),l.lineTo(52,-18),l.quadraticCurveTo(0,-8,-52,-18),l.fill(),l.strokeStyle="rgba(255,255,255,0.18)",l.lineWidth=2,l.beginPath(),l.moveTo(-26,-4),l.lineTo(-12,14),l.moveTo(18,-6),l.lineTo(10,18),l.stroke()})),this.wolke=se(140,110,o=>{const l=o.createLinearGradient(0,10,0,100);l.addColorStop(0,"#6d7684"),l.addColorStop(1,"#3f4652"),o.fillStyle=l;for(const[f,b,k]of[[40,62,30],[70,46,36],[100,62,30],[70,72,34]])o.beginPath(),o.arc(f,b,k,0,Math.PI*2),o.fill();o.fillStyle="rgba(255,255,255,0.14)",o.beginPath(),o.arc(62,38,18,0,Math.PI*2),o.fill()}),this.dunkel=se(p.breite,p.hoehe,()=>{})}leinwand;level;insel;bilder;ruhig;ctx;zahnrad;funke;wolkenmeer;ferne;felsen;wolke;dunkel;funkeln=[];blitzScheinBis=0;passeGroesseAn(i){const n=Math.min(2,typeof window<"u"&&window.devicePixelRatio||1),t=Math.max(320,Math.round(i*n)),s=Math.round(t*p.hoehe/p.breite);(this.leinwand.width!==t||this.leinwand.height!==s)&&(this.leinwand.width=t,this.leinwand.height=s)}funkenBei(i,n,t,s=8){if(this.ruhig)return;const r=performance.now()/1e3;for(let c=0;c<s;c+=1){const h=c/s*Math.PI*2;this.funkeln.push({x:i,y:n,vx:Math.cos(h)*120,vy:Math.sin(h)*120,bis:r+.45,farbe:t})}this.funkeln.length>120&&this.funkeln.splice(0,this.funkeln.length-120)}blitzSchein(){this.ruhig||(this.blitzScheinBis=performance.now()/1e3+.09)}zeichne(i,n){const{ctx:t,level:s}
1=this,r=this.leinwand.width/p.breite,c=vn(i),h=performance.now()/1e3;t.setTransform(r,0,0,r,0,0);const o=!this.ruhig&&i.zeit-i.letzterTreffer<.25?(Math.random()-.5)*8:0;t.translate(o,o*.5),this.zeichneHimmel(c),this.zeichneZonen(i,c),this.zeichneBegleiter(i),this.zeichneSammeldinge(i,c,h),this.zeichneFunde(i,c,h),this.zeichneHindernisse(i,c,h),this.zeichneSchiff(i,h),t.drawImage(this.wolkenmeer,-(c*(this.ruhig?0:1)%p.breite),p.hoehe-70),t.drawImage(this.wolkenmeer,p.breite-c*(this.ruhig?0:1)%p.breite,p.hoehe-70),s.nebel&&this.zeichneNebel(),s.nacht&&this.zeichneNacht(i),s.nacht&&(this.zeichneSammeldinge(i,c,h,!0),this.zeichneFunde(i,c,h)),this.zeichneGegner(i,c,h),this.zeichneKontrollpunkte(i,c,h),this.zeichneTore(i,c),this.zeichneZiel(c),this.zeichneFunkeln(n,h),h<this.blitzScheinBis&&(t.fillStyle="rgba(255,255,255,0.35)",t.fillRect(0,0,p.breite,p.hoehe)),t.setTransform(1,0,0,1,0,0)}zeichneHimmel(i){const{ctx:n,insel:t,level:s}=this,r=n.createLinearGradient(0,0,0,p.hoehe);r.addColorStop(0,s.nacht?"#0b1830":t.farben.oben),r.addColorStop(1,s.nacht?"#23355c":t.farben.unten),n.fillStyle=r,n.fillRect(-10,-10,p.breite+20,p.hoehe+20);const c=this.bilder.himmel;if(ie(c)){const o=p.hoehe,l=c.naturalWidth/c.naturalHeight*o,f=this.ruhig?0:i*.06;let b=Math.floor(f/l);for(let k=b*l-f;k<p.breite;k+=l,b+=1)b%2===0?n.drawImage(c,k,0,l+1,o):(n.save(),n.translate(k+l,0),n.scale(-1,1),n.drawImage(c,-1,0,l+1,o),n.restore());return}if(s.nacht){n.fillStyle="rgba(255,248,220,0.8)";for(let o=0;o<60;o+=1){const l=((o*157-i*.03)%p.breite+p.breite)%p.breite,f=o*71%330;n.fillRect(l,f,2,2)}}const h=this.ruhig?0:i*.18%this.ferne.width;n.drawImage(this.ferne,-h,p.hoehe-260),this.ferne.width-h<p.breite&&n.drawImage(this.ferne,this.ferne.width-h,p.hoehe-260)}zeichneZonen(i,n){const{ctx:t}=this;for(const s of this.level.zonen)if(s.art==="boe"||s.art==="stroemung"){const r=s.x0-n,c=s.x1-n;if(c<-20||r>p.breite+20)continue;const h=s.kraft<0,o=s.art==="boe"?v-30:s.y-s.breite/2,l=s.art==="boe"?E+30:s.y+s.breite/2;t.fillStyle=s.art==="boe"?"rgba(255,255,255,0.10)":"rgba(14,110,115,0.14)",t.fillRect(r,o,c-r,l-o),t.strokeStyle=s.art==="boe"?"rgba(255,255,255,0.7)":"rgba(14,110,115,0.6)",t.lineWidth=2.5;const f=this.ruhig?0:i.zeit*90%60;for(let b=r+20;b<c-10;b+=46)for(let k=o+10;k<l;k+=60){const x=h?l-(k-o+f)%(l-o):o+(k-o+f)%(l-o);t.beginPath(),t.moveTo(b,x),t.lineTo(b,x+(h?-18:18)),t.lineTo(b-6,x+(h?-10:10)),t.moveTo(b,x+(h?-18:18)),t.lineTo(b+6,x+(h?-10:10)),t.stroke()}}else if(s.art==="magnet"){const r=s.x-n;if(r<-300||r>p.breite+300)continue;const c=this.ruhig?.5:.5+.5*Math.sin(i.zeit*4);t.strokeStyle=`rgba(217,121,74,${.25+c*.25})`,t.lineWidth=2;for(const h of[90,160,230])t.beginPath(),t.arc(r,s.y,h,0,Math.PI*2),t.stroke()}else if(s.art==="blitz"){const r=s.x-n;if(r<-80||r>p.breite+80)continue;const c=bt(s,i.zeit);if(t.drawImage(this.wolke,r-70,v-80),c==="flackern")t.strokeStyle=Math.floor(i.zeit*12)%2===0?"rgba(255,240,170,0.9)":"rgba(255,240,170,0.25)",t.setLineDash([6,8]),t.lineWidth=3,t.beginPath(),t.moveTo(r,v-20),t.lineTo(r,s.yBis),t.stroke(),t.setLineDash([]);else if(c==="einschlag"){t.strokeStyle="#fff6c8",t.lineWidth=7,t.shadowColor="#ffe27a",t.shadowBlur=this.ruhig?0:18,t.beginPath(),t.moveTo(r,v-20);const h=6;for(let o=1;o<=h;o+=1){const l=v-20+(s.yBis-v+20)*o/h;t.lineTo(r+(o%2===0?-14:14),l)}t.stroke(),t.shadowBlur=0,Math.abs(r-V)<300&&this.blitzSchein()}}}zeichneBegleiter(i){if(!this.level.begleiter)return;const{ctx:n}=this,t=120+Math.sin(i.zeit*.9)*(this.ruhig?6:18),s=560+Math.sin(i.zeit*.3)*(this.ruhig?10:40);n.globalAlpha=.75;const r=this.level.begleiter==="rostkraehe"?this.bilder.begleiter:this.bilder.kraehe;if(ie(r)){const c=this.level.begleiter==="rostkraehe"?120:56;n.drawImage(r,s-c/2,t-c/2,c,c)}else this.level.begleiter==="rostkraehe"?(n.fillStyle="#9b4a2a",n.beginPath(),n.ellipse(s,t,52,22,0,0,Math.PI*2),n.fill(),n.fillStyle="#5e2d1a",n.fillRect(s-26,t+24,52,14)):this.zeichneKraeheForm(s,t,18,i.zeit);n.globalAlpha=1}zeichneSammeldinge(i,n,t,s=!1){const{ctx:r}=this,c=this.level.sammeldinge;for(let h=0;h<c.length;h+=1){const o=c[h],l=o.x-n;if(!(l<-30)){if(l>p.breite+30)break;if(!i.gesammelt[h])if(o.art==="zahnrad")s&&(r.fillStyle="rgba(224,181,74,0.25)",r.beginPath(),r.arc(l,o.y,16,0,Math.PI*2),r.fill()),this.ruhig?r.drawImage(this.zahnrad,l-14,o.y-14):(r.save(),r.translate(l,o.y),r.rotate(t*2+h),r.drawImage(this.zahnrad,-14,-14),r.restore(
1));else{const b=34*(this.ruhig?1:.85+.15*Math.sin(t*6+h));r.drawImage(this.funke,l-b/2,o.y-b/2,b,b)}}}}zeichneFunde(i,n,t){const{ctx:s}=this;for(const r of this.level.funde){const c=r.x-n;if(c<-60||c>p.breite+60)continue;const h=i.bekannteFunde.has(r.fundId);if(!h&&i.gefunden.includes(r.fundId))continue;const o=this.ruhig?0:Math.sin(t*2.4)*4;if(s.globalAlpha=h?.35:1,!h){const f=s.createRadialGradient(c,r.y+o,4,c,r.y+o,40);f.addColorStop(0,"rgba(255,244,200,0.95)"),f.addColorStop(1,"rgba(224,181,74,0)"),s.fillStyle=f,s.beginPath(),s.arc(c,r.y+o,40,0,Math.PI*2),s.fill()}const l=this.bilder.funde.get(r.fundId);ie(l)?s.drawImage(l,c-24,r.y+o-24,48,48):(s.fillStyle=ue,s.strokeStyle=X,s.lineWidth=3,s.beginPath(),s.arc(c,r.y+o,16,0,Math.PI*2),s.fill(),s.stroke()),s.globalAlpha=1}}zeichneKraeheForm(i,n,t,s){const{ctx:r}=this,c=this.ruhig?0:Math.sin(s*10)*t*.6;r.fillStyle="#2f3a4a",r.beginPath(),r.ellipse(i,n,t*1.1,t*.62,0,0,Math.PI*2),r.fill(),r.beginPath(),r.moveTo(i-t*.2,n-t*.2),r.lineTo(i+t*.5,n-t*.9-c),r.lineTo(i+t*.9,n-t*.1),r.fill(),r.beginPath(),r.arc(i-t*.95,n-t*.2,t*.42,0,Math.PI*2),r.fill(),r.fillStyle=be,r.beginPath(),r.moveTo(i-t*1.3,n-t*.25),r.lineTo(i-t*1.75,n-t*.1),r.lineTo(i-t*1.3,n),r.fill(),r.fillStyle="#faf8f3",r.beginPath(),r.arc(i-t*1.02,n-t*.3,t*.12,0,Math.PI*2),r.fill()}zeichneHindernisse(i,n,t){const{ctx:s}=this;for(const r of this.level.hindernisse){const c=r.x-n;if(c<-80)continue;if(c>p.breite+80)break;const h=gt(r,i.zeit),o=r.r;if(r.art==="fels")s.drawImage(this.felsen[Math.abs(Math.round(r.x))%3],c-o*1.2,h-o*1.2,o*2.4,o*2.4);else if(r.art==="wolke")s.drawImage(this.wolke,c-o*1.45,h-o*1.15,o*2.9,o*2.3);else if(r.art==="kraehe")if(ie(this.bilder.kraehe)){const l=o*3.4;s.drawImage(this.bilder.kraehe,c-l/2,h-l/2,l,l)}else this.zeichneKraeheForm(c,h,o,t);else{const l=h<p.hoehe/2;s.strokeStyle=X,s.lineWidth=8,s.beginPath(),s.moveTo(c,l?-10:p.hoehe),s.lineTo(c,h),s.stroke(),s.lineWidth=16,s.lineCap="butt",s.strokeStyle="#c0392b",s.beginPath(),s.arc(c,h,o*.8,l?0:Math.PI,l?Math.PI:Math.PI*2),s.stroke(),s.strokeStyle="#dfe6ea",s.beginPath();const f=l?1:-1;s.moveTo(c-o*.8,h),s.lineTo(c-o*.8,h+f*14),s.moveTo(c+o*.8,h),s.lineTo(c+o*.8,h+f*14),s.stroke()}}}zeichneSchiff(i,n){const{ctx:t}=this;i.zeit<i.unverwundbarBis&&i.treffer>0&&Math.floor(n*10)%2===0&&(t.globalAlpha=.45);const r=Math.max(-.22,Math.min(.22,i.vy/1400))*(this.ruhig?.4:1);t.save(),t.translate(V,i.y),t.rotate(r);const c=this.bilder.schiff;ie(c)?t.drawImage(c,-60,-62,120,120):(t.fillStyle="#f4ead2",t.strokeStyle=X,t.lineWidth=3,t.beginPath(),t.ellipse(0,-14,44,22,0,0,Math.PI*2),t.fill(),t.stroke(),t.fillStyle=Me,t.fillRect(-22,14,44,16),t.strokeStyle=be,t.beginPath(),t.moveTo(-14,6),t.lineTo(-18,14),t.moveTo(14,6),t.lineTo(18,14),t.stroke(),t.beginPath(),t.arc(-30,22,8+(this.ruhig?0:Math.sin(n*30)*2),0,Math.PI*2),t.stroke()),ie(this.bilder.wegfink)&&t.drawImage(this.bilder.wegfink,14,-54,26,30),t.restore(),t.globalAlpha=1,!this.ruhig&&i.vy<-120&&Math.random()<.3&&this.funkenBei(V-50,i.y+20,"rgba(255,255,255,0.8)",2)}zeichneGegner(i,n,t){const s=i.endgegner;if(!s)return;const{ctx:r}=this,c=this.bilder.gegner,h=(l,f,b)=>{ie(c)?r.drawImage(c,l-b/2,f-b/2,b,b):(r.fillStyle=this.insel.farben.fels,r.beginPath(),r.arc(l,f,b*.42,0,Math.PI*2),r.fill(),r.fillStyle="#faf8f3",r.beginPath(),r.arc(l-b*.14,f-6,9,0,Math.PI*2),r.arc(l+b*.14,f-6,9,0,Math.PI*2),r.fill())},o=s.phase==="besiegt";if(o&&(r.globalAlpha=Math.max(0,1-(i.zeit-s.besiegtAm)/1.4)),s.art==="verfolgen"){s.sturz&&s.t-s.sturz.start<.6&&(r.strokeStyle="rgba(224,181,74,0.9)",r.setLineDash([10,10]),r.lineWidth=3,r.beginPath(),r.moveTo(V-40,s.sturz.hoehe),r.lineTo(s.x-60,s.sturz.hoehe),r.stroke(),r.setLineDash([]));const l=this.ruhig?0:Math.sin(t*8)*3;h(s.x,s.y+l,120)}else if(s.art==="durchflug"){const l=s.wandX-n,f=s.lueckeHoehe;if(!o&&l>-60&&l<p.breite+60){const b=r.createLinearGradient(l-22,0,l+22,0);b.addColorStop(0,X),b.addColorStop(.5,ue),b.addColorStop(1,X),r.fillStyle=b;const k=f-je/2,x=f+je/2;r.fillRect(l-20,-10,40,k+10),r.fillRect(l-20,x,40,p.hoehe-x+10),r.strokeStyle=Me,r.lineWidth=9,r.beginPath(),r.ellipse(l,f,30,je/2,0,0,Math.PI*2),r.stroke(),r.strokeStyle=ue,r.lineWidth=3,r.stroke(),r.fillStyle=X;for(let w=20;w<p.hoehe;w+=46)w>k-8&&w<x+8||(r.beginPath(),r.arc(l,w,4,0,Math.PI*2),r.fill())}h(870,110+(this.ruhig?0:Math.sin(t*1.5)*12),150)}else h(870,120+(this.ruhig?0:Math.sin(t*1.2)*14),170);r.globalAlpha=1;for(let l=0;l<3;l+=1)r.beginPath(),r.arc(p.breite/2-30+l*30,26,9,0,Math.PI*2),r.fillStyle=l<s.erfolge?ue:"rgba(16,31,38,0.35)",r.fill(),r.strokeStyle="#faf8f3",r.lineWidth=2,r.stroke()}zeichneNebel(){const{ctx:i}=this,n=i.createLinearGradient(V+200,0,p.breite,0);n.addColorStop(0,"rgba(226,234,222,0)"),n.addColorStop(.45,"rgba(226,234,222,0.82)"),n.addColorStop(1,"rgba(226,234,222,0.96)"),i.fillStyle=n,i.fillRect(0,0,p.breite,p.hoehe)}zeichneNacht(i){const n=this.dunkel.getContext("2d");if(!n)return;n.globalCompositeOperation="source-over",n.clearRect(0,0,p.breite,p.hoehe),n.fillStyle="rgba(6,12,26,0.86)",n.fillRect(0,0,p.breite,p.hoehe),n.globalCompositeOperation="destination-out";const t=n.createRadialGradient(V+70,i.y,30,V+70,i.y,240);t.addColorStop(0,"rgba(0,0,0,1)"),t.addColorStop(.7,"rgba(0,0,0,0.85)"),t.addColorStop(1,"rgba(0,0,0,0)"),n.fillStyle=t,n.beginPath(),n.arc(V+70,i.y,240,0,Math.PI*2),n.fill(),n.globalCompositeOperation="source-over",this.ctx.drawImage(this.dunkel,0,0)}zeichneKontrollpunkte(i,n,t){const{ctx:s}=this;this.level.kontrollpunkte.forEach((r,c)=>{const h=r-n;if(h<-60||h>p.breite+60)return;const o=i.abschnitt>=c+1;if(s.strokeStyle=X,s.lineWidth=6,s.beginPath(),s.moveTo(h,E+40),s.lineTo(h,E-120),s.stroke(),s.fillStyle=o?ue:"#5b6770",s.fillRect(h-12,E-146,24,28),s.strokeRect(h-12,E-146,24,28),o){const l=s.createRadialGradient(h,E-132,4,h,E-132,70);l.addColorStop(0,`rgba(255,236,160,${this.ruhig?.7:.6+.2*Math.sin(t*3)})`),l.addColorStop(1,"rgba(255,236,160,0)"),s.fillStyle=l,s.beginPath(),s.arc(h,E-132,70,0,Math.PI*2),s.fill()}})}zeichneTore(i,n){for(const t of i.tore){const s=t.x-n;s<-90||s>p.breite+90||this.zeichneTor(t,s,i)}}zeichneTor(i,n,t){const{ctx:s}=this,r=(E-v)/3,c=i.ergebnis!=="offen"?Kn(i,t):null;for(let h=0;h<3;h+=1){const o=v+r*h,l=i.frage.richtig===h;let f=be;i.ergebnis!=="offen"&&(f=l?Me:"rgba(143,111,40,0.45)"),s.strokeStyle=f,s.lineWidth=7,s.beginPath(),s.moveTo(n-36,o+r-4),s.lineTo(n-36,o+22),s.quadraticCurveTo(n-36,o+4,n,o+4),s.quadraticCurveTo(n+36,o+4,n+36,o+22),s.lineTo(n+36,o+r-4),s.stroke();const b=i.frage.antworten[h];s.font=`600 ${b.length>14?17:21}px ${Bn}`;const k=Math.min(220,s.measureText(b).width+26),x=n-k/2,w=o+r/2-19;s.fillStyle=i.ergebnis==="offen"?"rgba(250,248,243,0.96)":l?"rgba(14,110,115,0.95)":"rgba(250,248,243,0.55)",s.fillRect(x,w,k,38),s.strokeStyle=X,s.lineWidth=2,s.strokeRect(x,w,k,38),s.fillStyle=i.ergebnis!=="offen"&&l?"#faf8f3":Hn,s.textAlign="center",s.textBaseline="middle",s.fillText(b,n,w+20,k-12),c===h&&i.ergebnis==="falsch"&&(s.strokeStyle="rgba(192,57,43,0.7)",s.lineWidth=3,s.strokeRect(x-3,w-3,k+6,44))}}zeichneZiel(i){if(this.level.endgegner)return;const{ctx:n}=this,t=this.level.laenge-i;t<-80||t>p.breite+80||(n.fillStyle=this.insel.farben.fels,n.beginPath(),n.ellipse(t+120,E+10,170,50,0,Math.PI,Math.PI*2),n.fill(),n.strokeStyle=X,n.lineWidth=6,n.beginPath(),n.moveTo(t,E),n.lineTo(t,v+40),n.stroke(),n.fillStyle="#d9794a",n.beginPath(),n.moveTo(t,v+40),n.lineTo(t+60,v+56),n.lineTo(t,v+72),n.fill())}zeichneFunkeln(i,n){const{ctx:t}=this;this.funkeln=this.funkeln.filter(s=>s.bis>n);for(const s of this.funkeln)s.x+=s.vx*i,s.y+=s.vy*i,t.globalAlpha=Math.max(0,(s.bis-n)/.45),t.fillStyle=s.farbe,t.fillRect(s.x-2,s.y-2,4,4);t.globalAlpha=1}}function Kn(e,i){return e.ergebnis==="richtig"?e.frage.richtig:Math.abs(e.x-i.x)<400?ft(i.y):null}function Un(){return typeof window<"u"&&!!window.matchMedia?.("(prefers-reduced-motion: reduce)").matches}function re(e){if(!e||typeof Image>"u")return;const i=new Image;return i.decoding="async",i.src=e,i}function Je(e){const i=Math.max(0,Math.ceil(e));return`${Math.floor(i/60)}:${String(i%60).padStart(2,"0")}`}const Zn=["Oben","In der Mitte","Unten"];function Ye(e){return`${e.frage} ${e.antworten.map((i,n)=>`${Zn[n]}: ${i}`).join(". ")}.`}function On({episode:e,stoff:i,startAbschnitt:n,bekannteFunde:t,ausbaustufe:s,torName:r,automatischVorlesen:c=!1,zeitLimit:h=ut,onFund:o,onKontrollpunkt:l,onEnde:f}){const b=ke(de(e.kapitel).insel),k=S.useMemo(()=>yn(e,b),[e,b]),x=S.useMemo(()=>bn(i,b,k.tore.length+8,ot(`${e.id}:${Date.now()}`)),[i,b,k,e.id]),[w,D]=S.useState("bereit"),[m,R]=S.useState(Un),[_,C]=S.useState(xt),[H,q]=S.useState(null),[$,G]=S.useState(""),[Q,J]=S.useState(""),ae=S.useRef(null),d=S.useRef("bereit");d.current=w;const u=S.useRef(null),g=S.useRef(null),z=S.useRef(null),y=S.useRef(null),P=S.useRef(null),W=S.useRef(null),B=S.useRef(null),K=S.useRef(null),L=S.useRef(!1),Pe=S.useRef(!1),ge=S.useRef({onFund:o,onKontrollpunkt:l,onEnde:f});ge.current={onFund:o,onKontrollpunkt:l,onEnde:f};const le=S.useMemo(()=>{const j=e.endgegner?ne(e.endgegner.bild):null,F=new Map;for(const I of e.fundstuecke){const M=ce(I),T=M?re(ne(M.bild)):void 0;T&&F.set(I,T)}return{schiff:re(Fe(s)),wegfink:re(tt),himmel:re(ve(b.himmel)),kraehe:re(ve("spriteBlechkraehe")),begleiter:re(ve("spriteRostkraehe")),gegner:re(j),funde:F}},[e,s,b.himmel]),ze=S.useCallback(j=>{const F=W.current;!F||Pe.current||(Pe.current=!0,L.current=!1,$e(),D("ende"),ge.current.onEnde(Cn(F,j)))},[]),Re=S.useCallback((j,F)=>{const I=K.current,M=B.current;for(const T of j)switch(T.art){case"zahnrad":I?.spiele("zahnrad");break;
1case"funke":I?.spiele("funke"),M?.funkenBei(220,F.y,"#e0b54a");break;case"fund":{I?.spiele("fund"),M?.funkenBei(220,F.y,"#fff6d8",16);const U=ce(T.fundId);G(U?`Fundstück: ${U.name}!`:"Ein Fundstück!"),ge.current.onFund(T.fundId);break}case"treffer":I?.spiele("treffer");break;case"wolkenmeer":I?.spiele("wolke");break;case"frage":q(T.frage),c&&At(Ye(T.frage));break;case"tor":I?.spiele(T.richtig?"richtig":"falsch"),T.richtig&&M?.funkenBei(220,F.y,"#0e6e73",12),G(T.richtig?"Richtig. Rückenwind!":`Richtig ist: ${T.frage.antworten[T.frage.richtig]}. Weiter geht's.`),q(null);break;case"kontrollpunkt":I?.spiele("leuchtfeuer"),G(`Leuchtfeuer ${T.abschnitt} leuchtet. Hier geht es beim nächsten Mal weiter, falls die Zeit knapp wird.`),ge.current.onKontrollpunkt(T.abschnitt);break;case"endgegner-start":J(e.endgegner?.hinweis??""),G(e.endgegner?`${e.endgegner.name}!`:"");break;case"endgegner-treffer":I?.spiele("gegner"),M?.funkenBei(420,200,"#e0b54a",14),G(`${T.erfolge} von 3 geschafft.`);break;case"endgegner-daneben":G("Knapp. Gleich kommt der nächste Versuch.");break;case"endgegner-besiegt":I?.spiele("ziel"),J(""),G("Geschafft!");break;case"ziel":I?.spiele("ziel");break}},[c,e.endgegner]);S.useEffect(()=>{const j=u.current;if(!j)return;try{B.current=new Xe(j,k,b,le,m)}catch{B.current=null}const F=g.current,I=()=>B.current?.passeGroesseAn(F?.clientWidth??960);I();const M=typeof ResizeObserver<"u"?new ResizeObserver(I):null;F&&M?.observe(F);const T=qe({level:k,fragen:x,ruhig:m,startAbschnitt:n,bekannteFunde:t}),U=()=>
1{if(d.current==="bereit")try{B.current?.zeichne(T,0)}catch{}};U();const Z=[le.schiff,le.himmel,le.wegfink].filter(ee=>!!ee);for(const ee of Z)ee.addEventListener("load",U);return()=>{M?.disconnect();for(const ee of Z)ee.removeEventListener("load",U)}},[k,b,le,m,x,n,t]),S.useEffect(()=>{if(w!=="fliegt")return;let j=!0,F=performance.now(),I=0,M="";const T=U=>{if(!j)return;const Z=W.current;if(!Z)return;const ee=(U-F)/1e3;F=U;const Ce=Ln(Z,{hoch:L.current},ee);Ce.length>0&&Re(Ce,Z);try{B.current?.zeichne(Z,Math.min(.05,ee))}catch{}const Se=`${Je(Z.zeitLimit-Z.zeit)}|${Z.zahnraeder}|${Z.funken}`;if(Se!==M){M=Se;const[vt,jt,Mt]=Se.split("|");z.current&&(z.current.textContent=vt),y.current&&(y.current.textContent=jt),P.current&&(P.current.textContent=Mt)}if(Z.status!=="fliegt"){ze(!1);return}I=requestAnimationFrame(T)};return I=requestAnimationFrame(T),()=>{j=!1,cancelAnimationFrame(I)}},[w,Re,ze]),S.useEffect(()=>{if(w!=="fliegt"&&w!=="pause")return;const j=M=>{M.target instanceof HTMLElement&&M.target.closest("button, a, input, textarea, select")&&M.code==="Space"||(["Space","ArrowUp","KeyW"].includes(M.code)?(M.preventDefault(),w==="fliegt"&&(L.current=!0)):["Digit1","Digit2","Digit3","Numpad1","Numpad2","Numpad3"].includes(M.code)&&W.current?W.current.autopilot=Number(M.code.slice(-1))-1:M.code==="Escape"||M.code==="KeyP"?(M.preventDefault(),L.current=!1,D(T=>T==="fliegt"?"pause":"fliegt")):M.code==="KeyM"&&C(T=>{const U=!T;return K.current&&(K.current.stumm=U),U}))},F=M=>{["Space","ArrowUp","KeyW"].includes(M.code)&&(L.current=!1)},I=()=>{document.visibilityState==="hidden"&&(L.current=!1,D(M=>M==="fliegt"?"pause":M))};return window.addEventListener("keydown",j),window.addEventListener("keyup",F),document.addEventListener("visibilitychange",I),()=>{window.removeEventListener("keydown",j),window.removeEventListener("keyup",F),document.removeEventListener("visibilitychange",I)}},[w]),S.useEffect(()=>()=>{K.current?.beenden(),$e()},[]),S.useEffect(()=>{ae.current?.scrollIntoView?.({block:"start"})},[]),S.useEffect(()=>{if(!$)return;const j=window.setTimeout(()=>G(""),3200);return()=>window.clearTimeout(j)},[$]);const Le=()=>{const j=new Dn(_);j.wecke(),K.current=j,W.current=qe({level:k,fragen:x,ruhig:m,startAbschnitt:n,bekannteFunde:t,zeitLimit:h});try{B.current=u.current?new Xe(u.current,k,b,le,m):null,B.current?.passeGroesseAn(g.current?.clientWidth??960)}catch{B.current=null}D("fliegt"),g.current?.focus()},wt=j=>{w==="fliegt"&&(j.preventDefault(),j.currentTarget.setPointerCapture?.(j.pointerId),L.current=!0)},ye=()=>{L.current=!1},zt=j=>{w==="bereit"&&(j.code==="Space"||j.code==="Enter")&&(j.preventDefault(),Le())},yt=()=>{C(j=>{const F=!j;return K.current&&(K.current.stumm=F),F})};S.useEffect(()=>$n(_),[_]);const St=n>0?`Die Heureka startet an Leuchtfeuer ${n}.`:"Die Heureka startet am Anfang der Strecke.";return a.jsxs("section",{ref:ae,className:"abenteuer-flug","aria-label":`Flug: ${e.titel}`,"data-ruhig":m?"ja":"nein",children:[a.jsxs("div",{className:"abenteuer-flug__leiste",children:[a.jsxs("span",{className:"abenteuer-flug__titel",children:["Kapitel ",e.kapitel,", Episode ",e.nummer,": ",e.titel]}),a.jsxs("span",{className:"abenteuer-flug__wert","aria-label":"Verbleibende Flugzeit",children:[a.jsx("span",{className:"abenteuer-flug__marke",children:"Zeit"})," ",a.jsx("span",{ref:z,children:Je(h)})]}),a.jsxs("span",{className:"abenteuer-flug__wert",children:[a.jsx("span",{className:"abenteuer-flug__marke",children:"Zahnräder"})," ",a.jsx("span",{ref:y,children:"0"})]}),a.jsxs("span",{className:"abenteuer-flug__wert",children:[a.jsx("span",{className:"abenteuer-flug__marke",children:"Funken"})," ",a.jsx("span",{ref:P,children:"0"})]}),a.jsxs("span",{className:"abenteuer-flug__knoepfe",children:[a.jsx("button",{type:"button",className:"abenteuer-flug__knopf",onClick:yt,"aria-pressed":_,children:_?"Ton an":"Ton aus"}),w==="fliegt"?a.jsx("button",{type:"button",className:"abenteuer-flug__knopf",onClick:()=>{L.current=!1,D("pause")},children:"Anhalten"}):null]})]}),a.jsx("div",{className:"abenteuer-flug__frage","aria-live":"polite",children:H?a.jsxs(a.Fragment,{children:[a.jsxs("p",{children:[a.jsx("span",{className:"abenteuer-flug__marke",children:r})," ",H.frage]}),a.jsx(fe,{text:Ye(H),className:"leise-taste",label:"Frage vorlesen"})]}):a.jsx("p",{className:"abenteuer-flug__meldung",children:$||Q||" "})}),a.jsxs("div",{ref:g,className:"abenteuer-flug__buehne",tabIndex:0,role:"application","aria-roledescription":"Flugspiel","aria-label":"Flugbühne. Leertaste oder Pfeil nach oben halten zum Steigen, loslassen zum Sinken. Tasten 1, 2 und 3 steuern das obere, mittlere oder untere Tor an. P hält an.",onPointerDown:wt,onPointerUp:ye,onPointerCancel:ye,onPointerLeave:ye,onKeyDown:zt,onContextMenu:j=>j.preventDefault(),children:[a.jsx("canvas",{ref:u,className:"abenteuer-flug__leinwand","aria-hidden":"true"}),w==="bereit"?a.jsxs("div",{className:"abenteuer-flug__overlay",children:[a.jsx("h3",{children:"Bereit zum Abflug"}),a.jsxs("p",{children:[St," Halte gedrückt, um zu steigen. Lass los, um zu sinken. Flieg durch das Tor mit der richtigen Antwort."]}),a.jsxs("label",{className:"abenteuer-flug__schalter",children:[a.jsx("input",{type:"checkbox",checked:m,onChange:j=>R(j.target.checked)}),"Ruhiger Flug: langsamer, ohne Wackeln"]}),a.jsx("button",{type:"button",className:"taste",onClick:Le,children:"Los geht's"})]}):null,w==="pause"?a.jsxs("div",{className:"abenteuer-flug__overlay",children:[a.jsx("h3",{children:"Pause"}),a.jsx("p",{children:"Die Zeit steht still, solange die Heureka wartet."}),a.jsxs("div",{className:"abenteuer-flug__overlay-knoepfe",children:[a.jsx("button",{type:"button",className:"taste",onClick:()=>{D("fliegt"),g.current?.focus()},children:"Weiterfliegen"}),a.jsx("button",{type:"button",className:"taste sekundaer-taste",onClick:()=>ze(!0),children:"Flug beenden"})]})]}):null]}),$&&H?a.jsx("p",{className:"abenteuer-flug__meldung abenteuer-flug__meldung--unten","aria-live":"polite",children:$}):null]})}function _e(e,i,n){return Bt(e,i,n)}function Vn(){const e=Qe(),i=et(),n=Pt(),t=ln(),s=rn({lokal:n.lokal,kontoId:n.konto?.uid??"",kindId:i.id}),r=Rt(),c=t.laedt||s.laedt,h=S.useMemo(()=>!c&&_t({kernFertig:on(an(e,r,t.gesperrteEinheiten,void 0,s.context)),sessions:e.sessions,heute:r}),[c,e,r,t.gesperrteEinheiten,s.context]);return{heute:r,kernFertig:h,releaseContext:s.context,probe:n.ausprobieren}}function qn(e){const i=e.identitaet;return i?.charakterId==="eigen"&&i.eigeneFigurDataUrl?i.eigeneFigurDataUrl:Ft.find(n=>n.id===i?.charakterId)?.bild??null}function Xn({stoff:e,torName:i}){const n=[...new Set(e.lektionen.map(t=>t.einheitTitel))].slice(0,3);return Oe(e)&&n.length>0?a.jsxs("p",{children:["Die ",i," öffnen sich nur mit dem, was du zuletzt geübt hast: ",n.join(", "),"."]}):Oe(e)?a.jsxs("p",{children:["Die ",i," öffnen sich nur mit dem, was du zuletzt geübt hast."]}):a.jsxs("p",{children:["Heute stellen die ",i," Fragen aus dem Grundstock. Sobald du Lektionen geübt hast, kommen die Fragen aus deinen Lektionen."]})}function Ai(){const e=et(),i=Qe(),{heute:n,kernFertig:t,releaseContext:s,probe:r}=Vn(),c=S.useMemo(()=>Ht(i.abenteuer),[i.abenteuer]),h=De(c),[o,l]=S.useState({art:"uebersicht"}),[f,b]=S.useState(de(h.kapitel).insel),[k,x]=S.useState(""),w=Nt(i.subjectStates),D=Et(i.sessions,i.spielhalle),m=Tt(i.spielhalle,
1n),R=i.onboarding?.vorleseModus==="automatisch",_=qn(i),C=u=>{he(g=>nn(g,u)),x(""),l({art:"vorflug",episodeId:u}),window.scrollTo?.({top:0})},H=u=>{const g=Be({lernstand:i,episodeId:u.id,heute:n,kernFertig:t});if(r){l({art:"flug",flug:{episode:u,istAktuell:!1,startAbschnitt:0,bekannteFunde:[...c.fundstuecke],ausbaustufe:c.ausbaustufe,stoff:_e(i,n,s),probe:!0}});return}if(g!=="ok"){x(Ge(g));return}const z=!c.staffelFertig&&u.id===h.id,y={episode:u,istAktuell:z,startAbschnitt:z?He(c,u.id):0,bekannteFunde:[...c.fundstuecke],ausbaustufe:c.ausbaustufe,stoff:_e(i,n,s),probe:!1};he(P=>sn(P,{episodeId:u.id,heute:n,jetzt:new Date().toISOString(),einloesungsId:Lt("abenteuer"),kernFertig:t})),l({art:"flug",flug:y})},q=(u,g)=>{const z=u.ausbaustufe;g.status==="ziel"&&u.istAktuell&&!u.probe&&he(P=>en(P,u.episode.id));const y=new Set([...u.bekannteFunde,...g.gefunden]);l({art:"nachflug",flug:u,ergebnis:g,stufeVorher:z,stufeNachher:Math.max(z,tn(y.size))}),window.scrollTo?.({top:0})};if(o.art==="flug"){const{flug:u}=o,g=ke(de(u.episode.kapitel).insel);return a.jsx(me,{className:"student-page abenteuer-seite abenteuer-seite--flug",density:"wide",children:a.jsx(On,{episode:u.episode,stoff:u.stoff,startAbschnitt:u.startAbschnitt,bekannteFunde:u.bekannteFunde,ausbaustufe:u.ausbaustufe,torName:g.torName,automatischVorlesen:R,onFund:z=>{u.probe||he(y=>{Kt(y,z)})},onKontrollpunkt:z=>{u.istAktuell&&!u.probe&&he(y=>Gt(y,u.episode.id,z))},onEnde:z=>q(u,z)})})}if(o.art==="nachflug")return a.jsx(Jn,{...o,onUebersicht:()=>l({art:"uebersicht"}),onWeiter:u=>C(u),naechsteId:c.staffelFertig?null:De(c).id});if(o.art==="vorflug"){const u=at(o.episodeId)??h,g=de(u.kapitel),z=ke(g.insel),y=Be({lernstand:i,episodeId:u.id,heute:n,kernFertig:t}),P=rt(c,u.id)&&!(u.id===h.id&&!c.staffelFertig),W=P?0:He(c,u.id),B=_e(i,n,s),K=u.fundstuecke.map(L=>ce(L)).filter(L=>L!==void 0);return a.jsxs(me,{className:"student-page abenteuer-seite",density:"wide",children:[a.jsx("p",{className:"abenteuer-zurueck",children:a.jsx("button",{type:"button",className:"leise-taste",onClick:()=>l({art:"uebersicht"}),children:"Zur Übersicht der Reise"})}),a.jsxs("article",{className:"abenteuer-episode","aria-labelledby":"abenteuer-episode-titel",children:[a.jsx("img",{className:"abenteuer-episode__bild",src:ne(g.bild),alt:"",width:1536,height:1024}),a.jsxs("div",{className:"abenteuer-episode__text",children:[a.jsxs("p",{className:"label",children:["Kapitel ",g.nummer,": ",g.titel," · ",z.name]}),a.jsxs("h1",{id:"abenteuer-episode-titel",children:["Episode ",u.kapitel,".",u.nummer,": ",u.titel]}),a.jsx("p",{className:"abenteuer-episode__einstieg",children:u.einstieg}),a.jsx(fe,{text:u.einstieg,className:"leise-taste",label:"Geschichte vorlesen",labelAktiv:"Vorlesen anhalten"})]})]}),a.jsxs("section",{className:"abenteuer-aufgabe","aria-labelledby":"abenteuer-aufgabe-titel",children:[a.jsxs("div",{className:"abenteuer-aufgabe__figuren","aria-hidden":"true",children:[_?a.jsx("img",{src:_,alt:"",width:96,height:96}):null,a.jsx("img",{src:tt,alt:"",width:80,height:96})]}),a.jsxs("div",{children:[a.jsx("h2",{id:"abenteuer-aufgabe-titel",children:"Deine Aufgabe im Flug"}),a.jsx("p",{children:u.spielaufgabe}),a.jsx(Xn,{stoff:B,torName:z.torName}),u.endgegner?a.jsxs("p",{children:["Am Ende wartet ",u.endgegner.name,"."]}):null,K.length>0?a.jsxs("p",{children:["Fundstücke auf dieser Strecke:"," ",K.map(L=>c.fundstuecke.includes(L.id)?`${L.name} (schon gefunden)`:L.art==="versteckt"?"eins, gut versteckt":L.art==="kompassteil"?"ein Kompassteil":"eins, auf dem Weg").join(", "),"."]}):null]}),a.jsxs("div",{className:"abenteuer-aufgabe__start",children:[a.jsxs("p",{className:"abenteuer-aufgabe__muenzen",children:[D===1?"1 Münze":`${D} Münzen`," · ",m," Minuten Spielzeit heute übrig"]}),W>0?a.jsxs("p",{children:["Die Heureka startet an Leuchtfeuer ",W,"."]}):null,P?a.jsx("p",{children:"Du fliegst diese Episode noch einmal. Die Geschichte geht davon nicht weiter, aber Fundstücke zählen."}):null,a.jsx("button",{type:"button",className:"taste",disabled:!r&&y!=="ok",onClick:()=>H(u),"aria-describedby":r||k||y!=="ok"?"abenteuer-start-grund":void 0,children:r?"Probeflug ohne Münze":"Flug starten"}),r?a.jsx("p",{id:"abenteuer-start-grund",className:"abenteuer-aufgabe__grund",children:"Im Rundgang fliegt die Heureka ohne Münze, und nichts wird gespeichert."}):k||y!=="ok"?a.jsx("p",{id:"abenteuer-start-grund",className:"abenteuer-aufgabe__grund",role:k?"status":void 0,children:k||Ge(y)}):null,a.jsxs("p",{className:"abenteuer-aufgabe__kosten",children:["Ein Flug kostet eine Münze und ",It," Minuten deiner Spielzeit."]})]})]})]})}const $=de(c.kapitel),G=ke($.insel),Q=Ut(c),J=Zt(c.fundstuecke.length),ae=we.filter(u=>
1u.art==="kompassteil"),d=it(c);return a.jsxs(me,{className:"student-page abenteuer-seite",density:"wide",children:[a.jsxs("header",{className:"abenteuer-kopf",children:[a.jsxs("div",{className:"abenteuer-kopf__text",children:[a.jsx("p",{className:"label",children:"Abenteuer"}),a.jsx("h1",{children:Ot}),a.jsxs("p",{children:[Vt,". Eine Geschichte in 36 Episoden, und du fliegst mit, ",e.vorname,"."]})]}),a.jsx("img",{className:"abenteuer-kopf__schiff",src:Fe(c.ausbaustufe),alt:`Die Heureka, Ausbaustufe ${c.ausbaustufe} von 5`,width:260,height:260})]}),a.jsxs("section",{className:"abenteuer-jetzt","aria-labelledby":"abenteuer-jetzt-titel",children:[a.jsx("img",{className:"abenteuer-jetzt__bild",src:ne($.bild),alt:"",width:1536,height:1024}),a.jsxs("div",{className:"abenteuer-jetzt__text",children:[a.jsx("p",{className:"label",children:c.staffelFertig?"Staffel 1 geschafft":`Kapitel ${c.kapitel}, Episode ${c.episode} · ${G.name}`}),a.jsx("h2",{id:"abenteuer-jetzt-titel",children:c.staffelFertig?"Staffel 2: hinter der Weißen Wand":h.titel}),a.jsx("p",{className:"abenteuer-jetzt__satz",children:qt(c)}),a.jsx("div",{className:"abenteuer-jetzt__knoepfe",children:c.staffelFertig?null:a.jsx("button",{type:"button",className:"taste",onClick:()=>C(h.id),children:d===0?"Die Reise beginnen":"Weiterspielen"})}),a.jsxs("p",{className:"abenteuer-jetzt__muenzen",children:[D===1?"1 Münze":`${D} Münzen`," · ",m," Minuten Spielzeit heute übrig."," ",t?"":"Fliegen geht nach deiner ersten Lernrunde heute. Lesen geht immer."]})]})]}),a.jsxs("section",{className:"abenteuer-block","aria-labelledby":"abenteuer-karte-ueberschrift",children:[a.jsx("h2",{id:"abenteuer-karte-ueberschrift",children:"Die Inselk
1arte"}),a.jsx(cn,{stand:c,onInsel:u=>{b(u),document.getElementById("abenteuer-sammelbuch")?.scrollIntoView?.({block:"start"})}})]}),a.jsxs("section",{className:"abenteuer-block abenteuer-heureka","aria-labelledby":"abenteuer-heureka-titel",children:[a.jsxs("div",{children:[a.jsx("h2",{id:"abenteuer-heureka-titel",children:"Die Heureka"}),a.jsxs("p",{className:"abenteuer-heureka__stufe",children:["Ausbaustufe ",c.ausbaustufe," von 5"]}),a.jsx("p",{children:J===null?"Die Heureka ist fertig ausgebaut. Schöner wird kein Luftschiff im Archipel.":`Noch ${J===1?"ein Fundstück":`${J} Fundstücke`} bis zur nächsten Ausbaustufe. Jedes Stück macht die Heureka besser.`})]}),a.jsxs("div",{children:[a.jsx("h3",{children:"Der Kompass des Wegfinks"}),a.jsx("ol",{className:"abenteuer-kompass",children:ae.map(u=>{const g=c.fundstuecke.includes(u.id);return a.jsxs("li",{"data-da":g?"ja":"nein",children:[a.jsx("img",{src:ne(u.bild),alt:"",width:64,height:64,loading:"lazy"}),a.jsx("span",{children:g?u.name:"Fehlt noch"})]},u.id)})})]})]}),a.jsxs("section",{className:"abenteuer-block",id:"abenteuer-sammelbuch","aria-labelledby":"abenteuer-buch-titel",children:[a.jsx("h2",{id:"abenteuer-buch-titel",children:"Das Sammelbuch"}),a.jsxs("p",{className:"abenteuer-block__intro",children:[c.fundstuecke.length," von ",we.length," Fundstücken gefunden. Goldene Erinnerungsstücke kommen mit Pokalen aus deinen Lernrunden: ",w===1?"1 Pokal":`${w} Pokale`," bisher."]}),a.jsx(hn,{stand:c,pokale:w,insel:f,onInsel:b,onEpisode:C})]}),a.jsx("section",{className:"abenteuer-block","aria-labelledby":"abenteuer-rueckblick-titel",children:a.jsxs("details",{className:"abenteuer-rueckblick",open:Xt(c,n)||void 0,children:[a.jsx("summary",{children:a.jsx("h2",{id:"abenteuer-rueckblick-titel",children:"Was bisher geschah"})}),Q.length===0?a.jsx("p",{children:"Noch nichts. Die Geschichte beginnt im Schilf der Kupferbucht."}):a.jsx("ol",{children:Q.map(u=>a.jsxs("li",{children:[a.jsxs("h3",{children:["Kapitel ",u.kapitel.nummer,": ",u.kapitel.titel]}),u.saetze.map(g=>a.jsx("p",{children:g},g)),a.jsx(fe,{text:u.saetze.join(" "),className:"leise-taste",nurZeichen:!0,label:`Kapitel ${u.kapitel.nummer} vorlesen`})]},u.kapitel.nummer))})]})}),a.jsx("section",{className:"abenteuer-block","aria-labelledby":"abenteuer-welt-titel",children:a.jsxs("details",{className:"abenteuer-welt",children:[a.jsx("summary",{children:a.jsx("h2",{id:"abenteuer-welt-titel",children:"Welt und Figuren"})}),Jt.map(u=>a.jsx("p",{children:u},u)),a.jsx("h3",{children:"So wird geflogen"}),Yt.map(u=>a.jsx("p",{children:u},u)),a.jsx("h3",{children:"Figuren"}),a.jsx("dl",{className:"abenteuer-figuren",children:Qt.map(u=>a.jsxs("div",{children:[a.jsx("dt",{children:u.name}),a.jsx("dd",{children:u.beschreibung})]},u.name))}),a.jsxs("p",{className:"abenteuer-welt__kapitel",children:[nt.length," Kapitel, sechs Inseln, ein Kompass."]})]})})]})}function Jn({flug:e,ergebnis:i,stufeVorher:n,stufeNachher:t,naechsteId:s,onUebersicht:r,onWeiter:c}){const{episode:h}=e,o=i.status==="ziel",l=i.gefunden.map(x=>ce(x)).filter(x=>x!==void 0),f=i.richtigAusLektion>0?`Du hast ${i.richtigAusLektion===1?"ein Ding":`${i.richtigAusLektion} Dinge`} aus deinen Lektionen wiedergefunden.`:i.richtig>0?`Du hast ${i.richtig===1?"ein Tor":`${i.richtig} Tore`} mit der richtigen Antwort geöffnet.`:"",b=o&&e.istAktuell?s:null,k=[[i.zahnraeder,i.zahnraeder===1?"Zahnrad":"Zahnräder"],[i.funken,i.funken===1?"Funke":"Funken"],[i.richtig,i.richtig===1?"richtiges Tor":"richtige Tore"]].filter(([x])=>x>0);return a.jsx(me,{className:"student-page abenteuer-seite",density:"wide",children:a.jsxs("article",{className:"abenteuer-nachflug","aria-labelledby":"abenteuer-nachflug-titel",children:[a.jsxs("div",{className:"abenteuer-nachflug__kopf",children:[a.jsx("img",{src:o?We.wegfinkJubel:We.wegfinkSchlaf,alt:"",width:140,height:140}),a.jsxs("div",{children:[a.jsx("p",{className:"label",children:o?e.istAktuell?"Angekommen":"Noch einmal geflogen":i.status==="abbruch"?"Flug beendet":"Die Zeit ist um"}),a.jsxs("h1",{id:"abenteuer-nachflug-titel",children:["Episode ",h.kapitel,".",h.nummer,": ",h.titel]}),o?null:a.jsx("p",{children:e.istAktuell&&i.abschnitt>0?`Die Heureka ankert an Leuchtfeuer ${i.abschnitt}. Beim nächsten Mal geht es von dort weiter.`:e.istAktuell?"Die Heureka wartet am Anfang der Strecke. Beim nächsten Mal geht es von dort weiter.":"Die Heureka kehrt in den Hafen zurück. Fundstücke von diesem Flug bleiben im Sammelbuch."})]})]}),o?a.jsxs("section",{className:"abenteuer-nachflug__geschichte",children:[a.jsx("p",{children:h.schluss}),a.jsx("p",{className:"abenteuer-nachflug__cliff",children:h.naechstesMal}),a.jsx(fe,{text:`${h.schluss} ${h.naechstesMal}`,className:"leise-taste",label:"Vorlesen"})]}):null,k.length>0?a.jsx("ul",{className:"abenteuer-nachflug__zahlen",children:k.map(([x,w])=>a.jsxs("li",{children:[a.jsx("strong",{children:x})," ",w]},w))}):null,f?a.jsx("p",{className:"abenteuer-nachflug__lektionen",children:f}):null,l.length>0?a.jsxs("section",{className:"abenteuer-nachflug__funde","aria-labelledby":"abenteuer-neue-funde",children:[a.jsx("h2",{id:"abenteuer-neue-funde",children:l.length===1?"Neues Fundstück":"Neue Fundstücke"}),a.jsx("ul",{children:l.map(x=>a.jsxs("li",{children:[a.jsx("img",{src:ne(x.bild),alt:"",width:120,height:120}),a.jsxs("div",{children:[a.jsx("h3",{children:x.name}),a.jsx("p",{children:x.wissen})]})]},x.id))})]}):null,t>n?a.jsxs("section",{className:"abenteuer-nachflug__stufe",children:[a.jsx("img",{src:Fe(t),alt:`Die Heureka, Ausbaustufe ${t}`,width:180,height:180}),a.jsxs("p",{children:["Die Heureka ist besser geworden: Ausbaustufe ",t," von 5."]})]}):null,i.nochmal.length>0?a.jsxs("section",{className:"abenteuer-nachflug__nochmal","aria-labelledby":"abenteuer-nochmal",children:[a.jsx("h2",{id:"abenteuer-nochmal",children:"Antworten zum Merken"}),a.jsx("dl",{children:i.nochmal.map(x=>a.jsxs("div",{children:[a.jsx("dt",{children:x.frage}),a.jsx("dd",{children:x.antwort})]},x.frage))})]}):null,a.jsxs("div",{className:"abenteuer-nachflug__knoepfe",children:[b?a.jsx("button",{type:"button",className:"taste",onClick:()=>c(b),children:"Wie geht es weiter?"}):null,a.jsx("button",{type:"button",className:b?"taste sekundaer-taste":"taste",onClick:r,children:"Zur Übersicht der Reise"})]})]})})}export{Ai as AbenteuerSeite};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.