From 8bb1a70b182d8ec706dc0d09dd1a034d70641ffd Mon Sep 17 00:00:00 2001 From: yukirij Date: Wed, 28 Aug 2024 00:46:40 -0700 Subject: [PATCH] Remove player name from resume list. --- server/src/manager/data.rs | 10 ++-- server/src/protocol/packet/session_list.rs | 6 +-- www/js/system.js | 6 +-- www/js/ui.js | 54 +++++++++++++++++++++- 4 files changed, 66 insertions(+), 10 deletions(-) diff --git a/server/src/manager/data.rs b/server/src/manager/data.rs index 631c4a6..abf08fd 100644 --- a/server/src/manager/data.rs +++ b/server/src/manager/data.rs @@ -297,8 +297,12 @@ pub async fn thread_system(mut app:App, bus:Bus) valid &= !request.is_live || (session.p_dawn.connections.len() > 0 && session.p_dusk.connections.len() > 0); if valid { - let is_player = user_id.is_some() && (session.p_dawn.user == user_id || session.p_dusk.user == user_id); - let is_turn = is_player && ((session.p_dawn.user == user_id && (session.game.turn & 1) == 0) || ((session.p_dusk.user == user_id && (session.game.turn & 1) == 1))); + let player :u8 = if user_id.is_some() { + if session.p_dawn.user == user_id { 1 } + else if session.p_dusk.user == user_id { 2 } + else { 0 } + } else { 0 }; + let is_turn = player != 0 && (session.game.turn & 1) == player as u16 - 1; let dawn_handle = if let Some(uid) = session.p_dawn.user { if let Some(user) = app.get_user_by_id(uid) { @@ -321,7 +325,7 @@ pub async fn thread_system(mut app:App, bus:Bus) turn:session.game.turn, last_move:[0; 3], viewers:session.connections.len() as u32, - is_player, + player, is_turn, }); diff --git a/server/src/protocol/packet/session_list.rs b/server/src/protocol/packet/session_list.rs index f4baa1a..4c31577 100644 --- a/server/src/protocol/packet/session_list.rs +++ b/server/src/protocol/packet/session_list.rs @@ -59,7 +59,7 @@ pub struct PacketSessionListResponseRecord { pub turn:u16, pub last_move:[u8; 3], pub viewers:u32, - pub is_player:bool, + pub player:u8, pub is_turn:bool, } @@ -86,8 +86,8 @@ impl Packet for PacketSessionListResponse { let mut chunk = record.token.to_vec(); let mut flags = 0u32; - flags |= record.is_player as u32; - flags |= (record.is_turn as u32) << 1; + flags |= record.player as u32; + flags |= (record.is_turn as u32) << 2; // Flags chunk.append(&mut pack_u32(flags)); diff --git a/www/js/system.js b/www/js/system.js index 8026f2d..3865941 100644 --- a/www/js/system.js +++ b/www/js/system.js @@ -138,7 +138,7 @@ function MESSAGE(event) { turn: 0, move: "", viewers: 0, - is_player: false, + player: false, is_turn: false, }; @@ -155,8 +155,8 @@ function MESSAGE(event) { index = result.index; let flags = result.data; - record.is_player = (flags & 1) != 0; - record.is_turn = ((flags >> 1) & 1) != 0; + record.player = flags & 3; + record.is_turn = ((flags >> 2) & 1) != 0; // Dawn handle result = UNPACK.string(bytes, index); diff --git a/www/js/ui.js b/www/js/ui.js index c025359..d2fd422 100644 --- a/www/js/ui.js +++ b/www/js/ui.js @@ -191,7 +191,7 @@ const UI = { }; spectate_callback = spectate_callback.bind({token: records[r].token}); - if(records[r].is_player) { + if(records[r].player != 0) { let button_resume = UI.button(LANG("resume"), join_callback); if(records[r].is_turn) { button_resume.setAttribute("class", "highlight"); @@ -223,6 +223,58 @@ const UI = { return tbody; }, + session_table_resume(records) { + let rows = [ ]; + + for(let r = 0; r < records.length; ++r) { + let buttons = [ ]; + let join_callback = function() { + SCENE_FORWARD = SCENE; + LOAD(SCENES.Game, { + token:this.token, + mode:INTERFACE.Mode.Player, + }); + MESSAGE_SESSION_VIEW(this.token, true); + }; + join_callback = join_callback.bind({token: records[r].token}); + + let spectate_callback = function() { + SCENE_FORWARD = SCENE; + LOAD(SCENES.Game, { + token:this.token, + mode:INTERFACE.Mode.Review, + }); + MESSAGE_SESSION_VIEW(this.token, false); + }; + spectate_callback = spectate_callback.bind({token: records[r].token}); + + let button_resume = UI.button(LANG("resume"), join_callback); + if(records[r].is_turn) { + button_resume.setAttribute("class", "highlight"); + } + + buttons.push(button_resume); + buttons.push(UI.button(LANG("review"), spectate_callback)); + + let handle = records[r].dawn; + if(records[r].player == 1) { handle = records[r].dusk; } + + rows.push([ + handle, + UI.text(records[r].turn), + UI.text(records[r].viewers), + buttons, + ]); + } + + let tbody = UI.table_content( + [ LANG("handle"), LANG("turn"), LANG("viewers"), "" ], + rows, + ); + + return tbody; + }, + /*session_table_join(records) { let rows = [ ];