empezando coa acción 'abrir'
This commit is contained in:
parent
4d2bcb634a
commit
f8bc805dce
@ -3,8 +3,8 @@ INSERT INTO object
|
|||||||
VALUES
|
VALUES
|
||||||
('o0', 'item', 'palanca', 'Trozo de metal, servirá como palanca', '0', 0, NULL, '{}'),
|
('o0', 'item', 'palanca', 'Trozo de metal, servirá como palanca', '0', 0, NULL, '{}'),
|
||||||
('o1', 'item', 'calmantes', 'Calmantes, sirven para el dolor', '2', 0, NULL, '{}'),
|
('o1', 'item', 'calmantes', 'Calmantes, sirven para el dolor', '2', 0, NULL, '{}'),
|
||||||
('s0sn', 'salida', 'norte', 'Puerta automática.', '0', 0, '1', '{"open"}'),
|
('s0sn', 'salida', 'norte', 'Puerta automática.', '0', 0, '1', '{"open", "foo"}'),
|
||||||
('s1ss', 'salida', 'sur', 'Puerta automática.', '1', 0, '0', '{"open"}'),
|
('s1ss', 'salida', 'sur', 'Puerta automática.', '1', 0, '0', '{"open", "foo"}'),
|
||||||
('s1se', 'salida', 'este', 'Pasillo.', '1', 0, '2', '{}'),
|
('s1se', 'salida', 'este', 'Pasillo.', '1', 0, '2', '{}'),
|
||||||
('s2so', 'salida', 'oeste', 'Pasillo.', '2', 0, '1', '{}');
|
('s2so', 'salida', 'oeste', 'Pasillo.', '2', 0, '1', '{}');
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ pub struct RLocation {
|
|||||||
pub descripcion: String,
|
pub descripcion: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Queryable, Insertable)]
|
#[derive(Queryable, Insertable, Debug)]
|
||||||
#[diesel(table_name = object)]
|
#[diesel(table_name = object)]
|
||||||
#[diesel(primary_key(tag))]
|
#[diesel(primary_key(tag))]
|
||||||
pub struct RObject {
|
pub struct RObject {
|
||||||
|
@ -2,7 +2,6 @@ use crate::models::RObject;
|
|||||||
use diesel::prelude::*;
|
use diesel::prelude::*;
|
||||||
use crate::database::establish_connection;
|
use crate::database::establish_connection;
|
||||||
|
|
||||||
|
|
||||||
//get_object trae da base de datos un obxeto pola sua pegatina
|
//get_object trae da base de datos un obxeto pola sua pegatina
|
||||||
pub fn get_object(pegatina: String) -> Result<RObject, diesel::result::Error> {
|
pub fn get_object(pegatina: String) -> Result<RObject, diesel::result::Error> {
|
||||||
use crate::schema::object::dsl::*;
|
use crate::schema::object::dsl::*;
|
||||||
@ -63,3 +62,4 @@ pub fn get_salidas_here(pegatina: String, nome: String) -> Result<RObject, diese
|
|||||||
.filter(nombre.eq(nome))
|
.filter(nombre.eq(nome))
|
||||||
.first(conn)
|
.first(conn)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -173,3 +173,42 @@ pub fn execute_kill(player: &mut Player, nombre: &str) -> String {
|
|||||||
|
|
||||||
output
|
output
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//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 {
|
||||||
|
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);
|
||||||
|
|
||||||
|
if obj.tipo == "salida" {
|
||||||
|
for condicion in obj.condiciones {
|
||||||
|
if condicion.as_ref().unwrap() == "open" {
|
||||||
|
output = String::from("Ya está abierta.");
|
||||||
|
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.");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
output = String::from("");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// é un item
|
||||||
|
output = String::from("No se puede abrir.");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
output = String::from("No se encuentra aquí.")
|
||||||
|
}
|
||||||
|
output
|
||||||
|
}
|
||||||
|
@ -106,6 +106,7 @@ pub fn update_state(player: &mut Player, command: &Command) -> String {
|
|||||||
"coger" => output = execute_pick(player, command.noun.as_str()),
|
"coger" => output = execute_pick(player, command.noun.as_str()),
|
||||||
"tirar" => output = execute_drop(player, command.noun.as_str()),
|
"tirar" => output = execute_drop(player, command.noun.as_str()),
|
||||||
"matar" => output = execute_kill(player, command.noun.as_str()),
|
"matar" => output = execute_kill(player, command.noun.as_str()),
|
||||||
|
"abrir" => output = execute_open(player, command.noun.as_str()),
|
||||||
_ => output = format!("No se como hacer eso."),
|
_ => output = format!("No se como hacer eso."),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user