Skip to content

Commit 047ba79

Browse files
authored
Add command-line arguments parsing, --server (#90) (#114)
* Add structopt dependency * Add command-line --server argument to connect to server on startup * Don't show login/server screen (which pings servers) when connecting to a server from command-line
1 parent 6322cf8 commit 047ba79

File tree

3 files changed

+153
-7
lines changed

3 files changed

+153
-7
lines changed

Cargo.lock

Lines changed: 127 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ collision = "0.19.0"
3838
aes = "0.3.2"
3939
cfb8 = "0.3.2"
4040
rsa_public_encrypt_pkcs1 = "0.2.0"
41+
structopt = "0.2.14"
4142
clipboard = { git = "https://github.com/aweinstock314/rust-clipboard", rev = "07d080be58a361a5bbdb548fafe9449843d968be" }
4243
# clippy = "*"
4344

src/main.rs

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ use std::time::{Instant, Duration};
1818
use log::{info, warn};
1919
extern crate steven_shared as shared;
2020

21+
use structopt::StructOpt;
22+
2123
#[macro_use]
2224
pub mod macros;
2325

@@ -163,6 +165,14 @@ impl Game {
163165
}
164166
}
165167

168+
#[derive(StructOpt, Debug)]
169+
#[structopt(name = "basic")]
170+
struct Opt {
171+
/// Server to connect to
172+
#[structopt(short = "s", long = "server")]
173+
server: Option<String>,
174+
}
175+
166176
cfg_if! {
167177
if #[cfg(target_arch = "wasm32")] {
168178
extern crate console_error_panic_hook;
@@ -175,6 +185,8 @@ cfg_if! {
175185

176186
#[wasm_bindgen]
177187
pub fn main() {
188+
let opt = Opt::from_args();
189+
178190
set_panic_hook();
179191
std::env::set_var("RUST_BACKTRACE", "1");
180192

@@ -226,14 +238,16 @@ pub fn main() {
226238
let frame_time = 1e9f64 / 60.0;
227239

228240
let mut screen_sys = screen::ScreenSystem::new();
229-
#[cfg(not(target_arch = "wasm32"))]
230-
{
231-
screen_sys.add_screen(Box::new(screen::Login::new(vars.clone())));
232-
}
241+
if opt.server.is_none() {
242+
#[cfg(not(target_arch = "wasm32"))]
243+
{
244+
screen_sys.add_screen(Box::new(screen::Login::new(vars.clone())));
245+
}
233246

234-
#[cfg(target_arch = "wasm32")]
235-
{
236-
screen_sys.add_screen(Box::new(screen::ServerList::new(None)));
247+
#[cfg(target_arch = "wasm32")]
248+
{
249+
screen_sys.add_screen(Box::new(screen::ServerList::new(None)));
250+
}
237251
}
238252

239253
let textures = renderer.get_textures();
@@ -259,6 +273,10 @@ pub fn main() {
259273
};
260274
game.renderer.camera.pos = cgmath::Point3::new(0.5, 13.2, 0.5);
261275

276+
if opt.server.is_some() {
277+
game.connect_to(&opt.server.unwrap());
278+
}
279+
262280
let mut last_resource_version = 0;
263281
while !game.should_close {
264282

0 commit comments

Comments
 (0)