comando cerrar nos dous sentidos
This commit is contained in:
parent
874fc0356a
commit
9c0dffe023
@ -77,3 +77,15 @@ pub fn get_salidas_here(pegatina: String, nome: String) -> Result<RObject, diese
|
|||||||
.filter(nombre.eq(nome))
|
.filter(nombre.eq(nome))
|
||||||
.first(conn)
|
.first(conn)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//get_salida_opuesta trae a salida opuesta á que se indica
|
||||||
|
// a salida opuesta ten como destino o location da actual e o seu location é o destino da actual
|
||||||
|
pub fn get_salida_opuesta(salida_actual: RObject) -> Result<RObject, diesel::result::Error> {
|
||||||
|
use crate::schema::object::dsl::*;
|
||||||
|
let conn = &mut establish_connection();
|
||||||
|
object
|
||||||
|
.filter(tipo.eq("salida"))
|
||||||
|
.filter(location.eq(salida_actual.destino.unwrap()))
|
||||||
|
.filter(destino.eq(salida_actual.location))
|
||||||
|
.first(conn)
|
||||||
|
}
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
use crate::database::establish_connection;
|
use crate::database::establish_connection;
|
||||||
use crate::models::Player;
|
use crate::models::{Player, RObject};
|
||||||
use crate::npc::get_npc_here;
|
use crate::npc::get_npc_here;
|
||||||
use crate::objects::{
|
use crate::objects::{
|
||||||
get_object_here, get_objects, update_object_conditions, update_object_location,
|
get_object_here, get_objects, update_object_conditions, update_object_location, get_salida_opuesta,
|
||||||
};
|
};
|
||||||
use diesel::prelude::*;
|
use diesel::prelude::*;
|
||||||
use rand::Rng;
|
use rand::Rng;
|
||||||
@ -181,23 +181,41 @@ 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
|
//execute_open cambia a condición 'close' a 'open' de un obxeto nesta sala polo nome
|
||||||
pub fn execute_close(player: &mut Player, nombre: &str) -> String {
|
pub fn execute_close(player: &mut Player, nombre: &str) -> String {
|
||||||
let mut output = String::from("");
|
let output:String;
|
||||||
let location = &player.location;
|
let location = &player.location;
|
||||||
let objeto = get_object_here(location.to_string(), nombre.to_string());
|
let objeto = get_object_here(location.to_string(), nombre.to_string());
|
||||||
|
|
||||||
if objeto.is_ok() {
|
if objeto.is_ok() {
|
||||||
let mut obj = objeto.unwrap();
|
|
||||||
// println!("{:?}", obj);
|
// println!("{:?}", obj);
|
||||||
|
// let obj = objeto.as_ref().unwrap();
|
||||||
|
let mut obj = objeto.unwrap();
|
||||||
if obj.tipo == "salida" {
|
if obj.tipo == "salida" {
|
||||||
if obj.condiciones.len() > 0 {
|
// cerrando en un sentido
|
||||||
for (pos, condicion) in obj.condiciones.iter().enumerate() {
|
cerrando(&mut obj);
|
||||||
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()); // cambia 'open' por 'closed'
|
// cerrando no outro sentido
|
||||||
let res = update_object_conditions(obj.tag, obj.condiciones);
|
let mut salida_opuesta = get_salida_opuesta(obj).unwrap();
|
||||||
|
output = cerrando(&mut salida_opuesta);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
// é un item
|
||||||
|
output = String::from("No se puede abrir.");
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
output = String::from("No se encuentra aquí.")
|
||||||
|
}
|
||||||
|
output
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn cerrando(salida: &mut RObject) -> String {
|
||||||
|
let mut output = String::from("");
|
||||||
|
// si ten condiciós, recorrelas e cambiar open por closed
|
||||||
|
if salida.condiciones.len() > 0 {
|
||||||
|
for (pos, condicion) in salida.condiciones.iter().enumerate() {
|
||||||
|
if condicion.as_ref().unwrap() == "open" {
|
||||||
|
salida.condiciones[pos] = Some("closed".to_string()); // cambia 'open' por 'closed'
|
||||||
|
let res = update_object_conditions(salida.tag.clone(), salida.condiciones.clone());
|
||||||
if res.is_ok() && res.unwrap() > 0 {
|
if res.is_ok() && res.unwrap() > 0 {
|
||||||
output = String::from("Ahora está cerrada.");
|
output = String::from("Ahora está cerrada.");
|
||||||
} else {
|
} else {
|
||||||
@ -214,12 +232,5 @@ pub fn execute_close(player: &mut Player, nombre: &str) -> String {
|
|||||||
} else {
|
} else {
|
||||||
output = String::from("No es necesario.");
|
output = String::from("No es necesario.");
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
// é un item
|
|
||||||
output = String::from("No se puede abrir.");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
output = String::from("No se encuentra aquí.")
|
|
||||||
}
|
|
||||||
output
|
output
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user