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)]
pub struct User {
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)]
async fn main()
{

View File

@ -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.

View File

@ -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", "再接続" ),

View File

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

View File

@ -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);

View File

@ -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");
}
}

View File

@ -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;
},