Add current turn highlight; fix join on challenge answer.
This commit is contained in:
parent
adfa367153
commit
86b5f96092
@ -134,10 +134,10 @@ async fn main()
|
||||
cache.cache_whitespace_minimize("/.html").ok();
|
||||
cache.cache_file_group("text/css", "/.css", &[
|
||||
"www/css/main.css",
|
||||
"www/css/util.css",
|
||||
"www/css/ui.css",
|
||||
"www/css/form.css",
|
||||
"www/css/game.css",
|
||||
"www/css/util.css",
|
||||
]).ok();
|
||||
cache.cache_file_group("text/javascript", "/.js", &[
|
||||
"www/js/const.js",
|
||||
|
@ -298,6 +298,7 @@ pub async fn thread_system(mut app:App, bus:Bus<protocol::QRPacket>)
|
||||
|
||||
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 dawn_handle = if let Some(uid) = session.p_dawn.user {
|
||||
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,
|
||||
last_move:[0; 3],
|
||||
viewers:session.connections.len() as u32,
|
||||
player:is_player,
|
||||
is_player,
|
||||
is_turn,
|
||||
});
|
||||
|
||||
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 {
|
||||
for (_, uid) in app.user_id.pairs() {
|
||||
let uid = *uid as u32;
|
||||
|
||||
|
||||
if uid != user_id {
|
||||
if let Some(user) = app.get_user_by_id(uid) {
|
||||
response.records.push(PacketUserListData {
|
||||
|
@ -59,7 +59,8 @@ pub struct PacketSessionListResponseRecord {
|
||||
pub turn:u16,
|
||||
pub last_move:[u8; 3],
|
||||
pub viewers:u32,
|
||||
pub player:bool,
|
||||
pub is_player:bool,
|
||||
pub is_turn:bool,
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
@ -84,6 +85,13 @@ impl Packet for PacketSessionListResponse {
|
||||
for record in &self.records {
|
||||
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
|
||||
let mut bytes = record.handles[0].as_bytes().to_vec();
|
||||
chunk.append(&mut pack_u16(bytes.len() as u16));
|
||||
@ -104,7 +112,7 @@ impl Packet for PacketSessionListResponse {
|
||||
chunk.append(&mut pack_u32(record.viewers));
|
||||
|
||||
// User is player
|
||||
chunk.append(&mut vec![record.player as u8]);
|
||||
//chunk.append(&mut vec![record.player as u8]);
|
||||
|
||||
result.append(&mut chunk);
|
||||
}
|
||||
|
@ -49,6 +49,9 @@ main>table.list td:last-child>button{
|
||||
border:0;
|
||||
outline:0;
|
||||
}
|
||||
main>table.list td:last-child>button.highlight {
|
||||
background-color:#772d43;
|
||||
}
|
||||
main>table.list td:last-child>button:hover{
|
||||
background-color:#343434;
|
||||
}
|
||||
@ -129,7 +132,3 @@ input#turn-slider{
|
||||
accent-color:#702e2e;
|
||||
}
|
||||
|
||||
button#button-resign.warn {
|
||||
background-color:#471414;
|
||||
color:#e0e0e0;
|
||||
}
|
||||
|
@ -1 +1,7 @@
|
||||
span.text-system{color:#909090;}
|
||||
|
||||
button#button-resign.warn {
|
||||
background-color:#471414;
|
||||
color:#e0e0e0;
|
||||
}
|
||||
|
||||
|
@ -633,6 +633,8 @@ const SCENES = {
|
||||
|
||||
Challenge:{
|
||||
load() {
|
||||
if(sessionStorage.getItem("auth") === null) return false;
|
||||
|
||||
CONTEXT.Data = {
|
||||
page:0,
|
||||
records:[],
|
||||
@ -708,6 +710,8 @@ const SCENES = {
|
||||
|
||||
ChallengeList:{
|
||||
load() {
|
||||
if(sessionStorage.getItem("auth") === null) return false;
|
||||
|
||||
CONTEXT.Data = {
|
||||
page:0,
|
||||
records:[],
|
||||
@ -788,6 +792,7 @@ const SCENES = {
|
||||
token:data.token,
|
||||
mode:INTERFACE.Mode.Player,
|
||||
});
|
||||
MESSAGE_SESSION_VIEW(data.token, true);
|
||||
} else {
|
||||
SCENE.refresh();
|
||||
}
|
||||
|
@ -138,9 +138,11 @@ function MESSAGE(event) {
|
||||
turn: 0,
|
||||
move: "",
|
||||
viewers: 0,
|
||||
player: false,
|
||||
is_player: false,
|
||||
is_turn: false,
|
||||
};
|
||||
|
||||
// Token
|
||||
if(index <= bytes.length + 8) {
|
||||
for(let i = 0; i < 8; ++i) {
|
||||
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);
|
||||
index = result.index;
|
||||
record.dawn = result.data;
|
||||
|
||||
// Dusk handle
|
||||
result = UNPACK.string(bytes, index);
|
||||
index = result.index;
|
||||
record.dusk = result.data;
|
||||
|
||||
// Turn number
|
||||
result = UNPACK.u16(bytes, index);
|
||||
index = result.index;
|
||||
record.turn = result.data;
|
||||
|
||||
// Last move
|
||||
if(index <= bytes.length + 3) {
|
||||
let move = new Uint8Array(3);
|
||||
for(let i = 0; i < 3; ++i) {
|
||||
@ -169,12 +183,11 @@ function MESSAGE(event) {
|
||||
record.move = UNPACK.move(move);
|
||||
}
|
||||
|
||||
// Reviewer count
|
||||
result = UNPACK.u32(bytes, index);
|
||||
index = result.index;
|
||||
record.viewers = result.data;
|
||||
|
||||
record.player = bytes[index++] != 0;
|
||||
|
||||
data.records.push(record);
|
||||
}
|
||||
}
|
||||
@ -355,6 +368,7 @@ function MESSAGE(event) {
|
||||
return;
|
||||
}
|
||||
|
||||
console.log(data);
|
||||
if(SCENE.message !== undefined) { SCENE.message(code, data) };
|
||||
}
|
||||
|
||||
@ -405,8 +419,6 @@ function MESSAGE_CHALLENGE(handle) {
|
||||
}
|
||||
|
||||
function MESSAGE_CHALLENGE_ANSWER(handle, answer) {
|
||||
console.log(handle + " " + answer);
|
||||
|
||||
MESSAGE_COMPOSE([
|
||||
PACK.u16(OpCode.ChallengeAnswer),
|
||||
PACK.u8(+answer),
|
||||
|
14
www/js/ui.js
14
www/js/ui.js
@ -189,8 +189,14 @@ const UI = {
|
||||
};
|
||||
spectate_callback = spectate_callback.bind({token: records[r].token});
|
||||
|
||||
if(records[r].player) {
|
||||
buttons.push(UI.button("Resume", join_callback));
|
||||
if(records[r].is_player) {
|
||||
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));
|
||||
} else {
|
||||
if(sessionStorage.getItem("auth") !== null && (records[r].dawn == "" || records[r].dusk == "")) {
|
||||
@ -222,7 +228,7 @@ const UI = {
|
||||
return tbody;
|
||||
},
|
||||
|
||||
session_table_join(records) {
|
||||
/*session_table_join(records) {
|
||||
let rows = [ ];
|
||||
|
||||
for(let r = 0; r < records.length; ++r) {
|
||||
@ -257,7 +263,7 @@ const UI = {
|
||||
);
|
||||
|
||||
return tbody;
|
||||
},
|
||||
},*/
|
||||
|
||||
session_table_history(records) {
|
||||
let rows = [ ];
|
||||
|
Loading…
x
Reference in New Issue
Block a user