diff --git a/src/main.rs b/src/main.rs index f333a03..fb928fd 100644 --- a/src/main.rs +++ b/src/main.rs @@ -17,12 +17,17 @@ lazy_static! { static ref ROOMS: Mutex> = Mutex::new(HashMap::new()); } +/* + * Config options + */ #[derive(Parser, Debug)] #[clap(about, version, author)] struct Args { // Port number for server #[clap(short, long, default_value_t = 8000)] port: u16, + // this is here so that it shows up in help, it's actually used in templates.rs + // sucks #[clap(short, long, default_value = "http://127.0.0.1:8000")] base_url: String, } @@ -37,6 +42,9 @@ fn rocket() -> _ { .mount("/", routes![index, room]) } +/* + * handles creating rooms, player counts and + */ #[get("/?")] async fn index(mut roomname: String) -> Template { // remove whitespace from roomname @@ -72,7 +80,31 @@ async fn index(mut roomname: String) -> Template { } } +/* + * handles requests for joining rooms and returns the real room page if token and room combination + * is correct + */ #[get("/room?&&")] -async fn room(roomname: &str, token: usize, player1: bool) -> String{ - "hey gamer".to_string() +async fn room(roomname: &str, token: usize, player1: bool) -> Template { + // lock room list mutex, don't forget to drop again + let rooms = ROOMS.lock().unwrap(); + if rooms.contains_key(roomname) { + let room = rooms.get(roomname).unwrap(); + // the room is real and the token is correct + if room.token == token { + drop(rooms); + //TODO: placeholder + templates::get_back_to_home("cool!") + } + // the room is real but the token is incorrect + else { + drop(rooms); + templates::get_back_to_home("illegalroom") + } + } + // the room doesn't exist + else { + drop(rooms); + templates::get_back_to_home("illegalroom") + } } diff --git a/static/style.css b/static/style.css index 65cc374..9b486b3 100644 --- a/static/style.css +++ b/static/style.css @@ -10,7 +10,7 @@ * { margin: 0; padding: 0; - } +} body, html { @@ -67,14 +67,15 @@ footer { align-self: center; min-height: 90%; justify-content: center; - width: 100%; + width: 90%; + max-width: 900px; } button, .contentdiv *, a, p { - line-height: 1.84em; + line-height: 48pt; border-radius: 0.48em; font-size: 24pt; margin-top: 0.5em; @@ -93,6 +94,11 @@ input { width: 90%; } +form { + width: 100%; + justify-content: center; +} + input { cursor: text; } diff --git a/templates/join.html.hbs b/templates/join.html.hbs index 1eb1c2a..669d4d8 100644 --- a/templates/join.html.hbs +++ b/templates/join.html.hbs @@ -22,7 +22,7 @@ class="{{hide_url_button}}" href="{{url_button_url}}" type="button" - >{{url_button_url}} + >copy url {{link}}