don't overwrite keys

This commit is contained in:
Max Bradbury 2020-06-29 18:29:24 +01:00
parent a969368a8f
commit c46d6837b9
1 changed files with 9 additions and 5 deletions

View File

@ -346,7 +346,7 @@ impl Game {
let mut sprite_id_changes: HashMap<String, String> = HashMap::new(); let mut sprite_id_changes: HashMap<String, String> = HashMap::new();
fn insert_if_different(map: &mut HashMap<String, String>, old: String, new: String) { fn insert_if_different(map: &mut HashMap<String, String>, old: String, new: String) {
if old != new { if old != new && ! map.contains_key(&old) {
map.insert(old, new); map.insert(old, new);
} }
} }
@ -418,8 +418,9 @@ impl Game {
if item.dialogue_id.is_some() { if item.dialogue_id.is_some() {
let key = item.dialogue_id.clone().unwrap(); let key = item.dialogue_id.clone().unwrap();
if dialogue_id_changes.contains_key(&key) { let change = dialogue_id_changes.get(&key);
item.dialogue_id = Some(dialogue_id_changes[&key].clone()); if change.is_some() {
item.dialogue_id = Some(change.unwrap().clone());
} }
} }
@ -442,8 +443,9 @@ impl Game {
for room in &game.rooms { for room in &game.rooms {
let mut room = room.clone(); let mut room = room.clone();
if room_id_changes.contains_key(&room.id) { let room_id_change = room_id_changes.get(&room.id);
room.id = room_id_changes.get(&room.id).unwrap().clone(); if room_id_change.is_some() {
room.id = room_id_change.unwrap().clone();
} }
if room.palette_id.is_some() { if room.palette_id.is_some() {
@ -955,5 +957,7 @@ mod test {
game_b.add_sprite(sprite); game_b.add_sprite(sprite);
game_a.merge(game_b); game_a.merge(game_b);
assert_eq!(game_a.get_sprite_by_id("2".to_string()).unwrap().room_id, Some(room_id)); assert_eq!(game_a.get_sprite_by_id("2".to_string()).unwrap().room_id, Some(room_id));
} }
} }