summaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
authortroido <troido@protonmail.com>2020-02-17 02:24:14 +0100
committertroido <troido@protonmail.com>2020-02-17 02:24:14 +0100
commitc921686355c86afb5bf47e4b6c696057ede01b1f (patch)
treecb55b0d464010e44aeeca16f0f734ac3464da600 /src/main.rs
parent625ab5bb37cbe35fd9662a33bc92f73520e59c81 (diff)
persistently save the room state
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/main.rs b/src/main.rs
index 4301a07..5b2bc8a 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -40,6 +40,7 @@ use self::room::Room;
use self::util::ToJson;
use self::roomtemplate::RoomTemplate;
use self::defaultencyclopedia::default_encyclopedia;
+use self::persistence::{FileStorage, PersistentStorage};
@@ -57,9 +58,16 @@ fn main() {
let mut gameserver = GameServer::new(servers);
-
let mut room = gen_room();
+ let storage = FileStorage::new("~/.rustifarm/saves");
+ if let Ok(state) = storage.load_room("room".to_string()) {
+ room.load_saved(&state);
+ println!("loaded saved state successfully");
+ } else {
+ println!("loading saved state failed");
+ }
+
println!("asciifarm started");
@@ -69,7 +77,8 @@ fn main() {
room.set_input(actions);
room.update();
- if count % 20 == 0 {
+ if count % 50 == 0 {
+ storage.save_room("room".to_string(), room.save());
println!("{}", room.save().to_json());
}
let messages = room.view();