Added clap options to choose the renderer size
This commit is contained in:
parent
45d301361c
commit
0250e887d4
|
@ -4,6 +4,7 @@ version = "0.1.0"
|
||||||
authors = ["Thomas Forgione <thomas@forgione.fr>"]
|
authors = ["Thomas Forgione <thomas@forgione.fr>"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
clap = "2.32.0"
|
||||||
sfml = { git = "https://gitea.tforgione.fr/free-rusty-maker/rust-sfml" }
|
sfml = { git = "https://gitea.tforgione.fr/free-rusty-maker/rust-sfml" }
|
||||||
|
|
||||||
[build-dependencies]
|
[build-dependencies]
|
||||||
|
|
|
@ -1,8 +1,15 @@
|
||||||
|
#[macro_use]
|
||||||
|
extern crate clap;
|
||||||
extern crate sfml;
|
extern crate sfml;
|
||||||
extern crate rusty;
|
extern crate rusty;
|
||||||
|
|
||||||
use std::time::Instant;
|
use std::time::Instant;
|
||||||
|
|
||||||
|
use clap::{
|
||||||
|
Arg,
|
||||||
|
App,
|
||||||
|
};
|
||||||
|
|
||||||
use sfml::window::{
|
use sfml::window::{
|
||||||
Event,
|
Event,
|
||||||
Key,
|
Key,
|
||||||
|
@ -13,9 +20,45 @@ use rusty::engine::character::Character;
|
||||||
use rusty::engine::controls::Controls;
|
use rusty::engine::controls::Controls;
|
||||||
use rusty::engine::renderer::Renderer;
|
use rusty::engine::renderer::Renderer;
|
||||||
|
|
||||||
|
fn parse_resolution(res: &str) -> Result<(u32, u32), String> {
|
||||||
|
let split = res.split('x').collect::<Vec<_>>();
|
||||||
|
|
||||||
|
if split.len() != 2 {
|
||||||
|
return Err("Resolution should be WIDTHxHEIGHT".to_owned());
|
||||||
|
}
|
||||||
|
|
||||||
|
let width = match split[0].parse::<u32>() {
|
||||||
|
Ok(w) => w,
|
||||||
|
Err(_) => return Err("WIDTH must be an integer".to_owned()),
|
||||||
|
};
|
||||||
|
|
||||||
|
let height = match split[1].parse::<u32>() {
|
||||||
|
Ok(h) => h,
|
||||||
|
Err(_) => return Err("HEIGHT must be an integer".to_owned()),
|
||||||
|
};
|
||||||
|
|
||||||
|
Ok((width, height))
|
||||||
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let game_width = 800;
|
|
||||||
let game_height = 450;
|
let matches = App::new("Rusty Maker")
|
||||||
|
.version(crate_version!())
|
||||||
|
.arg(Arg::with_name("resolution")
|
||||||
|
.short("r")
|
||||||
|
.long("resolution")
|
||||||
|
.value_name("WIDTHxHEIGHT")
|
||||||
|
.takes_value(true)
|
||||||
|
.default_value("800x450")
|
||||||
|
.validator(|x| parse_resolution(&x).map(|_| ())))
|
||||||
|
.arg(Arg::with_name("fullscreen")
|
||||||
|
.short("f")
|
||||||
|
.long("fullscreen")
|
||||||
|
.takes_value(false))
|
||||||
|
.get_matches();
|
||||||
|
|
||||||
|
let resolution = parse_resolution(matches.value_of("resolution").unwrap()).unwrap();
|
||||||
|
let fullscreen = matches.is_present("fullscreen");
|
||||||
|
|
||||||
let mut character = Character::with_controls(Controls::new());
|
let mut character = Character::with_controls(Controls::new());
|
||||||
character.set_position((10.0, 0.0));
|
character.set_position((10.0, 0.0));
|
||||||
|
@ -23,7 +66,7 @@ fn main() {
|
||||||
let mut scene = Scene::new();
|
let mut scene = Scene::new();
|
||||||
scene.add(character);
|
scene.add(character);
|
||||||
|
|
||||||
let mut renderer = Renderer::new(game_width, game_height);
|
let mut renderer = Renderer::new(resolution.0, resolution.1, fullscreen);
|
||||||
|
|
||||||
let mut after_loop = Instant::now();
|
let mut after_loop = Instant::now();
|
||||||
let mut running = true;
|
let mut running = true;
|
||||||
|
|
|
@ -50,12 +50,12 @@ pub struct Renderer {
|
||||||
|
|
||||||
impl Renderer {
|
impl Renderer {
|
||||||
/// Creates a new renderer.
|
/// Creates a new renderer.
|
||||||
pub fn new(width: u32, height: u32) -> Renderer {
|
pub fn new(width: u32, height: u32, fullscreen: bool) -> Renderer {
|
||||||
|
|
||||||
let mut window = RenderWindow::new(
|
let mut window = RenderWindow::new(
|
||||||
(width, height),
|
(width, height),
|
||||||
"Free Rusty Maker",
|
"Free Rusty Maker",
|
||||||
Style::CLOSE,
|
if fullscreen { Style::FULLSCREEN } else { Style::CLOSE },
|
||||||
&Default::default(),
|
&Default::default(),
|
||||||
);
|
);
|
||||||
window.set_vertical_sync_enabled(true);
|
window.set_vertical_sync_enabled(true);
|
||||||
|
|
Loading…
Reference in New Issue