Add debug comments; improve mouse button handling.

This commit is contained in:
yukirij 2024-10-17 11:21:42 -07:00
parent c3e2e3d5e1
commit a8869efebd
8 changed files with 63 additions and 20 deletions

View File

@ -13,6 +13,12 @@ impl UserStatus {
} }
} }
#[derive(Clone)]
pub struct UserStatistics {
pub games_played:u32,
pub games_won:u32,
}
#[derive(Clone)] #[derive(Clone)]
pub struct User { pub struct User {
pub id:u32, pub id:u32,

View File

@ -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)] #[tokio::main(flavor = "multi_thread", worker_threads = 12)]
async fn main() async fn main()
{ {

View File

@ -233,12 +233,17 @@ const INTERFACE = {
// Otherwise, switch selection. // Otherwise, switch selection.
let result = 0; let result = 0;
if(INTERFACE_DATA.select !== null) { if(INTERFACE_DATA.select !== null) {
console.log("Select not null");
// Play selection. // Play selection.
if(INTERFACE_DATA.hover.source == 0 && (INTERFACE_DATA.mode == INTERFACE.Mode.Local || INTERFACE_DATA.player == (GAME_DATA.turn & 1))) { 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]; let tile_state = INTERFACE_DATA.Game.board_state[INTERFACE_DATA.hover.tile][1];
result = +(tile_state == INTERFACE.TileStatus.Valid || tile_state == INTERFACE.TileStatus.Threat); result = +(tile_state == INTERFACE.TileStatus.Valid || tile_state == INTERFACE.TileStatus.Threat);
console.log("RES " + result);
if(INTERFACE_DATA.select.source == 1) { if(INTERFACE_DATA.select.source == 1) {
console.log("SRC1");
let pool_selected = +(INTERFACE_DATA.select.tile >= 7); let pool_selected = +(INTERFACE_DATA.select.tile >= 7);
pool_selected ^= (INTERFACE_DATA.player & 1); pool_selected ^= (INTERFACE_DATA.player & 1);
@ -247,6 +252,7 @@ const INTERFACE = {
} }
if((GAME_DATA.turn & 1) != pool_selected) { if((GAME_DATA.turn & 1) != pool_selected) {
console.log("NOT POOL");
result = 0; result = 0;
} }
} }
@ -254,8 +260,11 @@ const INTERFACE = {
// Alt move selection. // Alt move selection.
else if(INTERFACE_DATA.select.source == 0 && INTERFACE_DATA.hover.source == 1) { 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); let alt_piece = INTERFACE.selection_has_alt(INTERFACE_DATA.select);
if(alt_piece !== null) { if(alt_piece !== null) {
console.log("HAS ALT");
let pool_player = Math.floor(INTERFACE_DATA.hover.tile / 7); let pool_player = Math.floor(INTERFACE_DATA.hover.tile / 7);
pool_player ^= INTERFACE_DATA.player & 1; pool_player ^= INTERFACE_DATA.player & 1;
if(INTERFACE_DATA.player == 2) { pool_player ^= INTERFACE_DATA.rotate; } if(INTERFACE_DATA.player == 2) { pool_player ^= INTERFACE_DATA.rotate; }
@ -271,7 +280,7 @@ const INTERFACE = {
// Handle player action. // Handle player action.
switch(result) { switch(result) {
case 1: { case 1: {
console.log("D1"); console.log("ACT1");
let source = INTERFACE_DATA.select.source; let source = INTERFACE_DATA.select.source;
if(source == 0 && INTERFACE_DATA.alt_mode) { if(source == 0 && INTERFACE_DATA.alt_mode) {
source = 2; source = 2;
@ -289,7 +298,7 @@ const INTERFACE = {
} break; } break;
case 0: { case 0: {
console.log("D2"); console.log("ACT2");
// Handle new selection. // Handle new selection.
INTERFACE_DATA.select = null; INTERFACE_DATA.select = null;
INTERFACE_DATA.alt_mode = false; INTERFACE_DATA.alt_mode = false;
@ -324,8 +333,7 @@ const INTERFACE = {
} }
} break; } break;
// Aux button default: {
case 1: {
INTERFACE_DATA.select = null; INTERFACE_DATA.select = null;
} break; } break;
} }
@ -333,24 +341,31 @@ const INTERFACE = {
INTERFACE.game_step(); INTERFACE.game_step();
}, },
contextmenu() { contextmenu(event) {
INTERFACE_DATA.select = null; INTERFACE_DATA.select = null;
return false; if(!event.ctrlKey) {
event.preventDefault();
return false;
} else {
return true;
}
}, },
release() { release(event) {
if(INTERFACE_DATA.hover !== null if(event.button == 0) {
&& !INTERFACE.Ui.match_select(INTERFACE_DATA.hover, INTERFACE_DATA.clicked) 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; if(INTERFACE.Ui.match_select(INTERFACE_DATA.hover, INTERFACE_DATA.select)) {
INTERFACE_DATA.alt_mode = false; INTERFACE_DATA.select = null;
INTERFACE.game_step(); INTERFACE_DATA.alt_mode = false;
} else { INTERFACE.game_step();
INTERFACE.click({button:0}); } else {
INTERFACE.click({button:0});
}
} }
INTERFACE_DATA.clicked = null;
} }
INTERFACE_DATA.clicked = null;
}, },
resize() { resize() {
@ -1460,6 +1475,7 @@ const INTERFACE = {
process(play) { process(play) {
let valid = true; let valid = true;
console.log("PRC " + play.source);
switch(play.source) { switch(play.source) {
case 0: case 0:
case 2: { case 2: {
@ -1473,6 +1489,7 @@ const INTERFACE = {
valid = true; valid = true;
} break; } break;
} }
console.log("PRC V=" + valid);
if(valid) { if(valid) {
// Send message to server for online game. // Send message to server for online game.

View File

@ -16,7 +16,7 @@ LANGUAGE.Terms = {
dusk: new LANGUAGE.Term( "Dusk", "黄昏" ), dusk: new LANGUAGE.Term( "Dusk", "黄昏" ),
handle: new LANGUAGE.Term( "Handle", "ハンドル" ), handle: new LANGUAGE.Term( "Handle", "ハンドル" ),
secret: new LANGUAGE.Term( "Secret", "秘文" ), secret: new LANGUAGE.Term( "Password", "秘文" ),
invitation: new LANGUAGE.Term( "Invitation", "招待" ), invitation: new LANGUAGE.Term( "Invitation", "招待" ),
reconnect: new LANGUAGE.Term( "Reconnect", "再接続" ), reconnect: new LANGUAGE.Term( "Reconnect", "再接続" ),

View File

@ -3,4 +3,5 @@ document.addEventListener("DOMContentLoaded", () => {
LOAD(SCENES.Init); LOAD(SCENES.Init);
document.addEventListener("beforeunload", UNLOAD); document.addEventListener("beforeunload", UNLOAD);
window.addEventListener("popstate", LOAD_URL);
}); });

View File

@ -1216,6 +1216,15 @@ function LOAD_URL() {
return; return;
} }
} break; } break;
case "u": {
if(parts[2]) {
LOAD(SCEENS.Profile, {
handle:parts[2],
});
return;
}
} break;
} }
} }
LOAD(SCENES.Browse); LOAD(SCENES.Browse);

View File

@ -557,6 +557,8 @@ function MESSAGE(event) {
if(test_result == 0) { if(test_result == 0) {
console.log("BD " + text); console.log("BD " + text);
} else {
console.log("OK " + text);
} }
} break; } break;
@ -581,7 +583,11 @@ function MESSAGE_COMPOSE(data) {
length += data[i].length; length += data[i].length;
} }
console.log("MSG = " + raw);
SOCKET.send(raw); SOCKET.send(raw);
} else {
console.log("No Socket");
} }
} }

View File

@ -55,7 +55,7 @@ const UI = {
password(id) { password(id) {
let input = document.createElement("input"); let input = document.createElement("input");
input.setAttribute("type", "password"); input.setAttribute("type", "password");
input.setAttribute("placeholder", "••••••••••••"); input.setAttribute("placeholder", "◦◦◦◦");
if(id !== null) { input.setAttribute("id", id); } if(id !== null) { input.setAttribute("id", id); }
return input; return input;
}, },