Add current turn highlight; fix join on challenge answer.

This commit is contained in:
yukirij 2024-08-27 00:18:04 -07:00
parent adfa367153
commit 86b5f96092
8 changed files with 56 additions and 18 deletions

View File

@ -134,10 +134,10 @@ async fn main()
cache.cache_whitespace_minimize("/.html").ok(); cache.cache_whitespace_minimize("/.html").ok();
cache.cache_file_group("text/css", "/.css", &[ cache.cache_file_group("text/css", "/.css", &[
"www/css/main.css", "www/css/main.css",
"www/css/util.css",
"www/css/ui.css", "www/css/ui.css",
"www/css/form.css", "www/css/form.css",
"www/css/game.css", "www/css/game.css",
"www/css/util.css",
]).ok(); ]).ok();
cache.cache_file_group("text/javascript", "/.js", &[ cache.cache_file_group("text/javascript", "/.js", &[
"www/js/const.js", "www/js/const.js",

View File

@ -298,6 +298,7 @@ pub async fn thread_system(mut app:App, bus:Bus<protocol::QRPacket>)
if valid { if valid {
let is_player = user_id.is_some() && (session.p_dawn.user == user_id || session.p_dusk.user == user_id); 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 dawn_handle = if let Some(uid) = session.p_dawn.user { let dawn_handle = if let Some(uid) = session.p_dawn.user {
if let Some(user) = app.get_user_by_id(uid) { if let Some(user) = app.get_user_by_id(uid) {
@ -320,7 +321,8 @@ pub async fn thread_system(mut app:App, bus:Bus<protocol::QRPacket>)
turn:session.game.turn, turn:session.game.turn,
last_move:[0; 3], last_move:[0; 3],
viewers:session.connections.len() as u32, viewers:session.connections.len() as u32,
player:is_player, is_player,
is_turn,
}); });
count += 1; count += 1;
@ -649,7 +651,7 @@ pub async fn thread_system(mut app:App, bus:Bus<protocol::QRPacket>)
if let Some(user_id) = user_id { if let Some(user_id) = user_id {
for (_, uid) in app.user_id.pairs() { for (_, uid) in app.user_id.pairs() {
let uid = *uid as u32; let uid = *uid as u32;
if uid != user_id { if uid != user_id {
if let Some(user) = app.get_user_by_id(uid) { if let Some(user) = app.get_user_by_id(uid) {
response.records.push(PacketUserListData { response.records.push(PacketUserListData {

View File

@ -59,7 +59,8 @@ pub struct PacketSessionListResponseRecord {
pub turn:u16, pub turn:u16,
pub last_move:[u8; 3], pub last_move:[u8; 3],
pub viewers:u32, pub viewers:u32,
pub player:bool, pub is_player:bool,
pub is_turn:bool,
} }
#[derive(Clone)] #[derive(Clone)]
@ -84,6 +85,13 @@ impl Packet for PacketSessionListResponse {
for record in &self.records { for record in &self.records {
let mut chunk = record.token.to_vec(); 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
chunk.append(&mut pack_u32(flags));
// Dawn handle // Dawn handle
let mut bytes = record.handles[0].as_bytes().to_vec(); let mut bytes = record.handles[0].as_bytes().to_vec();
chunk.append(&mut pack_u16(bytes.len() as u16)); chunk.append(&mut pack_u16(bytes.len() as u16));
@ -104,7 +112,7 @@ impl Packet for PacketSessionListResponse {
chunk.append(&mut pack_u32(record.viewers)); chunk.append(&mut pack_u32(record.viewers));
// User is player // User is player
chunk.append(&mut vec![record.player as u8]); //chunk.append(&mut vec![record.player as u8]);
result.append(&mut chunk); result.append(&mut chunk);
} }

View File

@ -49,6 +49,9 @@ main>table.list td:last-child>button{
border:0; border:0;
outline:0; outline:0;
} }
main>table.list td:last-child>button.highlight {
background-color:#772d43;
}
main>table.list td:last-child>button:hover{ main>table.list td:last-child>button:hover{
background-color:#343434; background-color:#343434;
} }
@ -129,7 +132,3 @@ input#turn-slider{
accent-color:#702e2e; accent-color:#702e2e;
} }
button#button-resign.warn {
background-color:#471414;
color:#e0e0e0;
}

View File

@ -1 +1,7 @@
span.text-system{color:#909090;} span.text-system{color:#909090;}
button#button-resign.warn {
background-color:#471414;
color:#e0e0e0;
}

View File

@ -633,6 +633,8 @@ const SCENES = {
Challenge:{ Challenge:{
load() { load() {
if(sessionStorage.getItem("auth") === null) return false;
CONTEXT.Data = { CONTEXT.Data = {
page:0, page:0,
records:[], records:[],
@ -708,6 +710,8 @@ const SCENES = {
ChallengeList:{ ChallengeList:{
load() { load() {
if(sessionStorage.getItem("auth") === null) return false;
CONTEXT.Data = { CONTEXT.Data = {
page:0, page:0,
records:[], records:[],
@ -788,6 +792,7 @@ const SCENES = {
token:data.token, token:data.token,
mode:INTERFACE.Mode.Player, mode:INTERFACE.Mode.Player,
}); });
MESSAGE_SESSION_VIEW(data.token, true);
} else { } else {
SCENE.refresh(); SCENE.refresh();
} }

View File

@ -138,9 +138,11 @@ function MESSAGE(event) {
turn: 0, turn: 0,
move: "", move: "",
viewers: 0, viewers: 0,
player: false, is_player: false,
is_turn: false,
}; };
// Token
if(index <= bytes.length + 8) { if(index <= bytes.length + 8) {
for(let i = 0; i < 8; ++i) { for(let i = 0; i < 8; ++i) {
record.token[i] = bytes[index]; record.token[i] = bytes[index];
@ -148,18 +150,30 @@ function MESSAGE(event) {
} }
} }
// Flags
result = UNPACK.u32(bytes, index);
index = result.index;
let flags = result.data;
record.is_player = (flags & 1) != 0;
record.is_turn = ((flags >> 1) & 1) != 0;
// Dawn handle
result = UNPACK.string(bytes, index); result = UNPACK.string(bytes, index);
index = result.index; index = result.index;
record.dawn = result.data; record.dawn = result.data;
// Dusk handle
result = UNPACK.string(bytes, index); result = UNPACK.string(bytes, index);
index = result.index; index = result.index;
record.dusk = result.data; record.dusk = result.data;
// Turn number
result = UNPACK.u16(bytes, index); result = UNPACK.u16(bytes, index);
index = result.index; index = result.index;
record.turn = result.data; record.turn = result.data;
// Last move
if(index <= bytes.length + 3) { if(index <= bytes.length + 3) {
let move = new Uint8Array(3); let move = new Uint8Array(3);
for(let i = 0; i < 3; ++i) { for(let i = 0; i < 3; ++i) {
@ -169,12 +183,11 @@ function MESSAGE(event) {
record.move = UNPACK.move(move); record.move = UNPACK.move(move);
} }
// Reviewer count
result = UNPACK.u32(bytes, index); result = UNPACK.u32(bytes, index);
index = result.index; index = result.index;
record.viewers = result.data; record.viewers = result.data;
record.player = bytes[index++] != 0;
data.records.push(record); data.records.push(record);
} }
} }
@ -355,6 +368,7 @@ function MESSAGE(event) {
return; return;
} }
console.log(data);
if(SCENE.message !== undefined) { SCENE.message(code, data) }; if(SCENE.message !== undefined) { SCENE.message(code, data) };
} }
@ -405,8 +419,6 @@ function MESSAGE_CHALLENGE(handle) {
} }
function MESSAGE_CHALLENGE_ANSWER(handle, answer) { function MESSAGE_CHALLENGE_ANSWER(handle, answer) {
console.log(handle + " " + answer);
MESSAGE_COMPOSE([ MESSAGE_COMPOSE([
PACK.u16(OpCode.ChallengeAnswer), PACK.u16(OpCode.ChallengeAnswer),
PACK.u8(+answer), PACK.u8(+answer),

View File

@ -189,8 +189,14 @@ const UI = {
}; };
spectate_callback = spectate_callback.bind({token: records[r].token}); spectate_callback = spectate_callback.bind({token: records[r].token});
if(records[r].player) { if(records[r].is_player) {
buttons.push(UI.button("Resume", join_callback)); let button_resume = UI.button("Resume", join_callback);
if(records[r].is_turn) {
console.log("HERE");
button_resume.setAttribute("class", "highlight");
}
buttons.push(button_resume);
buttons.push(UI.button("Review", spectate_callback)); buttons.push(UI.button("Review", spectate_callback));
} else { } else {
if(sessionStorage.getItem("auth") !== null && (records[r].dawn == "" || records[r].dusk == "")) { if(sessionStorage.getItem("auth") !== null && (records[r].dawn == "" || records[r].dusk == "")) {
@ -222,7 +228,7 @@ const UI = {
return tbody; return tbody;
}, },
session_table_join(records) { /*session_table_join(records) {
let rows = [ ]; let rows = [ ];
for(let r = 0; r < records.length; ++r) { for(let r = 0; r < records.length; ++r) {
@ -257,7 +263,7 @@ const UI = {
); );
return tbody; return tbody;
}, },*/
session_table_history(records) { session_table_history(records) {
let rows = [ ]; let rows = [ ];