empezando coa acción 'abrir'
This commit is contained in:
parent
4d2bcb634a
commit
f8bc805dce
@ -3,8 +3,8 @@ INSERT INTO object
|
||||
VALUES
|
||||
('o0', 'item', 'palanca', 'Trozo de metal, servirá como palanca', '0', 0, NULL, '{}'),
|
||||
('o1', 'item', 'calmantes', 'Calmantes, sirven para el dolor', '2', 0, NULL, '{}'),
|
||||
('s0sn', 'salida', 'norte', 'Puerta automática.', '0', 0, '1', '{"open"}'),
|
||||
('s1ss', 'salida', 'sur', 'Puerta automática.', '1', 0, '0', '{"open"}'),
|
||||
('s0sn', 'salida', 'norte', 'Puerta automática.', '0', 0, '1', '{"open", "foo"}'),
|
||||
('s1ss', 'salida', 'sur', 'Puerta automática.', '1', 0, '0', '{"open", "foo"}'),
|
||||
('s1se', 'salida', 'este', 'Pasillo.', '1', 0, '2', '{}'),
|
||||
('s2so', 'salida', 'oeste', 'Pasillo.', '2', 0, '1', '{}');
|
||||
|
||||
|
@ -10,7 +10,7 @@ pub struct RLocation {
|
||||
pub descripcion: String,
|
||||
}
|
||||
|
||||
#[derive(Queryable, Insertable)]
|
||||
#[derive(Queryable, Insertable, Debug)]
|
||||
#[diesel(table_name = object)]
|
||||
#[diesel(primary_key(tag))]
|
||||
pub struct RObject {
|
||||
|
@ -2,7 +2,6 @@ use crate::models::RObject;
|
||||
use diesel::prelude::*;
|
||||
use crate::database::establish_connection;
|
||||
|
||||
|
||||
//get_object trae da base de datos un obxeto pola sua pegatina
|
||||
pub fn get_object(pegatina: String) -> Result<RObject, diesel::result::Error> {
|
||||
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))
|
||||
.first(conn)
|
||||
}
|
||||
|
||||
|
@ -173,3 +173,42 @@ pub fn execute_kill(player: &mut Player, nombre: &str) -> String {
|
||||
|
||||
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()),
|
||||
"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()),
|
||||
_ => output = format!("No se como hacer eso."),
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user