summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/roomtemplate.rs10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/roomtemplate.rs b/src/roomtemplate.rs
index da4d3a5..c8d9918 100644
--- a/src/roomtemplate.rs
+++ b/src/roomtemplate.rs
@@ -38,13 +38,15 @@ impl RoomTemplate {
mapping.insert(key.chars().next().ok_or(perr!("mapping key is empty string"))?, templates);
}
+ let width = size.0 as usize;
+ let height = size.1 as usize;
let mut field = Vec::new();
- field.resize((size.0 * size.1) as usize, Vec::new());
+ field.resize_with(width * height, Vec::new);
let jsonfield: &Vec<Value> = jsonroom.get("field").ok_or(perr!("no field"))?.as_array().ok_or(perr!("field not an array"))?;
// todo: what if size doesn't match actual dimensions
- for (y, row) in jsonfield.iter().enumerate() {
- for (x, ch) in row.as_str().ok_or(perr!("field row not a string"))?.chars().enumerate() {
- field[x + y * (size.0 as usize)] = mapping.get(&ch).ok_or(perr!("char not found in mapping"))?.clone();
+ for (y, row) in jsonfield.iter().take(height).enumerate() {
+ for (x, ch) in row.as_str().ok_or(perr!("field row not a string"))?.chars().take(width).enumerate() {
+ field[x + y * width] = mapping.get(&ch).ok_or(perr!("char not found in mapping"))?.clone();
}
}