vestimenta.h

Creado en 2006 por Taruguete, adaptado de la versin inglesa "Wearable".

1. Crear vestimentas

Debe Incluirse el archivo "Vestimenta.h" entre "EParser" y "Acciones". Asimismo, si se desea utilizar, ha de incluirse el archivo "Verbosvestimenta.h" despus de "Gramtica".

Todas las prendas de ropa deben pertenecer a la clase Vestimenta. La clase Vestimenta tiene varias propiedades comunes, veamos las ms importantes: 

*Vestido_por*: indica el personaje que lleva la prenda tomando el valor cero si la prenda no est vestida por nadie. Se tiene que establecer esta propiedad para cualquier prenda que sea vestida por cualquier personaje cuando el juego comienze para que la librera la maneje desde entonces.

*tipo_prenda*: expresa la zona del cuerpo en la que se puede colocar la prenda. Puede tomar los valores siguientes:
1= La zona baja del cuerpo, en la que se situaran, por ejemplo pantalones y faldas.
2= La parte superior del cuerpo, fundamentalmente camisas, pero tambin (como veremos) vestidos.
3= los pies.
4= las manos.
5= la cabeza.
Las prendas que tienen la propiedad tipo_prenda con el mismo valor, se solaparn cuando sean vestidas. Para resolver este problema existe la propiedad siguiente.

*nivel*: establece la distancia entre el cuerpo y la ropa. Esta propiedad incrementa en uno su valor a medida que nos alejamos de la piel. As por lo tanto, la primera prenda puesta (justo sobre la piel) tendr un valor de nivel 1; la que se vista encima, de 2, y as sucesivamente. Cuando una prenda no sea vestida por nadie, Su valor de nivel es igual a 0. Esta propiedad habr que establecerla al principio de un juego para cualquier prenda. Desafortunadamente, en el principio la propiedad no estar activa, pero la siguiente vez, la librera podr manejarla correctamente. 

*Tamano_prenda*: esta propiedad determina que ciertas prendas, pese a encontrarse debajo de otras que las cubren, al tener un tamao mayor ocasionan que parte de ellas quede sin cubrir. Este puede ser el caso de unos zapatos y unos calcetines: los zapatos cubren los calcetines, pero es evidente que parte de los calcetines son visibles, a menos que en lugar de zapatos fuesen botas altas.

*como_falda*: se emplea en faldas y vestidos, para hacer posible que otras vestimentas puedan ponerse o quitarse bajo ellos sin necesidad de tener que despojarse de los mismos..
Para las faldas, se establece el mismo valor para la propiedades *tipo_prenda* y *como_falda*. Esto permite que el personaje pueda cambiarse la ropa interior, por ejemplo, sin necesidad de quitarse la falda (si no le resulta un tanto escandaloso).
Un vestido, sin embargo, es ligeramente ms complicado. Puede cubrir prendas en dos reas de *tipo_prenda* contiguas. Su propiedad *como_falda*, entonces, es diferente de su propiedad *tipo_prenda*. Debe ser igual al *tipo_prenda* de las faldas. 

Ejemplo: 

vestimenta falda "Falda"
with nombre 'Falda',
descripcion "Una minifalda pequea linda.",
tipo_prenda 1,
como_falda 1;

vestimenta Vestidorojo "vestido Rojo de etiqueta"
with nombre 'Vestido',
Descripcion "Un vestido de etiqueta.",
tipo_prenda 2,
como_falda 1;

Tanto la minifalda como el vestido admitiran ropa interior con *tipo_prenda* igual a 1, que ponerse o quitarse bajo ellos.
El vestido, sin embargo, tambin podra cubrir un sostn con un valor de 2 para la propiedad *tipo_prenda*. Ntese que el vestido tendra que quitarse antes para poder hacer lo propio con el sostn.

Un vestido, puesto que es ms complicado, tiene algunas propiedades que son tambin interesantes:

*falda_nivel*: especifica la cantidad de prendas que pueden llevarse bajo l, en su parte baja.

*Falda_cubriendo*: establece que prendas sern cubiertas por la parte baja del vestido.

Por ejemplo:

Vestimenta vestido "Rojo de etiqueta" 
with nombre 'Vestido',
 Descripcion "Un vestido rojo de etiqueta.",
tipo_prenda 2,
cubriendo sosten,
nivel 2,
como_falda 1,
falda_cubriendo Ropa interior, 
falda_nivel 2;

vestimenta "Ropa interior"
with nombre 'Ropa interior',
descripcion "su ropa interior.",
tipo_prenda 1,
cubierto_por vestido, 
nivel 1;

vestimenta Sosten "Sostn"
with nombre 'Sosten',
descripcion "Su sostn.",
tipo_prenda 2,
cubierto_por vestido, 
nivel 1;

*Cubriendo*: indica que esta prenda est encima de la que cubre.

*cubierto_por*: expresa que una prenda queda escondida por la que se especifica al darle el valor.

Existen algunas propiedades ms, que no son tan importantes: 

*Min_nivel*: establece el nivel ms cercano al cuerpo en el que una prenda puede situarse. Su valor mnimo es 1.

*Max_nivel*: Establece el nivel mximo en que la prenda puede ser vestida. El lmite para esta propiedad es 5.

Ejemplo:
vestimenta "Ropa interior"
with nombre 'Ropa interior',
descripcion "Su ropa interior.",
tipo_prenda 1,
Max_nivel 1;

vestimenta Pantalones "pantalones"
with nombre "Pantalones",
Descripcion "Recin salidos de la secadora.",
tipo_prenda 1,
Min_nivel 2;

*falda_maxnivel*: esta propiedad se utiliza para vestidos; su valor mximoes 3.

*congenero*: se utiliza para establecer que prendas son normalmente vestidas por varones o hembras. Los valores posibles que puede tomar son: masculino o femenino.
Si se intenta vestir una prenda de un gnero inadecuado, aparecer el correspondiente mensaje advirtiendo del hecho antes de llevar a cabo la accin. Ejemplo:

vestimenta Sosten "Sostn"
with nombre 'Sosten',
descripcion "Su sostn.",
tipo_prenda 2,
congenero femenino;


*Voluminoso*: esta propiedad impide que se lleven prendas encima de otras que son ms amplias. Por ejemplo: no es lgico meter un zapato dendtro del calcetn.

2. Soporte de NPC

 Tener un NPC que se ponga o se quite una prenda de ropa resulta bastante fcil.

 Si el jugador est dando una orden, es suficiente llamar a VestirSub() o DesvestirSub(), y luego retornar true.

 Si el NPC est actuando por separado, utilice algo como VestirSub (camisa, jane).

3. Verbos opcionales


El archivo verbosvestimenta.h incluye tres verbos opcionales: abrochar, abotonar, y abrirclemallera.
El manejo de las cremalleras ha de hacerse con las rdenes: Abrecremallera y cierracremallera.
