summaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
authortroido <troido@protonmail.com>2020-02-20 23:18:44 +0100
committertroido <troido@protonmail.com>2020-02-20 23:18:44 +0100
commitd225dc6349670926a4adea932f0ea77b7af5acbc (patch)
treec70d5c5b2f9d791cf3b9855733e171092497a2e0 /src/main.rs
parent933e831a82725e8bf22788d6a9f1fba2c596a975 (diff)
load room template from file
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs62
1 files changed, 7 insertions, 55 deletions
diff --git a/src/main.rs b/src/main.rs
index 6b92077..2e4fffb 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -3,8 +3,8 @@ use std::collections::HashMap;
use std::thread::sleep;
use std::time::Duration;
use std::path::Path;
-
-use serde_json::json;
+use std::path::PathBuf;
+use std::str::FromStr;
mod server;
mod gameserver;
@@ -29,6 +29,7 @@ mod defaultencyclopedia;
mod playerstate;
mod roomid;
mod persistence;
+mod worldloader;
pub use self::pos::Pos;
pub use self::playerid::PlayerId;
@@ -40,11 +41,11 @@ use self::server::tcpserver::TcpServer;
use self::server::Server;
use self::room::Room;
use self::util::ToJson;
-use self::roomtemplate::RoomTemplate;
use self::defaultencyclopedia::default_encyclopedia;
use self::persistence::{FileStorage, PersistentStorage};
use crate::controls::Action;
use crate::playerstate::PlayerState;
+use crate::worldloader::WorldLoader;
@@ -62,7 +63,9 @@ fn main() {
let mut gameserver = GameServer::new(servers);
- let mut room = gen_room();
+ let loader = WorldLoader::new(PathBuf::from_str(&(env!("CARGO_MANIFEST_DIR").to_owned() + "/content/maps/")).unwrap(), RoomId::from_str("room"));
+ let mut room = Room::new(RoomId::from_str("room"), default_encyclopedia());
+ room.load_from_template(&loader.load_room(room.id.clone()).unwrap());
let storage = FileStorage::new(FileStorage::savedir().expect("couldn't find any save directory"));
if let Ok(state) = storage.load_room(RoomId::from_str("room")) {
@@ -122,55 +125,4 @@ fn main() {
}
}
-fn gen_room<'a, 'b>() -> Room<'a, 'b> {
- let assemblages = default_encyclopedia();
- let mut room = Room::new(RoomId::from_str("room"), assemblages);
-
- let roomtemplate = RoomTemplate::from_json(&json!({
- "width": 42,
- "height": 22,
- "spawn": [5, 15],
- "field": [
- " XXXXXXXXXXXX~~~XXXXXXXXXXXXXXXXXXXXXX",
- " ,,,,,,,,,,,,~~~,,,,,,,,,,,,,,,,,,,,,X",
- " ,,,,,,,,,,,,,~~~,,,,,,,,,,,,,,,,,,,,,X",
- " ,,,,,,,,,,,,,~~~~,,,,,,,,,,,,,,,,,,,,X",
- " bbbb..,,,,,,,,,,,~~~,,,,,,,,,,,,,,,,,,,,X",
- " ,,.,,,,,,,,,,,~~~,,,,,,,,,,,,,,,,,,,,X",
- " ,,,.,,,,,,,,,,,~~~,,,,,,,,,,,,,,,,,,,,X",
- " ,,,,.,,,,,,,,,,,~~~,,,,,,,,,,,,,,,,,,,,X",
- "X,,,,,.,,,,,,,,,,,~~~~,,,,,,T,,,,,,,,,,,,X",
- "X,,,,,.,,,,,,,,,,,,~~~,,,,,,,,,,,,,,,,,,,X",
- "X,,,,,.,,,,,,,,,,,,~~~,,,,,T,,,,######,,,X",
- "X,,,,,.,,,,,,,,,,,,bbb,,,,,,,,,,#++++#,,,X",
- "X,,,,,.............bbb...........++++#,,,X",
- "X,**,,.,,,,,,,,,,,,bbb,,,,,,,,,,#++++#,,,X",
- "X,*,*,.,,,,,,,,,,,,~~~,,,T,,,T,,#++++#,,,X",
- "X,,*,,.,,,,,,,,,,,,~~~,,,,,,,,,,######,,,X",
- "X,**,,.,,,,,,,,,,,~~~~,,,,,,,,,,f,,,,f,,,X",
- "X,,*,,.,,,,,,,,,,,~~~''''''''''''''''f'''X",
- "X*,,,,.,,,,,,,,,,,~~~'''''''''''f''''f'''X",
- "X,,,,,.,,,,,,,,,,,~~~'''''''''''ffffff'''X",
- "X,,,,,.,,,,,,,,,,,~~~''''''''''''''''''''X",
- "XXXXX,.,XXXXXXXXXX~~~XXXXXXXXXXXXXXXXXXXXX"
- ],
- "mapping": {
- "#": "wall",
- ",": "grass",
- ".": "ground",
- "~": "water",
- "b": "bridge",
- "+": "floor",
- "'": "greengrass",
- "T": ["grass", "tree"],
- "f": ["grass", "fence"],
- "X": "rock",
- "*": ["grass", "pebble"],
- " ": []
- }
- })).unwrap();
- room.load_from_template(&roomtemplate);
- room
-}
-