diff --git a/src/player.rs b/src/player.rs index 0da6e4c..878041c 100644 --- a/src/player.rs +++ b/src/player.rs @@ -187,31 +187,32 @@ pub fn execute_close(player: &mut Player, nombre: &str) -> String { if objeto.is_ok() { let mut obj = objeto.unwrap(); - println!("{:?}", obj); + // println!("{:?}", obj); if obj.tipo == "salida" { - for (pos, condicion) in obj.condiciones.iter().enumerate() { - if condicion.as_ref().unwrap() == "open" { - output = String::from("Está abierta."); - // actualizar a salida en sentido contrario - // implementar get_salida_opuesta() para actualizar o sentido contario tamén + if obj.condiciones.len() > 0 { + for (pos, condicion) in obj.condiciones.iter().enumerate() { + if condicion.as_ref().unwrap() == "open" { + // actualizar a salida en sentido contrario + // implementar get_salida_opuesta() para actualizar o sentido contario tamén - obj.condiciones[pos] = Some("closed".to_string()); - let res = update_object_conditions(location.to_string(), obj.condiciones); - - // non actualiza, da ok pero actualiza 0 rows - match res { - Ok(n) => println!("actualizados {} rows", n), - Err(error) => println!("Error actualizando: {:?}", error), - }; - - break; - } else if condicion.as_ref().unwrap() == "closed" { - output = String::from("Ya está cerrada."); - break; - } else { - output = String::from(""); + obj.condiciones[pos] = Some("closed".to_string()); // cambia 'open' por 'closed' + let res = update_object_conditions(obj.tag, obj.condiciones); + if res.is_ok() && res.unwrap() > 0 { + output = String::from("Ahora está cerrada."); + } else { + output = String::from("No se pudo cerrar."); + } + break; + } else if condicion.as_ref().unwrap() == "closed" { + output = String::from("Ya está cerrada."); + break; + } else { + output = String::from("No es necesario."); + } } + } else { + output = String::from("No es necesario."); } } else { // é un item