2020-05-09 14:45:23 +00:00
|
|
|
/* typehints:start */
|
|
|
|
import { Application } from "../application";
|
|
|
|
/* typehints:end */
|
2020-05-17 10:12:13 +00:00
|
|
|
import { T } from "../translations";
|
2020-05-09 14:45:23 +00:00
|
|
|
|
|
|
|
export class GameLoadingOverlay {
|
|
|
|
/**
|
|
|
|
*
|
|
|
|
* @param {Application} app
|
|
|
|
* @param {HTMLElement} parent
|
|
|
|
*/
|
|
|
|
constructor(app, parent) {
|
|
|
|
this.app = app;
|
|
|
|
this.parent = parent;
|
|
|
|
|
|
|
|
/** @type {HTMLElement} */
|
|
|
|
this.element = null;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Removes the overlay if its currently visible
|
|
|
|
*/
|
|
|
|
removeIfAttached() {
|
|
|
|
if (this.element) {
|
|
|
|
this.element.remove();
|
|
|
|
this.element = null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns if the loading overlay is attached
|
|
|
|
*/
|
|
|
|
isAttached() {
|
|
|
|
return this.element;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Shows a super basic overlay
|
|
|
|
*/
|
|
|
|
showBasic() {
|
|
|
|
assert(!this.element, "Loading overlay already visible, cant show again");
|
|
|
|
this.element = document.createElement("div");
|
|
|
|
this.element.classList.add("gameLoadingOverlay");
|
|
|
|
this.parent.appendChild(this.element);
|
|
|
|
this.internalAddSpinnerAndText(this.element);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Adds a text with 'loading' and a spinner
|
|
|
|
* @param {HTMLElement} element
|
|
|
|
*/
|
|
|
|
internalAddSpinnerAndText(element) {
|
|
|
|
const inner = document.createElement("span");
|
|
|
|
inner.classList.add("prefab_LoadingTextWithAnim");
|
2020-05-17 10:12:13 +00:00
|
|
|
inner.innerText = T.global.loading;
|
2020-05-09 14:45:23 +00:00
|
|
|
element.appendChild(inner);
|
|
|
|
}
|
|
|
|
}
|