nk20/note_kfet/static/js/konami.js

46 lines
1.1 KiB
JavaScript
Raw Normal View History

2020-09-02 22:35:25 +00:00
/*
* Konami code support
*/
// Cursor denote the position in konami code
let cursor = 0
const KONAMI_CODE = [38, 38, 40, 40, 37, 39, 37, 39, 66, 65]
2020-09-05 06:30:41 +00:00
function afterKonami () {
// Load Rythm.js
var rythmScript = document.createElement('script')
rythmScript.setAttribute('src', '//unpkg.com/rythm.js@2.2.5/rythm.min.js')
document.head.appendChild(rythmScript)
2020-09-02 22:35:25 +00:00
2020-09-05 06:30:41 +00:00
rythmScript.addEventListener('load', function () {
// Ker-Lyon audio courtesy of @adalan, ker-lyon.fr
const audioElement = new Audio('/static/song/konami.ogg')
audioElement.loop = true
audioElement.play()
2020-09-02 22:35:25 +00:00
2020-09-05 06:30:41 +00:00
const rythm = new Rythm()
rythm.connectExternalAudioElement(audioElement)
rythm.addRythm('card', 'pulse', 50, 50, {
min: 1,
max: 1.1
})
rythm.addRythm('d-flex', 'color', 50, 50, {
from: [64, 64, 64],
to: [128, 64, 128]
})
rythm.addRythm('nav-link', 'jump', 150, 50, {
min: 0,
max: 10
})
rythm.start()
})
2020-09-02 22:35:25 +00:00
}
// Register custom event
document.addEventListener('keydown', (e) => {
2020-09-05 06:38:31 +00:00
cursor = (e.keyCode === KONAMI_CODE[cursor]) ? cursor + 1 : 0
if (cursor === KONAMI_CODE.length) {
2020-09-05 06:30:41 +00:00
afterKonami()
}
})