Remove player name from resume list.

This commit is contained in:
yukirij 2024-08-28 00:46:40 -07:00
parent 9726ae89be
commit 8bb1a70b18
4 changed files with 66 additions and 10 deletions

View File

@ -297,8 +297,12 @@ pub async fn thread_system(mut app:App, bus:Bus<protocol::QRPacket>)
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<protocol::QRPacket>)
turn:session.game.turn,
last_move:[0; 3],
viewers:session.connections.len() as u32,
is_player,
player,
is_turn,
});

View File

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

View File

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

View File

@ -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 = [ ];