Compare commits
7 Commits
41afeb7bfc
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 02cdfc98dd | |||
| bf578cf830 | |||
| a3dd9c6b19 | |||
| c89d341651 | |||
| 72fe8d1abb | |||
| cc16e2d9e6 | |||
| b77252b0b1 |
@@ -81,7 +81,7 @@ p {
|
||||
background-size: contain;
|
||||
background-repeat: no-repeat;
|
||||
background-size: contain;
|
||||
background-image: url("src/Books/BookBar_v8_f0000.png");
|
||||
background-image: url("src/Books/BookBar_f0000.png");
|
||||
}
|
||||
.barFlashHelper {
|
||||
position: absolute;
|
||||
@@ -91,7 +91,7 @@ p {
|
||||
height: 100%;
|
||||
background-repeat: no-repeat;
|
||||
background-size: contain;
|
||||
background-image: url("src/Books/BookBar_v8_f0000.png");
|
||||
background-image: url("src/Books/BookBar_f0000.png");
|
||||
}
|
||||
#barBack {
|
||||
}
|
||||
|
||||
@@ -1,16 +1,21 @@
|
||||
window.addEventListener("DOMContentLoaded", () => {
|
||||
//Create progress bar
|
||||
const book_bar = new ProgressBar();
|
||||
|
||||
//Pat Lilac
|
||||
const websocket = new ReconnectingWebSocket("wss://lilac.thewisewolf.dev/tracker/timer/ws");
|
||||
communicate(websocket, book_bar);
|
||||
|
||||
});
|
||||
|
||||
|
||||
class ProgressBar {
|
||||
constructor() {
|
||||
this.current_progress = 0;
|
||||
this.current_progress = 25;
|
||||
this.max_progress = 45;
|
||||
this.anim_progress = 0;
|
||||
this.animating = false;
|
||||
this.simming = false;
|
||||
this.target_element = document.getElementById("progressBar");
|
||||
this.bar_back = document.getElementById("barBack");
|
||||
this.bar_front = document.getElementById("barFront");
|
||||
@@ -22,43 +27,136 @@ class ProgressBar {
|
||||
if (index_string.length < 2) {
|
||||
index_string = "0" + index_string;
|
||||
}
|
||||
img_fetcher.src = "src/Books/BookBar_v8_f00" + index_string + ".png";
|
||||
img_fetcher.src = "src/Books/BookBar_f00" + index_string + ".png";
|
||||
image_cache.push(img_fetcher);
|
||||
};
|
||||
}
|
||||
|
||||
//SET NUMBER OF COLORED BOOKS
|
||||
|
||||
//Set current campaign progress
|
||||
setProgress(val) {
|
||||
if (Number.isInteger(val) && (this.target_element != null) && (this.bar_back != null) && (this.bar_front != null)) {
|
||||
if (Number.isInteger(val)
|
||||
&& (val >= 0)
|
||||
&& (val <= this.max_progress)
|
||||
&& (val != this.current_progress)) {
|
||||
this.current_progress = val;
|
||||
this.anim_progress = 0;
|
||||
} else {
|
||||
if (Number.isInteger(val)
|
||||
&& (val >= this.max_progress)
|
||||
&& (val != this.current_progress)) {
|
||||
this.current_progress = this.max_progress;
|
||||
this.anim_progress = 0;
|
||||
console.warn("Progress update: Goal Exceeded.")
|
||||
}
|
||||
if (Number.isInteger(val)
|
||||
&& (val <= 0)
|
||||
&& (val != this.current_progress)) {
|
||||
this.current_progress = 0;
|
||||
this.anim_progress = 0;
|
||||
console.warn("Progress update: Goal Subceeded.")
|
||||
}
|
||||
console.warn("Progress update failed.")
|
||||
}
|
||||
}
|
||||
|
||||
//Render current animation state to the screen
|
||||
renderProgress(val) {
|
||||
if (Number.isInteger(val)
|
||||
&& (this.target_element != null)
|
||||
&& (this.bar_back != null)
|
||||
&& (this.bar_front != null)
|
||||
&& (val >= 0)
|
||||
&& (val <= this.current_progress)
|
||||
&& (val <= this.max_progress)) {
|
||||
let val_string = val.toString();
|
||||
if (val_string.length < 2) {
|
||||
val_string = "0" + val_string;
|
||||
}
|
||||
this.bar_back.style.backgroundImage = "url(src/Books/BookBar_v8_f00" + val_string + ".png)";
|
||||
this.bar_back.style.backgroundImage = "url(src/Books/BookBar_f00" + val_string + ".png)";
|
||||
setTimeout(this.antiFlash.bind(this), 150, val_string, val);
|
||||
} else {
|
||||
console.warn("Progress render failed.")
|
||||
}
|
||||
}
|
||||
|
||||
//Prevent image flicker by pre-loading a version of the image then rendering the top image with a delay
|
||||
antiFlash(val_string, new_val) {
|
||||
this.bar_front.style.backgroundImage = "url(src/Books/BookBar_v8_f00" + val_string + ".png)";
|
||||
if ((new_val >= 0) && (new_val <= this.max_progress)) {
|
||||
this.current_progress = new_val;
|
||||
this.bar_front.style.backgroundImage = "url(src/Books/BookBar_f00" + val_string + ".png)";
|
||||
//Increment the animation ticker (plus an extra round of safety checks)
|
||||
if ((new_val >= 0)
|
||||
&& (new_val <= this.current_progress)
|
||||
&& (this.anim_progress <= this.max_progress)
|
||||
&& (new_val <= this.max_progress)) {
|
||||
this.anim_progress = new_val;
|
||||
}
|
||||
else {
|
||||
console.warn("Progress update is out of range.");
|
||||
console.warn("Anim antiFlash render is out of range.");
|
||||
}
|
||||
}
|
||||
//TEST ANIMATION
|
||||
|
||||
//Progress Animation
|
||||
animProgress() {
|
||||
//animate
|
||||
if (this.animating == true) {
|
||||
if ((this.anim_progress >= 0)
|
||||
&& (this.anim_progress < this.current_progress)
|
||||
&& (this.anim_progress < this.max_progress)) {
|
||||
this.renderProgress(this.anim_progress + 1);
|
||||
setTimeout(this.animProgress.bind(this), 500);
|
||||
}
|
||||
//loop
|
||||
if (this.anim_progress == this.current_progress) {
|
||||
setTimeout(this.renderProgress.bind(this, 0), 5000);
|
||||
setTimeout(this.animProgress.bind(this), 5500);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Toggle animation on
|
||||
animStart() {
|
||||
if (this.animating != true){
|
||||
this.animating = true;
|
||||
this.animProgress();
|
||||
} else {
|
||||
console.warn("Animation already running");
|
||||
}
|
||||
}
|
||||
|
||||
//Toggle animation off
|
||||
animEnd() {
|
||||
this.animating = false;
|
||||
}
|
||||
|
||||
//TEST SIMULATION
|
||||
simProgress() {
|
||||
if (this.current_progress < this.max_progress) {
|
||||
//sim
|
||||
if (this.simming == true) {
|
||||
if (this.current_progress < this.max_progress) {
|
||||
this.setProgress(this.current_progress + 1);
|
||||
setTimeout(this.simProgress.bind(this), 500);
|
||||
}
|
||||
if (this.current_progress == this.max_progress) {
|
||||
setTimeout(() => this.setProgress(0), 5000);
|
||||
setTimeout(this.simProgress.bind(this), 5500);
|
||||
setTimeout(this.simProgress.bind(this), 38500);
|
||||
}
|
||||
//loop
|
||||
if (this.current_progress == this.max_progress) {
|
||||
setTimeout(() => this.setProgress(0), 10000);
|
||||
setTimeout(this.simProgress.bind(this), 95500);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
simStart() {
|
||||
console.log("starting");
|
||||
this.simming = true;
|
||||
this.simProgress();
|
||||
console.log("started");
|
||||
}
|
||||
|
||||
simEnd() {
|
||||
console.log("ending");
|
||||
this.simming = false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class ReconnectingWebSocket {
|
||||
@@ -97,9 +195,8 @@ class ReconnectingWebSocket {
|
||||
if (this.closing) {
|
||||
console.log('Closing Websocket.')
|
||||
} {
|
||||
console.warn('WebSocket closed. Reconnecting... (disabled for now)');
|
||||
//this.reconnect();
|
||||
//TODO turn that back on ^
|
||||
console.warn('WebSocket closed. Reconnecting...');
|
||||
this.reconnect();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -151,7 +248,8 @@ function communicate(websocket, book_bar) {
|
||||
console.log("Communicating");
|
||||
const params = new URLSearchParams(window.location.search);
|
||||
// INITIALIZE CLASS HERE
|
||||
book_bar.simProgress();
|
||||
//queue animation start after a few seconds to allow for initial status from server
|
||||
setTimeout(book_bar.animStart.bind(book_bar),5000);
|
||||
|
||||
websocket.onopen = () => {
|
||||
websocket.send(
|
||||
@@ -176,16 +274,23 @@ function communicate(websocket, book_bar) {
|
||||
switch (event.method) {
|
||||
case "setTimer":
|
||||
//do something with the new data
|
||||
console.log("set timer: " + event);
|
||||
book_bar.setProgress(event.reward_progress);
|
||||
console.log("set timer: " + args.reward_progress);
|
||||
book_bar.setProgress(args.reward_progress);
|
||||
//animEnd();
|
||||
//setTimeout(book_bar.setProgress(args.reward_progress), 7500);
|
||||
//setTimeout(book_bar.animStart, 7800);
|
||||
break;
|
||||
case "noTimer":
|
||||
//do something default
|
||||
console.log("no timer: " + event);
|
||||
console.log("no timer: " + args);
|
||||
break;
|
||||
case "endTimer":
|
||||
//do something for the final time
|
||||
console.log("end timer: " + event);
|
||||
console.log("end timer: " + args);
|
||||
//book_bar.renderProgress(args.reward_progress);
|
||||
//book_bar.animEnd();
|
||||
//setTimeout(book_bar.renderProgress(args.reward_progress), 7500);
|
||||
//setTimeout(book_bar.animStart, 7800);
|
||||
break
|
||||
default:
|
||||
throw new Error(`Unsupported method requested: ${event.method}.`)
|
||||
|
||||
|
After Width: | Height: | Size: 206 KiB |
|
After Width: | Height: | Size: 218 KiB |
|
After Width: | Height: | Size: 224 KiB |
|
After Width: | Height: | Size: 230 KiB |
|
After Width: | Height: | Size: 235 KiB |
|
After Width: | Height: | Size: 241 KiB |
|
After Width: | Height: | Size: 247 KiB |
|
After Width: | Height: | Size: 250 KiB |
|
After Width: | Height: | Size: 255 KiB |
|
After Width: | Height: | Size: 259 KiB |
|
After Width: | Height: | Size: 263 KiB |
|
After Width: | Height: | Size: 268 KiB |
|
After Width: | Height: | Size: 273 KiB |
|
After Width: | Height: | Size: 276 KiB |
|
After Width: | Height: | Size: 279 KiB |
|
After Width: | Height: | Size: 284 KiB |
|
After Width: | Height: | Size: 289 KiB |
|
After Width: | Height: | Size: 292 KiB |
|
After Width: | Height: | Size: 295 KiB |
|
After Width: | Height: | Size: 298 KiB |
|
After Width: | Height: | Size: 301 KiB |
|
After Width: | Height: | Size: 304 KiB |
|
After Width: | Height: | Size: 307 KiB |
|
After Width: | Height: | Size: 309 KiB |
|
After Width: | Height: | Size: 312 KiB |
|
After Width: | Height: | Size: 316 KiB |
|
After Width: | Height: | Size: 319 KiB |
|
After Width: | Height: | Size: 322 KiB |
|
After Width: | Height: | Size: 326 KiB |
|
After Width: | Height: | Size: 328 KiB |
|
After Width: | Height: | Size: 332 KiB |
|
After Width: | Height: | Size: 336 KiB |
|
After Width: | Height: | Size: 339 KiB |
|
After Width: | Height: | Size: 342 KiB |
|
After Width: | Height: | Size: 346 KiB |
|
After Width: | Height: | Size: 350 KiB |
|
After Width: | Height: | Size: 352 KiB |
|
After Width: | Height: | Size: 356 KiB |
|
After Width: | Height: | Size: 359 KiB |
|
After Width: | Height: | Size: 363 KiB |
|
After Width: | Height: | Size: 366 KiB |
|
After Width: | Height: | Size: 368 KiB |
|
After Width: | Height: | Size: 371 KiB |
|
After Width: | Height: | Size: 374 KiB |
|
After Width: | Height: | Size: 378 KiB |
|
After Width: | Height: | Size: 380 KiB |
|
Before Width: | Height: | Size: 232 KiB |
|
Before Width: | Height: | Size: 244 KiB |
|
Before Width: | Height: | Size: 250 KiB |
|
Before Width: | Height: | Size: 255 KiB |
|
Before Width: | Height: | Size: 259 KiB |
|
Before Width: | Height: | Size: 265 KiB |
|
Before Width: | Height: | Size: 270 KiB |
|
Before Width: | Height: | Size: 274 KiB |
|
Before Width: | Height: | Size: 279 KiB |
|
Before Width: | Height: | Size: 282 KiB |
|
Before Width: | Height: | Size: 287 KiB |
|
Before Width: | Height: | Size: 291 KiB |
|
Before Width: | Height: | Size: 296 KiB |
|
Before Width: | Height: | Size: 300 KiB |
|
Before Width: | Height: | Size: 303 KiB |
|
Before Width: | Height: | Size: 307 KiB |
|
Before Width: | Height: | Size: 311 KiB |
|
Before Width: | Height: | Size: 316 KiB |
|
Before Width: | Height: | Size: 320 KiB |
|
Before Width: | Height: | Size: 323 KiB |
|
Before Width: | Height: | Size: 327 KiB |
|
Before Width: | Height: | Size: 329 KiB |
|
Before Width: | Height: | Size: 333 KiB |
|
Before Width: | Height: | Size: 335 KiB |
|
Before Width: | Height: | Size: 338 KiB |
|
Before Width: | Height: | Size: 342 KiB |
|
Before Width: | Height: | Size: 343 KiB |
|
Before Width: | Height: | Size: 347 KiB |
|
Before Width: | Height: | Size: 352 KiB |
|
Before Width: | Height: | Size: 354 KiB |
|
Before Width: | Height: | Size: 358 KiB |
|
Before Width: | Height: | Size: 363 KiB |
|
Before Width: | Height: | Size: 366 KiB |
|
Before Width: | Height: | Size: 368 KiB |
|
Before Width: | Height: | Size: 374 KiB |
|
Before Width: | Height: | Size: 378 KiB |
|
Before Width: | Height: | Size: 380 KiB |
|
Before Width: | Height: | Size: 385 KiB |
|
Before Width: | Height: | Size: 386 KiB |
|
Before Width: | Height: | Size: 389 KiB |
|
Before Width: | Height: | Size: 392 KiB |
|
Before Width: | Height: | Size: 397 KiB |
|
Before Width: | Height: | Size: 400 KiB |
|
Before Width: | Height: | Size: 402 KiB |
|
Before Width: | Height: | Size: 408 KiB |
|
Before Width: | Height: | Size: 408 KiB |