animation frames to string; sprite to string

This commit is contained in:
Max Bradbury 2020-04-06 07:23:20 +01:00
parent 6d8f8fa9b4
commit 7f6fa9df82
1 changed files with 27 additions and 12 deletions

View File

@ -172,6 +172,21 @@ fn test_image_to_string() {
assert_eq!(output, expected);
}
fn animation_frames_to_string(animation_frames: Vec<Image>) -> String {
let mut string = String::new();
let last_frame = animation_frames.len() - 1;
for (i, frame) in animation_frames.into_iter().enumerate() {
string.push_str(&image_to_string(frame));
if i < last_frame {
string.push_str(&"\n>\n".to_string());
}
}
string
}
fn tile_from_string(string: String) -> Tile {
let mut lines: Vec<&str> = string.split("\n").collect();
@ -223,21 +238,10 @@ fn test_tile_from_string() {
}
fn tile_to_string(tile: Tile) -> String {
let mut animation_frames = String::new();
let last_frame = tile.animation_frames.len() - 1;
for (i, frame) in tile.animation_frames.into_iter().enumerate() {
animation_frames.push_str(&image_to_string(frame));
if i < last_frame {
animation_frames.push_str(&"\n>\n".to_string());
}
}
format!(
"TIL {}\n{}{}{}",
tile.id,
animation_frames,
animation_frames_to_string(tile.animation_frames),
if tile.name.is_some() {format!("\nNAME {}", tile.name.unwrap())} else {"".to_string()},
if tile.wall {"\nWAL true"} else {""}
)
@ -464,6 +468,17 @@ fn test_sprite_from_string() {
assert_eq!(output, expected);
}
fn sprite_to_string(sprite: Sprite) -> String {
format!(
"SPR {}\n{}\n{}{}\nPOS {}",
sprite.id,
animation_frames_to_string(sprite.animation_frames),
if sprite.name.is_some() {format!("NAME {}", sprite.name.unwrap())} else {"".to_string()},
if sprite.dialogue.is_some() {format!("DLG {}", sprite.dialogue.unwrap())} else {"".to_string()},
position_to_string(sprite.position),
)
}
// fn game_from_string(game: String ) -> Game {
// // probably needs to split the game data into different segments starting from the end
// // e.g. VAR... then END... then DLG...