From a8869efebdcce905026f50f82dfeb9f50915c46e Mon Sep 17 00:00:00 2001 From: yukirij Date: Thu, 17 Oct 2024 11:21:42 -0700 Subject: [PATCH] Add debug comments; improve mouse button handling. --- server/src/app/user.rs | 6 +++++ server/src/main.rs | 6 ++++- www/js/interface.js | 51 ++++++++++++++++++++++++++++-------------- www/js/language.js | 2 +- www/js/main.js | 1 + www/js/scene.js | 9 ++++++++ www/js/system.js | 6 +++++ www/js/ui.js | 2 +- 8 files changed, 63 insertions(+), 20 deletions(-) diff --git a/server/src/app/user.rs b/server/src/app/user.rs index 95a8f55..f0a59d8 100644 --- a/server/src/app/user.rs +++ b/server/src/app/user.rs @@ -13,6 +13,12 @@ impl UserStatus { } } +#[derive(Clone)] +pub struct UserStatistics { + pub games_played:u32, + pub games_won:u32, +} + #[derive(Clone)] pub struct User { pub id:u32, diff --git a/server/src/main.rs b/server/src/main.rs index f62b241..a6f52c0 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -142,7 +142,11 @@ async fn handle_tls(stream:TlsStream, addr:SocketAddr, args:HttpServiceArgs) -> } - +/* +** [multi_thread, worker_threads] +** Workaround for single core computer, where listening tasks blocked +** client-handling and data-processing tasks. +*/ #[tokio::main(flavor = "multi_thread", worker_threads = 12)] async fn main() { diff --git a/www/js/interface.js b/www/js/interface.js index 8d9c72e..bbe5793 100644 --- a/www/js/interface.js +++ b/www/js/interface.js @@ -233,12 +233,17 @@ const INTERFACE = { // Otherwise, switch selection. let result = 0; if(INTERFACE_DATA.select !== null) { + console.log("Select not null"); // Play selection. if(INTERFACE_DATA.hover.source == 0 && (INTERFACE_DATA.mode == INTERFACE.Mode.Local || INTERFACE_DATA.player == (GAME_DATA.turn & 1))) { + console.log("D1"); + let tile_state = INTERFACE_DATA.Game.board_state[INTERFACE_DATA.hover.tile][1]; result = +(tile_state == INTERFACE.TileStatus.Valid || tile_state == INTERFACE.TileStatus.Threat); + console.log("RES " + result); if(INTERFACE_DATA.select.source == 1) { + console.log("SRC1"); let pool_selected = +(INTERFACE_DATA.select.tile >= 7); pool_selected ^= (INTERFACE_DATA.player & 1); @@ -247,6 +252,7 @@ const INTERFACE = { } if((GAME_DATA.turn & 1) != pool_selected) { + console.log("NOT POOL"); result = 0; } } @@ -254,8 +260,11 @@ const INTERFACE = { // Alt move selection. else if(INTERFACE_DATA.select.source == 0 && INTERFACE_DATA.hover.source == 1) { + console.log("D2"); let alt_piece = INTERFACE.selection_has_alt(INTERFACE_DATA.select); if(alt_piece !== null) { + console.log("HAS ALT"); + let pool_player = Math.floor(INTERFACE_DATA.hover.tile / 7); pool_player ^= INTERFACE_DATA.player & 1; if(INTERFACE_DATA.player == 2) { pool_player ^= INTERFACE_DATA.rotate; } @@ -271,7 +280,7 @@ const INTERFACE = { // Handle player action. switch(result) { case 1: { - console.log("D1"); + console.log("ACT1"); let source = INTERFACE_DATA.select.source; if(source == 0 && INTERFACE_DATA.alt_mode) { source = 2; @@ -289,7 +298,7 @@ const INTERFACE = { } break; case 0: { - console.log("D2"); + console.log("ACT2"); // Handle new selection. INTERFACE_DATA.select = null; INTERFACE_DATA.alt_mode = false; @@ -324,8 +333,7 @@ const INTERFACE = { } } break; - // Aux button - case 1: { + default: { INTERFACE_DATA.select = null; } break; } @@ -333,24 +341,31 @@ const INTERFACE = { INTERFACE.game_step(); }, - contextmenu() { + contextmenu(event) { INTERFACE_DATA.select = null; - return false; + if(!event.ctrlKey) { + event.preventDefault(); + return false; + } else { + return true; + } }, - release() { - if(INTERFACE_DATA.hover !== null - && !INTERFACE.Ui.match_select(INTERFACE_DATA.hover, INTERFACE_DATA.clicked) - ){ - if(INTERFACE.Ui.match_select(INTERFACE_DATA.hover, INTERFACE_DATA.select)) { - INTERFACE_DATA.select = null; - INTERFACE_DATA.alt_mode = false; - INTERFACE.game_step(); - } else { - INTERFACE.click({button:0}); + release(event) { + if(event.button == 0) { + if(INTERFACE_DATA.hover !== null + && !INTERFACE.Ui.match_select(INTERFACE_DATA.hover, INTERFACE_DATA.clicked) + ){ + if(INTERFACE.Ui.match_select(INTERFACE_DATA.hover, INTERFACE_DATA.select)) { + INTERFACE_DATA.select = null; + INTERFACE_DATA.alt_mode = false; + INTERFACE.game_step(); + } else { + INTERFACE.click({button:0}); + } } + INTERFACE_DATA.clicked = null; } - INTERFACE_DATA.clicked = null; }, resize() { @@ -1460,6 +1475,7 @@ const INTERFACE = { process(play) { let valid = true; + console.log("PRC " + play.source); switch(play.source) { case 0: case 2: { @@ -1473,6 +1489,7 @@ const INTERFACE = { valid = true; } break; } + console.log("PRC V=" + valid); if(valid) { // Send message to server for online game. diff --git a/www/js/language.js b/www/js/language.js index c4fa2a0..a65caf8 100644 --- a/www/js/language.js +++ b/www/js/language.js @@ -16,7 +16,7 @@ LANGUAGE.Terms = { dusk: new LANGUAGE.Term( "Dusk", "黄昏" ), handle: new LANGUAGE.Term( "Handle", "ハンドル" ), - secret: new LANGUAGE.Term( "Secret", "秘文" ), + secret: new LANGUAGE.Term( "Password", "秘文" ), invitation: new LANGUAGE.Term( "Invitation", "招待" ), reconnect: new LANGUAGE.Term( "Reconnect", "再接続" ), diff --git a/www/js/main.js b/www/js/main.js index 4248daa..1b33440 100644 --- a/www/js/main.js +++ b/www/js/main.js @@ -3,4 +3,5 @@ document.addEventListener("DOMContentLoaded", () => { LOAD(SCENES.Init); document.addEventListener("beforeunload", UNLOAD); + window.addEventListener("popstate", LOAD_URL); }); diff --git a/www/js/scene.js b/www/js/scene.js index 1b290df..b799a6f 100644 --- a/www/js/scene.js +++ b/www/js/scene.js @@ -1216,6 +1216,15 @@ function LOAD_URL() { return; } } break; + + case "u": { + if(parts[2]) { + LOAD(SCEENS.Profile, { + handle:parts[2], + }); + return; + } + } break; } } LOAD(SCENES.Browse); diff --git a/www/js/system.js b/www/js/system.js index 4bdea89..940cf71 100644 --- a/www/js/system.js +++ b/www/js/system.js @@ -557,6 +557,8 @@ function MESSAGE(event) { if(test_result == 0) { console.log("BD " + text); + } else { + console.log("OK " + text); } } break; @@ -581,7 +583,11 @@ function MESSAGE_COMPOSE(data) { length += data[i].length; } + console.log("MSG = " + raw); + SOCKET.send(raw); + } else { + console.log("No Socket"); } } diff --git a/www/js/ui.js b/www/js/ui.js index d26bc54..7ba211b 100644 --- a/www/js/ui.js +++ b/www/js/ui.js @@ -55,7 +55,7 @@ const UI = { password(id) { let input = document.createElement("input"); input.setAttribute("type", "password"); - input.setAttribute("placeholder", "••••••••••••"); + input.setAttribute("placeholder", "◦◦◦◦"); if(id !== null) { input.setAttribute("id", id); } return input; },