Refactor scene management to use preload procedures.

This commit is contained in:
yukirij 2024-10-17 14:05:32 -07:00
parent f4e6d9bacf
commit b2a035931a
7 changed files with 469 additions and 409 deletions

View File

@ -732,6 +732,8 @@ pub async fn thread_system(mut app:App, bus:Bus<protocol::QRPacket>)
send_user_status.push(session.p_dusk.user); send_user_status.push(session.p_dusk.user);
session.undo = 0; session.undo = 0;
} else {
println!("notice: bad play {} {} {}", play.source, play.from, play.to);
} }
} }
} }

View File

@ -1,7 +1,5 @@
let MAIN = null; let MAIN = null;
let MENU = null; let MENU = null;
let SCENE = null;
let SCENE_STACK = [ ];
let CONNECTED = false; let CONNECTED = false;
let SOCKET = null; let SOCKET = null;

View File

@ -1355,8 +1355,11 @@ const INTERFACE = {
} }
}, },
message(code, data) { message(msg) {
if(data === null) { return; } if(msg === null) { return; }
let code = msg.code;
let data = msg.data;
switch(code) { switch(code) {
case OpCode.GameState: { case OpCode.GameState: {

View File

@ -1,7 +1,7 @@
document.addEventListener("DOMContentLoaded", () => { document.addEventListener("DOMContentLoaded", () => {
SCENE = SCENES.Offline; SCENE.load(SCENES.Offline);
LOAD(SCENES.Init); SCENE.load(SCENES.Init);
document.addEventListener("beforeunload", UNLOAD); document.addEventListener("beforeunload", SCENE.unload);
window.addEventListener("popstate", LOAD_URL); window.addEventListener("popstate", SCENE.load_url);
}); });

File diff suppressed because it is too large Load Diff

View File

@ -41,7 +41,8 @@ function RESUME() {
secret, secret,
]); ]);
} else { } else {
LOAD_URL(); console.log("HERE");
SCENE.load_url();
} }
} }
@ -143,7 +144,7 @@ function MESSAGE(event) {
sessionStorage.clear(); sessionStorage.clear();
} }
LOAD_URL(); SCENE.load_url();
} break; } break;
case OpCode.Deauthenticate: { case OpCode.Deauthenticate: {
@ -566,7 +567,13 @@ function MESSAGE(event) {
console.log("RECV Undefined " + code); console.log("RECV Undefined " + code);
return; return;
} }
if(SCENE.message !== undefined) { SCENE.message(code, data) };
if(data !== null) {
SCENE.message({
code: code,
data: data,
});
}
} }
function MESSAGE_COMPOSE(data) { function MESSAGE_COMPOSE(data) {

View File

@ -127,15 +127,15 @@ const UI = {
if(sessionStorage.getItem("auth") === null) { if(sessionStorage.getItem("auth") === null) {
if(features.auth === true) { if(features.auth === true) {
left.appendChild(UI.button(LANG("register"), () => { LOAD(SCENES.Register); })); left.appendChild(UI.button(LANG("register"), () => { SCENE.load(SCENES.Register); }));
left.appendChild(UI.button(LANG("login"), () => { LOAD(SCENES.Authenticate); })); left.appendChild(UI.button(LANG("login"), () => { SCENE.load(SCENES.Authenticate); }));
} }
} else { } else {
if(features.session === true) { if(features.session === true) {
let button_challenge = UI.button(LANG("requests"), () => { LOAD(SCENES.ChallengeList); }); let button_challenge = UI.button(LANG("requests"), () => { SCENE.load(SCENES.Requests); });
button_challenge.setAttribute("id", "button-requests"); button_challenge.setAttribute("id", "button-requests");
left.appendChild(UI.button(LANG("users"), () => { LOAD(SCENES.Challenge); })); left.appendChild(UI.button(LANG("users"), () => { SCENE.load(SCENES.Users); }));
left.appendChild(button_challenge); left.appendChild(button_challenge);
} }
} }
@ -166,24 +166,24 @@ const UI = {
let top = [ ]; let top = [ ];
let bottom = [ ]; let bottom = [ ];
top.push(UI.button(LANG("browse"), () => { LOAD(SCENES.Browse); }, page == "browse")); top.push(UI.button(LANG("browse"), () => { SCENE.load(SCENES.Browse); }, page == "browse"));
if(sessionStorage.getItem("auth") !== null) { if(sessionStorage.getItem("auth") !== null) {
let button_resume = UI.button(LANG("resume"), () => { LOAD(SCENES.Continue); }, page == "continue"); let button_resume = UI.button(LANG("resume"), () => { SCENE.load(SCENES.Continue); }, page == "continue");
button_resume.setAttribute("id", "button-resume"); button_resume.setAttribute("id", "button-resume");
top.push(button_resume); top.push(button_resume);
//top.push(UI.button("Join", () => { LOAD(SCENES.Join); }, page == "join")); //top.push(UI.button("Join", () => { SCENE.load(SCENES.Join); }, page == "join"));
} }
top.push(UI.button(LANG("live"), () => { LOAD(SCENES.Live); }, page == "live")); top.push(UI.button(LANG("live"), () => { SCENE.load(SCENES.Live); }, page == "live"));
top.push(UI.button(LANG("history"), () => { LOAD(SCENES.History); }, page == "history")); top.push(UI.button(LANG("history"), () => { SCENE.load(SCENES.History); }, page == "history"));
top.push(UI.button(LANG("practice"), () => { LOAD(SCENES.GamePractice); }, page == "practice")); top.push(UI.button(LANG("practice"), () => { SCENE.load(SCENES.GamePractice); }, page == "practice"));
top.push(UI.button(LANG("guide"), () => { LOAD(SCENES.Guide); }, page == "guide")); top.push(UI.button(LANG("guide"), () => { SCENE.load(SCENES.Guide); }, page == "guide"));
top.push(UI.button(LANG("about"), () => { LOAD(SCENES.About); }, page == "about")); top.push(UI.button(LANG("about"), () => { SCENE.load(SCENES.About); }, page == "about"));
if(CONTEXT.Auth !== null) { if(CONTEXT.Auth !== null) {
bottom.push(UI.button(LANG("account"), () => { LOAD(SCENES.Account); })); bottom.push(UI.button(LANG("account"), () => { SCENE.load(SCENES.Account); }));
} }
bottom.push(UI.button(LANG("extras"), () => { LOAD(SCENES.Extras) }, page == "extras")); bottom.push(UI.button(LANG("extras"), () => { SCENE.load(SCENES.Extras) }, page == "extras"));
UI.nav(top, bottom); UI.nav(top, bottom);
} }
@ -194,16 +194,16 @@ const UI = {
let buttons_bottom = [ ]; let buttons_bottom = [ ];
// Top Buttons // Top Buttons
buttons_top.push(UI.button("Profile", () => { LOAD(SCENES.Profile, { handle:CONTEXT.Auth.handle }) }, page == "profile")); buttons_top.push(UI.button("Profile", () => { SCENE.load(SCENES.Profile, { handle:CONTEXT.Auth.handle }) }, page == "profile"));
buttons_top.push(UI.button("History", () => { }, page == "history")); buttons_top.push(UI.button("History", () => { }, page == "history"));
// Bottom Buttons // Bottom Buttons
if(data === null || data.handle === CONTEXT.Auth.handle) { if(data === null || data.handle === CONTEXT.Auth.handle) {
buttons_bottom.push(UI.button("Account", () => { LOAD(SCENES.Account) }, page == "account")); buttons_bottom.push(UI.button("Account", () => { SCENE.load(SCENES.Account) }, page == "account"));
buttons_bottom.push(UI.button("Subscription", () => { LOAD(SCENES.Subscription) }, page == "subscription")); buttons_bottom.push(UI.button("Subscription", () => { SCENE.load(SCENES.Subscription) }, page == "subscription"));
buttons_bottom.push(UI.button("Invitations", () => { LOAD(SCENES.Invitations) }, page == "invitations")); buttons_bottom.push(UI.button("Invitations", () => { SCENE.load(SCENES.Invitations) }, page == "invitations"));
} }
buttons_bottom.push(UI.button(LANG("back"), () => { LOAD(SCENES.Browse); })); buttons_bottom.push(UI.button(LANG("back"), () => { SCENE.load(SCENES.Browse); }));
UI.nav(buttons_top, buttons_bottom); UI.nav(buttons_top, buttons_bottom);
}, },
@ -216,7 +216,7 @@ const UI = {
let buttons = [ ]; let buttons = [ ];
let join_callback = function() { let join_callback = function() {
LOAD(SCENES.GameLoad, { SCENE.load(SCENES.Game, {
token:this.token, token:this.token,
mode:INTERFACE.Mode.Player, mode:INTERFACE.Mode.Player,
}); });
@ -226,7 +226,7 @@ const UI = {
}); });
let spectate_callback = function() { let spectate_callback = function() {
LOAD(SCENES.GameLoad, { SCENE.load(SCENES.Game, {
token:this.token, token:this.token,
mode:INTERFACE.Mode.Review, mode:INTERFACE.Mode.Review,
}); });
@ -278,7 +278,7 @@ const UI = {
let buttons = [ ]; let buttons = [ ];
let join_callback = function() { let join_callback = function() {
SCENE_FORWARD = SCENE; SCENE_FORWARD = SCENE;
LOAD(SCENES.GameLoad, { SCENE.load(SCENES.Game, {
token:this.token, token:this.token,
mode:INTERFACE.Mode.Player, mode:INTERFACE.Mode.Player,
}); });
@ -287,7 +287,7 @@ const UI = {
let spectate_callback = function() { let spectate_callback = function() {
SCENE_FORWARD = SCENE; SCENE_FORWARD = SCENE;
LOAD(SCENES.GameLoad, { SCENE.load(SCENES.Game, {
token:this.token, token:this.token,
mode:INTERFACE.Mode.Review, mode:INTERFACE.Mode.Review,
}); });
@ -327,7 +327,7 @@ const UI = {
for(let r = 0; r < records.length; ++r) { for(let r = 0; r < records.length; ++r) {
let buttons = [ ]; let buttons = [ ];
let join_callback = function() { let join_callback = function() {
LOAD(SCENES.Game, { SCENE.load(SCENES.Game, {
token:this.token, token:this.token,
mode:INTERFACE.Mode.Player, mode:INTERFACE.Mode.Player,
}); });
@ -367,7 +367,7 @@ const UI = {
let buttons = [ ]; let buttons = [ ];
let view_callback = function() { let view_callback = function() {
SCENE_FORWARD = SCENE; SCENE_FORWARD = SCENE;
LOAD(SCENES.GameLoad, { SCENE.load(SCENES.Game, {
token:this.token, token:this.token,
mode:INTERFACE.Mode.Review, mode:INTERFACE.Mode.Review,
}); });