GRÜNE Neukölln – Mitmach-Spiele
🔄
Bitte halte das Gerät quer
🌻 GRÜNE Neukölln – Mitmach-Spiele
Wähle ein Spiel – tippen startet im Vollbild.
Tipp: Ein Spiel öffnet im Vollbild – oben links kommst du über „← Mitmachspiele“ jederzeit zurück zur Auswahl.
GRÜNE Neukölln – Mitmach-Spiele
🔄
Bitte halte das Gerät quer
🌻 GRÜNE Neukölln – Mitmach-Spiele
Wähle ein Spiel – tippen startet im Vollbild.
Tipp: Ein Spiel öffnet im Vollbild – oben links kommst du über „← Mitmachspiele“ jederzeit zurück zur Auswahl.
};
const launcher=document.getElementById("launcher");
const stage=document.getElementById("stage");
const frame=document.getElementById("frame");
const appTitle=document.getElementById("appTitle");
function decode(b64){
const bin=atob(b64); const u=new Uint8Array(bin.length);
for(let i=0;i
{}); }catch(e){} }
function goFullscreen(){
const el=document.documentElement;
const rf=el.requestFullscreen||el.webkitRequestFullscreen||el.mozRequestFullScreen;
if(rf && !(document.fullscreenElement||document.webkitFullscreenElement)){ try{ const p=rf.call(el); (p&&p.then)?p.then(lockLandscape).catch(()=>{}):lockLandscape(); }catch(e){} }
else lockLandscape();
}
function exitFullscreen(){
const ef=document.exitFullscreen||document.webkitExitFullscreen||document.mozCancelFullScreen;
if(ef && (document.fullscreenElement||document.webkitFullscreenElement)){ try{ ef.call(document); }catch(e){} }
}
function openApp(key){
const app=APPS[key]; if(!app) return;
goFullscreen();
frame.srcdoc=decode(app.b64);
appTitle.textContent=app.title;
launcher.classList.add("hidden");
stage.classList.remove("hidden");
}
function backToMenu(){
frame.srcdoc=""; // unload current app (stops its loop)
stage.classList.add("hidden");
launcher.classList.remove("hidden");
}
document.querySelectorAll(".tile").forEach(function(b){
b.addEventListener("click", function(){ openApp(b.dataset.app); });
});
document.getElementById("btnBack").addEventListener("click", backToMenu);
window.addEventListener("message", function(e){ if(e&&e.data&&(e.data.kiezEntsiegeln==="home"||e.data==="backToHub")) backToMenu(); });
function fsActive(){return !!(document.fullscreenElement||document.webkitFullscreenElement);}
function fsToggle(){ if(fsActive()) exitFullscreen(); else goFullscreen(); }
function updateFsLabel(){ var b=document.getElementById("btnExitFs"); if(b) b.textContent=fsActive()?"⛶ Vollbild beenden":"⛶ Vollbild"; }
document.getElementById("btnExitFs").addEventListener("click", fsToggle);
document.addEventListener("fullscreenchange", updateFsLabel); document.addEventListener("webkitfullscreenchange", updateFsLabel); updateFsLabel();
if(!(document.fullscreenEnabled||document.webkitFullscreenEnabled)){ var _x=document.getElementById("btnExitFs"); if(_x) _x.style.display="none"; }
})();