Save / Load levels
This commit is contained in:
+7
-5
@@ -17,7 +17,7 @@ fn main() {
|
||||
|
||||
let mut running = true;
|
||||
|
||||
let mut map = Map::from_str(include_str!("../../assets/levels/level2.txt")).unwrap();
|
||||
let mut map = Map::load("./assets/levels/level2.lvl").unwrap();
|
||||
|
||||
loop {
|
||||
let top_panel_size = Vector2::new(renderer.window().size().x as f32, 50.0);
|
||||
@@ -42,10 +42,12 @@ fn main() {
|
||||
let x = ((x - left_panel_size.x as i32) / 16) as usize;
|
||||
let y = ((y - top_panel_size.y as i32) / 16) as usize;
|
||||
|
||||
if map.tile(y, x) == CollisionTile::empty() {
|
||||
map.set_tile(y, x, CollisionTile::full());
|
||||
} else {
|
||||
map.set_tile(y, x, CollisionTile::empty());
|
||||
if let Some(tile) = map.tile(y, x) {
|
||||
if tile == CollisionTile::empty() {
|
||||
map.set_tile(y, x, CollisionTile::full());
|
||||
} else {
|
||||
map.set_tile(y, x, CollisionTile::empty());
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
+22
-15
@@ -7,6 +7,7 @@ use sfml::window::{joystick, Event, Key};
|
||||
use rusty::engine::character::Character;
|
||||
use rusty::engine::controls::Controls;
|
||||
use rusty::engine::renderer::Renderer;
|
||||
use rusty::engine::map::Map;
|
||||
use rusty::engine::scene::Scene;
|
||||
|
||||
fn parse_resolution(res: &str) -> Result<(u32, u32), String> {
|
||||
@@ -32,20 +33,25 @@ fn parse_resolution(res: &str) -> Result<(u32, u32), String> {
|
||||
fn main() {
|
||||
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();
|
||||
.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("map")
|
||||
.short("m")
|
||||
.long("map")
|
||||
.value_name("MAP")
|
||||
.takes_value(true)
|
||||
.default_value("assets/levels/level2.lvl")
|
||||
.validator(|x| Map::load(x).map(|_| ()).map_err(|x| format!("{}", x))))
|
||||
.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");
|
||||
@@ -62,7 +68,8 @@ fn main() {
|
||||
let mut character = Character::with_controls(controls);
|
||||
character.set_position((10.0, 0.0));
|
||||
|
||||
let mut scene = Scene::new();
|
||||
let map = Map::load(matches.value_of("map").unwrap()).unwrap();
|
||||
let mut scene = Scene::from_map(map);
|
||||
scene.add(character);
|
||||
|
||||
let mut renderer = Renderer::new(resolution.0, resolution.1, fullscreen);
|
||||
|
||||
Reference in New Issue
Block a user