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_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",
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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;
|
|
||||||
}
|
|
||||||
|
@ -1 +1,7 @@
|
|||||||
span.text-system{color:#909090;}
|
span.text-system{color:#909090;}
|
||||||
|
|
||||||
|
button#button-resign.warn {
|
||||||
|
background-color:#471414;
|
||||||
|
color:#e0e0e0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
@ -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),
|
||||||
|
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});
|
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 = [ ];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user