room from string (wow what a monstrosity)
This commit is contained in:
parent
9830d57d13
commit
ed33ff3972
|
@ -28,12 +28,12 @@ a library for parsing Bitsy game data.
|
||||||
* dialogue to
|
* dialogue to
|
||||||
* variable from
|
* variable from
|
||||||
* variable to
|
* variable to
|
||||||
|
* room from
|
||||||
|
|
||||||
## todo
|
## todo
|
||||||
|
|
||||||
### functions
|
### functions
|
||||||
|
|
||||||
* room from
|
|
||||||
* room to
|
* room to
|
||||||
* game from
|
* game from
|
||||||
* game to
|
* game to
|
||||||
|
|
54
src/main.rs
54
src/main.rs
|
@ -747,7 +747,7 @@ fn room_from_string(string: String) -> Room {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let lines = lines;
|
let lines= &lines[1..];
|
||||||
|
|
||||||
let mut tiles : Vec<String> = Vec::new();
|
let mut tiles : Vec<String> = Vec::new();
|
||||||
|
|
||||||
|
@ -762,6 +762,58 @@ fn room_from_string(string: String) -> Room {
|
||||||
Room { id, palette, name, tiles, items, exits, endings }
|
Room { id, palette, name, tiles, items, exits, endings }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_room_from_string() {
|
||||||
|
let output = room_from_string("ROOM a\n0,0,0,0,0,0,0,0,1l,0,0,0,0,0,0,0\ny,x,0,0,1j,0,0,1j,1l,0,1j,0,0,1j,0,0\ny,y,x,k,k,1c,1x,1y,1m,0,0,0,0,0,0,0\ny,y,y,x,k,s,s,s,k,k,k,k,k,1g,1f,k\nk,z,z,z,1i,1u,1u,1u,1v,11,19,1b,1a,1e,10,k\nk,z,z,11,12,z,z,z,z,10,17,z,18,1e,12,k\nk,z,z,z,z,z,z,z,z,1k,14,15,16,1h,z,k\nk,z,z,z,z,z,z,10,1d,1v,1r,1s,1r,1q,1z,k\nk,z,z,12,10,z,z,z,1i,1n,1o,1o,1o,1p,z,k\nk,z,z,z,z,z,z,z,z,z,z,z,10,z,z,k\nk,z,z,z,z,z,11,z,z,z,z,z,z,z,z,k\nk,z,z,z,z,z,z,z,z,z,12,z,z,10,12,k\nk,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\nNAME cellar 7\nITM d 11,5\nITM e 8,3\nITM 5 1,0\nITM 6 2,1\nITM 6 3,2\nEXT 3,3 3 10,6\nEND undefined 8,7\nPAL 9".to_string());
|
||||||
|
|
||||||
|
// todo can I instantiate these inline?
|
||||||
|
let mut items = HashMap::new();
|
||||||
|
let mut exits = HashMap::new();
|
||||||
|
let mut endings = HashMap::new();
|
||||||
|
|
||||||
|
items.insert(Position { x: 11, y: 5}, "d".to_string());
|
||||||
|
items.insert(Position { x: 8, y: 3}, "e".to_string());
|
||||||
|
items.insert(Position { x: 1, y: 0}, "5".to_string());
|
||||||
|
items.insert(Position { x: 2, y: 1}, "6".to_string());
|
||||||
|
items.insert(Position { x: 3, y: 2}, "6".to_string());
|
||||||
|
|
||||||
|
exits.insert(
|
||||||
|
Position { x: 3, y: 3},
|
||||||
|
Exit { room: "3".to_string(), position: Position { x: 10, y: 6}}
|
||||||
|
);
|
||||||
|
|
||||||
|
endings.insert(Position { x: 8, y: 7 }, "undefined".to_string());
|
||||||
|
|
||||||
|
let expected = Room {
|
||||||
|
id: "a".to_string(),
|
||||||
|
palette: "9".to_string(),
|
||||||
|
name: Some("cellar 7".to_string()),
|
||||||
|
tiles: vec![
|
||||||
|
"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"1l".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),
|
||||||
|
"y".to_string(),"x".to_string(),"0".to_string(),"0".to_string(),"1j".to_string(),"0".to_string(),"0".to_string(),"1j".to_string(),"1l".to_string(),"0".to_string(),"1j".to_string(),"0".to_string(),"0".to_string(),"1j".to_string(),"0".to_string(),"0".to_string(),
|
||||||
|
"y".to_string(),"y".to_string(),"x".to_string(),"k".to_string(),"k".to_string(),"1c".to_string(),"1x".to_string(),"1y".to_string(),"1m".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),
|
||||||
|
"y".to_string(),"y".to_string(),"y".to_string(),"x".to_string(),"k".to_string(),"s".to_string(),"s".to_string(),"s".to_string(),"k".to_string(),"k".to_string(),"k".to_string(),"k".to_string(),"k".to_string(),"1g".to_string(),"1f".to_string(),"k".to_string(),
|
||||||
|
"k".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"1i".to_string(),"1u".to_string(),"1u".to_string(),"1u".to_string(),"1v".to_string(),"11".to_string(),"19".to_string(),"1b".to_string(),"1a".to_string(),"1e".to_string(),"10".to_string(),"k".to_string(),
|
||||||
|
"k".to_string(),"z".to_string(),"z".to_string(),"11".to_string(),"12".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"10".to_string(),"17".to_string(),"z".to_string(),"18".to_string(),"1e".to_string(),"12".to_string(),"k".to_string(),
|
||||||
|
"k".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"1k".to_string(),"14".to_string(),"15".to_string(),"16".to_string(),"1h".to_string(),"z".to_string(),"k".to_string(),
|
||||||
|
"k".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"10".to_string(),"1d".to_string(),"1v".to_string(),"1r".to_string(),"1s".to_string(),"1r".to_string(),"1q".to_string(),"1z".to_string(),"k".to_string(),
|
||||||
|
"k".to_string(),"z".to_string(),"z".to_string(),"12".to_string(),"10".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"1i".to_string(),"1n".to_string(),"1o".to_string(),"1o".to_string(),"1o".to_string(),"1p".to_string(),"z".to_string(),"k".to_string(),
|
||||||
|
"k".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"10".to_string(),"z".to_string(),"z".to_string(),"k".to_string(),
|
||||||
|
"k".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"11".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"k".to_string(),
|
||||||
|
"k".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"z".to_string(),"12".to_string(),"z".to_string(),"z".to_string(),"10".to_string(),"12".to_string(),"k".to_string(),
|
||||||
|
"k".to_string(),"k".to_string(),"k".to_string(),"k".to_string(),"k".to_string(),"k".to_string(),"k".to_string(),"k".to_string(),"k".to_string(),"k".to_string(),"k".to_string(),"k".to_string(),"k".to_string(),"k".to_string(),"k".to_string(),"k".to_string(),
|
||||||
|
"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),
|
||||||
|
"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),
|
||||||
|
"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string(),"0".to_string()
|
||||||
|
],
|
||||||
|
items,
|
||||||
|
exits,
|
||||||
|
endings
|
||||||
|
};
|
||||||
|
|
||||||
|
assert_eq!(output, expected);
|
||||||
|
}
|
||||||
|
|
||||||
// fn game_from_string(game: String ) -> Game {
|
// fn game_from_string(game: String ) -> Game {
|
||||||
// // probably needs to split the game data into different segments starting from the end
|
// // probably needs to split the game data into different segments starting from the end
|
||||||
// // e.g. VAR... then END... then DLG...
|
// // e.g. VAR... then END... then DLG...
|
||||||
|
|
Loading…
Reference in New Issue