impl some more stuff
This commit is contained in:
parent
0d99649e56
commit
6e269c6b1f
5 changed files with 23 additions and 1 deletions
|
@ -5,11 +5,13 @@ class Tavern {
|
||||||
this.msgs = [];
|
this.msgs = [];
|
||||||
this.connected = false;
|
this.connected = false;
|
||||||
this.loggedIn = false;
|
this.loggedIn = false;
|
||||||
|
this.admin = false;
|
||||||
this.socket.onmessage = (m) => {
|
this.socket.onmessage = (m) => {
|
||||||
m = JSON.parse(m.data);
|
m = JSON.parse(m.data);
|
||||||
console.log(m);
|
console.log(m);
|
||||||
if (m.login) {
|
if (m.login) {
|
||||||
this.socket.loggedIn = m.login.success;
|
this.socket.loggedIn = m.login.success;
|
||||||
|
this.admin = m.login.admin;
|
||||||
this.call(this.onlogin, this.socket.loggedIn);
|
this.call(this.onlogin, this.socket.loggedIn);
|
||||||
}
|
}
|
||||||
if (m.message) {
|
if (m.message) {
|
||||||
|
@ -105,6 +107,22 @@ class Tavern {
|
||||||
if (!this.connected || this.loggedIn) { return; }
|
if (!this.connected || this.loggedIn) { return; }
|
||||||
this.socket.send(JSON.stringify('get_scene_list'))
|
this.socket.send(JSON.stringify('get_scene_list'))
|
||||||
}
|
}
|
||||||
|
spawn_token = (scene, character, x, y, img_path, visible_to_players) => {
|
||||||
|
if (!this.connected || this.loggedIn) { return; }
|
||||||
|
this.socket.send(JSON.stringify({
|
||||||
|
spawn_token: {
|
||||||
|
map_id: scene, character: character, x: x, y: y, img_path: img_path, visible_to_players: visible_to_players
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
create_scene = (title) => {
|
||||||
|
if (!this.connected || this.loggedIn) { return; }
|
||||||
|
this.socket.send(JSON.stringify({ create_scene: { title: title } }));
|
||||||
|
}
|
||||||
|
shutdown = () => {
|
||||||
|
if (!this.connected || this.loggedIn) { return; }
|
||||||
|
this.socket.send(JSON.stringify('shutdown'));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const tavern = new Tavern();
|
const tavern = new Tavern();
|
||||||
|
|
|
@ -9,6 +9,7 @@ pub struct LoginRequest {
|
||||||
#[derive(Serialize, Clone, Debug)]
|
#[derive(Serialize, Clone, Debug)]
|
||||||
pub struct LoginResult {
|
pub struct LoginResult {
|
||||||
pub success: bool,
|
pub success: bool,
|
||||||
|
pub admin: bool,
|
||||||
pub username: String,
|
pub username: String,
|
||||||
// TODO: Figure out what the user needs on successful login to reduce traffic
|
// TODO: Figure out what the user needs on successful login to reduce traffic
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,6 +44,7 @@ pub enum Request {
|
||||||
amount: usize,
|
amount: usize,
|
||||||
from: usize,
|
from: usize,
|
||||||
},
|
},
|
||||||
|
/// TODO: Perhaps remove it, as the client should auto get it on login and use GetChatHistory when needed
|
||||||
GetLastMessages {
|
GetLastMessages {
|
||||||
amount: usize,
|
amount: usize,
|
||||||
},
|
},
|
||||||
|
|
|
@ -101,6 +101,7 @@ impl GameServer {
|
||||||
SendTo::User(id.clone()),
|
SendTo::User(id.clone()),
|
||||||
api::Response::Login(api::login::LoginResult {
|
api::Response::Login(api::login::LoginResult {
|
||||||
success: true,
|
success: true,
|
||||||
|
admin,
|
||||||
username: login.username.clone(),
|
username: login.username.clone(),
|
||||||
}),
|
}),
|
||||||
));
|
));
|
||||||
|
@ -112,6 +113,7 @@ impl GameServer {
|
||||||
SendTo::User(id.clone()),
|
SendTo::User(id.clone()),
|
||||||
api::Response::Login(api::login::LoginResult {
|
api::Response::Login(api::login::LoginResult {
|
||||||
success: false,
|
success: false,
|
||||||
|
admin: false,
|
||||||
username: login.username,
|
username: login.username,
|
||||||
}),
|
}),
|
||||||
));
|
));
|
||||||
|
|
|
@ -130,7 +130,7 @@ async fn handle_socket(
|
||||||
b = brecv.recv() => {
|
b = brecv.recv() => {
|
||||||
println!("{} trying to log in: {:?}", &temp_id, &b);
|
println!("{} trying to log in: {:?}", &temp_id, &b);
|
||||||
if let Ok((to_id, msg)) = b {
|
if let Ok((to_id, msg)) = b {
|
||||||
if let Response::Login(open_tavern::api::login::LoginResult { success, username }) = &msg {
|
if let Response::Login(open_tavern::api::login::LoginResult { success, username, admin: _ }) = &msg {
|
||||||
let to_id = to_id.should_send(&temp_id);
|
let to_id = to_id.should_send(&temp_id);
|
||||||
if to_id && *success && id.as_ref().map(|id| id == username).unwrap_or(false) {
|
if to_id && *success && id.as_ref().map(|id| id == username).unwrap_or(false) {
|
||||||
_ = socket.send(Message::Text(serde_json::to_string(&msg).unwrap_or_default().into())).await;
|
_ = socket.send(Message::Text(serde_json::to_string(&msg).unwrap_or_default().into())).await;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue