Implementado update_object_conditions() pero non actualiza. Cambio comando de 'abrir' a 'cerrar' por comodidade cos exemplos
This commit is contained in:
parent
f8bc805dce
commit
952acda755
@ -42,6 +42,15 @@ pub fn update_object_location(pegatina: String, new_location: String) -> Result<
|
||||
.execute(conn)
|
||||
}
|
||||
|
||||
// actualiza as condiciós de un obxeto, devolve o número de rows afectados
|
||||
pub fn update_object_conditions(pegatina: String, cond: Vec<Option<String>>) -> Result<usize, diesel::result::Error> {
|
||||
use crate::schema::object::dsl::*;
|
||||
let conn = &mut establish_connection();
|
||||
diesel::update(object.filter(tag.eq(pegatina)))
|
||||
.set(condiciones.eq(cond))
|
||||
.execute(conn)
|
||||
}
|
||||
|
||||
// get_salidas trae da base de datos todos os obxetos salida de unha localización
|
||||
pub fn get_salidas(pegatina: String) -> Result<Vec<RObject>, diesel::result::Error> {
|
||||
use crate::schema::object::dsl::*;
|
||||
|
@ -1,4 +1,4 @@
|
||||
use crate::objects::{get_objects, get_object_here, update_object_location};
|
||||
use crate::objects::{get_objects, get_object_here, update_object_location, update_object_conditions};
|
||||
use crate::models::Player;
|
||||
use crate::database::establish_connection;
|
||||
use diesel::prelude::*;
|
||||
@ -175,29 +175,34 @@ pub fn execute_kill(player: &mut Player, nombre: &str) -> String {
|
||||
}
|
||||
|
||||
//execute_open cambia a condición 'close' a 'open' de un obxeto nesta sala polo nome
|
||||
pub fn execute_open(player: &mut Player, nombre: &str) -> String {
|
||||
pub fn execute_close(player: &mut Player, nombre: &str) -> String {
|
||||
let mut output = String::from("");
|
||||
let location = &player.location;
|
||||
let objeto = get_object_here(location.to_string(), nombre.to_string());
|
||||
|
||||
if objeto.is_ok() {
|
||||
let obj = objeto.unwrap();
|
||||
// println!("{:?}", obj);
|
||||
let mut obj = objeto.unwrap();
|
||||
println!("{:?}", obj);
|
||||
|
||||
if obj.tipo == "salida" {
|
||||
for condicion in obj.condiciones {
|
||||
for (pos, condicion) in obj.condiciones.iter().enumerate() {
|
||||
if condicion.as_ref().unwrap() == "open" {
|
||||
output = String::from("Ya está abierta.");
|
||||
output = String::from("Está abierta.");
|
||||
// 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" {
|
||||
// está cerrada, actualizar a open
|
||||
// e actualizar a salida en sentido contrario
|
||||
// implementar actualizar_condiciones()
|
||||
// implementar get_salida_opuesta()
|
||||
output = String::from("Está cerrada.");
|
||||
|
||||
|
||||
|
||||
output = String::from("Ya está cerrada.");
|
||||
break;
|
||||
} else {
|
||||
output = String::from("");
|
||||
|
@ -106,7 +106,7 @@ pub fn update_state(player: &mut Player, command: &Command) -> String {
|
||||
"coger" => output = execute_pick(player, command.noun.as_str()),
|
||||
"tirar" => output = execute_drop(player, command.noun.as_str()),
|
||||
"matar" => output = execute_kill(player, command.noun.as_str()),
|
||||
"abrir" => output = execute_open(player, command.noun.as_str()),
|
||||
"cerrar" => output = execute_close(player, command.noun.as_str()),
|
||||
_ => output = format!("No se como hacer eso."),
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user