80 lines
2.4 KiB
JavaScript
80 lines
2.4 KiB
JavaScript
|
"use strict"
|
||
|
|
||
|
import { $, delay, playSound } from './helpers.js'
|
||
|
import { doPuzzle } from './puzzle-handler.js'
|
||
|
|
||
|
// runs on site load and handles entire flow
|
||
|
async function start(duration,puzzlelength,amount,dev){
|
||
|
|
||
|
// reset from previous
|
||
|
$('.try-again').classList.add('hidden')
|
||
|
$('.spy-icon').src = 'assets/spy-icon.png'
|
||
|
|
||
|
const dialing = playSound('assets/dialing.mp3', 0.1)
|
||
|
|
||
|
// mock loading screen
|
||
|
setInformationText('ESTABLISHING CONNECTION')
|
||
|
await delay(0.8)
|
||
|
setInformationText('DOING SOME HACKERMANS STUFF...')
|
||
|
await delay(1)
|
||
|
setInformationText('ACCESS CODE FLAGGED; REQUIRES HUMAN CAPTCHA INPUT..')
|
||
|
await delay(0.8)
|
||
|
|
||
|
// hide text and show squares
|
||
|
$('#text-container').classList.toggle('hidden')
|
||
|
$('#number-container').classList.toggle('hidden')
|
||
|
|
||
|
|
||
|
// activate puzzle a times, break on fail
|
||
|
let submitted
|
||
|
let answer
|
||
|
let result = true
|
||
|
|
||
|
for (let i = 0; i < amount && result; i++) {
|
||
|
[submitted, answer] = await doPuzzle(duration,puzzlelength,dev)
|
||
|
result = (submitted?.toLowerCase() == answer)
|
||
|
}
|
||
|
|
||
|
// hide squares and show text
|
||
|
$('.answer-section').classList.add('hidden')
|
||
|
$('.number-container').classList.add('hidden')
|
||
|
$('#text-container').classList.remove('hidden')
|
||
|
|
||
|
// display result
|
||
|
setInformationText((result) ? 'the system has been bypassed.' : "The system didn't accept your answers")
|
||
|
|
||
|
if(!result) {
|
||
|
$('.spy-icon').src = 'assets/failed.png'
|
||
|
$('#answer-reveal').textContent = answer
|
||
|
await delay(5)
|
||
|
}
|
||
|
|
||
|
fetch('https://hacking/callback', {
|
||
|
method: 'POST',
|
||
|
headers: { 'Content-Type': 'application/json' },
|
||
|
body: JSON.stringify({
|
||
|
success: result
|
||
|
})
|
||
|
});
|
||
|
|
||
|
$(".bg").classList.add('hidden');
|
||
|
|
||
|
$('#submitted-reveal').textContent = (result) ? 'Good job, indeed the' : ((submitted == null) ? "The time ran out," : `You wrote "${submitted || ' '}", the`)
|
||
|
}
|
||
|
|
||
|
|
||
|
function setInformationText(text){
|
||
|
|
||
|
const capitalized = text.toUpperCase()
|
||
|
const infoText = `<span class="capital">${capitalized.charAt(0)}</span>${capitalized.substring(1)}`
|
||
|
|
||
|
$("#loading-text").innerHTML = infoText
|
||
|
}
|
||
|
|
||
|
window.addEventListener('message', function(event){
|
||
|
if (event.data.action == "open") {
|
||
|
start(event.data.duration, event.data.length,event.data.amount, event.data.dev)
|
||
|
$(".bg").classList.remove('hidden');
|
||
|
}
|
||
|
})
|