mirror of
https://github.com/giongto35/cloud-game.git
synced 2026-01-23 02:34:42 +00:00
These modules should be supported by all contemporary browsers, and this transition should resolve most issues related to the explicit import order of the .js files.
44 lines
849 B
JavaScript
44 lines
849 B
JavaScript
import {gui} from 'gui';
|
|
|
|
const popupBox = document.getElementById('noti-box');
|
|
|
|
// fifo queue
|
|
let queue = [];
|
|
const queueMaxSize = 5;
|
|
|
|
let isScreenFree = true;
|
|
|
|
const _popup = (time = 1000) => {
|
|
// recursion edge case:
|
|
// no messages in the queue or one on the screen
|
|
if (!(queue.length > 0 && isScreenFree)) {
|
|
return;
|
|
}
|
|
|
|
isScreenFree = false;
|
|
popupBox.innerText = queue.shift();
|
|
gui.anim.fadeInOut(popupBox, time, .05).finally(() => {
|
|
isScreenFree = true;
|
|
_popup();
|
|
})
|
|
}
|
|
|
|
const _storeMessage = (text) => {
|
|
if (queue.length <= queueMaxSize) {
|
|
queue.push(text);
|
|
}
|
|
}
|
|
|
|
const _proceed = (text, time) => {
|
|
_storeMessage(text);
|
|
_popup(time);
|
|
}
|
|
|
|
const show = (text, time = 1000) => _proceed(text, time)
|
|
|
|
/**
|
|
* App UI message module.
|
|
*/
|
|
export const message = {
|
|
show,
|
|
}
|