155 lines
4.8 KiB
JavaScript
155 lines
4.8 KiB
JavaScript
|
let blocksInput;
|
||
|
let speedInput;
|
||
|
|
||
|
var timer_game, order;
|
||
|
|
||
|
var var_started = false;
|
||
|
var game_playing = false;
|
||
|
|
||
|
document.addEventListener("keydown", function(ev) {
|
||
|
let key_pressed = ev.key;
|
||
|
let valid_keys = ['Escape'];
|
||
|
|
||
|
if (var_started && valid_keys.includes(key_pressed)) {
|
||
|
switch (key_pressed) {
|
||
|
case 'Escape':
|
||
|
var_started = false;
|
||
|
game_playing = false;
|
||
|
destroy()
|
||
|
$.post('https://ps-ui/var-callback', JSON.stringify({ 'success': false }));
|
||
|
setTimeout(function() { $(".var-hack").fadeOut() }, 500);
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
|
||
|
var validate = (ev) => {
|
||
|
if (game_playing === false) return;
|
||
|
|
||
|
if (parseInt(ev.target.dataset.number, 10) === order) {
|
||
|
ev.target.classList.add('good');
|
||
|
order++;
|
||
|
if(order > numbers){
|
||
|
var_started = false;
|
||
|
game_playing = false;
|
||
|
document.querySelector('.var-splash .var-text').innerHTML = 'SUCCESS!';
|
||
|
document.querySelector('.var-splash').classList.remove('hidden');
|
||
|
$(".var-group").css("display", "none");
|
||
|
setTimeout(function() {
|
||
|
$(".var-hack").fadeOut();
|
||
|
document.querySelector(".var-splash .var-text").innerHTML = 'PREPARING INTERFACE...';
|
||
|
destroy()
|
||
|
$.post('https://ps-ui/var-callback', JSON.stringify({ 'success': true }));
|
||
|
}, 2000);
|
||
|
}
|
||
|
} else {
|
||
|
//destroy()
|
||
|
var_started = false;
|
||
|
game_playing = false;
|
||
|
ev.target.classList.add('bad');
|
||
|
document.querySelector('.var-groups').classList.remove('playing');
|
||
|
document.querySelector('.var-splash .var-text').innerHTML = 'SEQUENCE FAILED!';
|
||
|
|
||
|
setTimeout(function() {
|
||
|
$(".var-hack").fadeOut();
|
||
|
destroy();
|
||
|
$.post('https://ps-ui/var-callback', JSON.stringify({ 'success': false }));
|
||
|
}, 4000);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
var resetVar = () => {
|
||
|
clearTimeout(timer_game);
|
||
|
|
||
|
document.querySelector('.var-splash').classList.add('hidden');
|
||
|
document.querySelector('.var-groups').classList.remove('hidden','playing');
|
||
|
document.querySelector('.var-groups').innerHTML = '';
|
||
|
|
||
|
startVar();
|
||
|
}
|
||
|
|
||
|
var destroy = () => {
|
||
|
document.querySelector('.var-groups').classList.remove('hidden','playing');
|
||
|
document.querySelector('.var-groups').innerHTML = '';
|
||
|
}
|
||
|
|
||
|
var newPos = (element) => {
|
||
|
let top = element.offsetTop;
|
||
|
let left = element.offsetLeft;
|
||
|
let new_top = random(10,755);
|
||
|
let new_left = random(10,1420);
|
||
|
let diff_top = new_top - top;
|
||
|
let diff_left = new_left - left;
|
||
|
let duration = random(10,40)*100;
|
||
|
|
||
|
new mojs.Html({
|
||
|
el: '#'+element.id,
|
||
|
x: {
|
||
|
0:diff_left,
|
||
|
duration: duration,
|
||
|
easing: 'linear.none'
|
||
|
},
|
||
|
y: {
|
||
|
0:diff_top,
|
||
|
duration: duration,
|
||
|
easing: 'linear.none'
|
||
|
},
|
||
|
duration: duration+50,
|
||
|
onComplete() {
|
||
|
if(element.offsetTop === 0 && element.offsetLeft === 0) {
|
||
|
this.pause();
|
||
|
return;
|
||
|
}
|
||
|
element.style = 'top: '+new_top+'px; left: '+new_left+'px; transform: none;';
|
||
|
newPos(element);
|
||
|
},
|
||
|
onUpdate() {
|
||
|
if(var_started === false) this.pause();
|
||
|
}
|
||
|
}).play();
|
||
|
}
|
||
|
|
||
|
let startVar = () => {
|
||
|
order = 1;
|
||
|
var_started = true;
|
||
|
game_playing = false;
|
||
|
|
||
|
numbers = blocksInput;
|
||
|
|
||
|
let nums = range(1, numbers);
|
||
|
shuffle(nums);
|
||
|
nums.forEach(function(num){
|
||
|
let group = document.createElement('div');
|
||
|
group.id = 'pos'+num;
|
||
|
group.classList.add('var-group','bg'+random(1,9));
|
||
|
group.dataset.number = num.toString();
|
||
|
group.style.top = random(10,755)+'px';
|
||
|
group.style.left = random(10,1420)+'px';
|
||
|
group.innerHTML = num.toString();
|
||
|
group.addEventListener('pointerdown', validate);
|
||
|
document.querySelector('.var-groups').append(group);
|
||
|
});
|
||
|
document.querySelectorAll('.var-group').forEach(el => { newPos(el) });
|
||
|
|
||
|
speed = speedInput
|
||
|
timer_game = sleep(speed * 1000, function(){
|
||
|
document.querySelector('.var-groups').classList.add('playing');
|
||
|
game_playing = true;
|
||
|
});
|
||
|
}
|
||
|
|
||
|
window.addEventListener('message', (event) => {
|
||
|
if (event.data.action === 'var-start') {
|
||
|
blocksInput = event.data.blocks
|
||
|
speedInput = event.data.speed
|
||
|
$(".var-hack").fadeIn()
|
||
|
//document.querySelector('.var-hack .hack').classList.add('hidden');
|
||
|
sleep(3000, function() {
|
||
|
document.querySelector('.var-splash .var-text').innerHTML = 'INITIALIZING...';
|
||
|
document.querySelector('.var-splash').classList.add('hidden');
|
||
|
document.querySelector('.var-groups').classList.remove('hidden','playing');
|
||
|
startVar();
|
||
|
});
|
||
|
|
||
|
}
|
||
|
});
|