|
int ism_colocar_pared(BITMAP *mapa, unsigned char eje, int pared); |
|
Descripción: |
Asigna un mapa a una o varias de las partes (alineadas con las losetas del suelo) en que se divide una pared. |
|
Parámetros: |
mapa: el mapa de la pared. |
|
eje: el eje correspondiente a la pared. Los valores posibles son SUP_X, INF_X, SUP_Y e INF_Y. |
|
pared: el número de la pared. Puedes usar TODAS para establecer todas las paredes del eje indicado. |
|
Devuelve: |
0 si funcionó, -1 si falló. |
|
int ism_mover_pared(unsigned char eje, int pared,int despeje, int despaltura); |
|
Descripción: |
Mueve una o varias paredes. |
|
Parámetros: |
|
eje: el eje correspondiente a la pared. Los valores posibles son SUP_X, INF_X, SUP_Y e INF_Y. |
|
pared: el número de la pared. Puedes usar TODAS para mover todas las paredes del eje indicado. |
despeje, despaltura: desplazamiento de la pared en el sentido del eje indicado y en la altura, respectivamente. |
|
Devuelve: |
0 si funcionó, -1 si falló. |
|
int ism_mover_loseta(int x, int y, int despx, int despy); |
|
Descripción: |
Mueve una o varias losetas. |
|
Parámetros: |
|
x, y: las coordenadas de la loseta en la rejilla. Puedes usar TODAS en una de las coordenadas para mover toda la fila de losetas. También la puedes usar en ambas coordenadas para mover todas las losetas a la vez. |
despx, despy: desplazamiento de la loseta en los ejes x e y, respectivamente. |
|
Devuelve: |
0 si funcionó, -1 si falló. |
|
ism_id ism_colocar_objeto_rejilla(int x, int y, int z, int altura, BITMAP *mapa, BITMAP *sombra); |
|
Descripción: |
Coloca un objeto rejilla en la vista isométrica. |
|
Parámetros: |
|
x, y: las coordenadas de la rejilla en las que colocar el objeto. |
|
z: la coordenada z del objeto, referida a su base. Puedes usar ENCIMA para ponerlo sobre el objeto (de culquier tipo) colocado a más altura en esa posición, es decir, colmo si se hubiera dejado caer desde el cielo. Esto es útil para formar columnas de objetos unos encima de otros sin tener que calcular la coordenada z de cada uno. |
|
altura: la altura del objeto. |
mapa: el mapa del objeto. Si colocas este parámetro a NULL, el objeto no se dibujará, pero a todos los efectos (colisiones, etc.) seguirá existiendo. |
sombra: la sombra del objeto. Si colocas este parámetro a NULL, el objeto no tendrá sombra. |
|
Devuelve: |
El identificador del objeto si funcionó, ID_ERROR si falló. |
|
ism_id ism_colocar_objeto_libre(int x, int y, int z, int anchurax, int anchuray, int altura, BITMAP *mapa, BITMAP *sombra); |
|
Descripción: |
Coloca un objeto libre en la vista isométrica. |
|
Parámetros: |
|
x, y, z: las coordenadas x, y y z del objeto, referidas al punto más a la izquierda de su base. Puedes usar ENCIMA el el parámetro z para ponerlo sobre el objeto (de culquier tipo) colocado a más altura en esa posición, es decir, colmo si se hubiera dejado caer desde el cielo. Esto es útil para formar columnas de objetos unos encima de otros sin tener que calcular la coordenada z de cada uno. |
|
anchurax, anchuray: la anchura del objeto en las dimensiones X e Y. |
|
altura: la altura del objeto. |
mapa: el mapa del objeto. Si colocas este parámetro a NULL, el objeto no se dibujará, pero a todos los efectos (colisiones, etc.) seguirá existiendo. |
sombra: la sombra del objeto. Si colocas este parámetro a NULL, el objeto no tendrá sombra. |
|
Devuelve: |
El identificador del objeto si funcionó, ID_ERROR si falló. |
|
int ism_obtener_dato_objeto(ism_id id, unsigned char dato); |
|
Descripción: |
Devuelve el dato solicitado acerca del objeto. |
|
Parámetros: |
id: el identificador del objeto. |
|
dato: el dato que se quiere obtener acerca del objeto. Los valores posibles son: D_X (la coordenada x), D_Y (la coordenada y), D_Z (la coordenada z), D_ALTURA (altura), D_ANCHURA_X (anchura en la dimensión x), D_ANCHURA_Y (anchura en la dimensión y) y D_TRANSP (porcentaje de transparencia del objeto) |
|
Comentarios: |
Si se solicita la coordenada x o la y de un objeto rejilla, la función devuelve la coordenada de la celda de la rejilla en la que se encuentra. |
|
Devuelve: |
El dato solicitado si funcionó, -1 si falló. |
|
int ism_obtener_coords_objeto(ism_id id, int *dstx, int *dsty, int *dstz); |
|
Descripción: |
Almacena las coordenadas del objeto en las variables indicadas. |
|
Parámetros: |
id: el identificador del objeto. |
|
dstx, dsty, dstz: punteros a las variables donde se quiere que la función almacene las coordenadas del objeto. |
|
Comentarios: |
Si el objeto es de tipo rejilla, los valores almacenado en dstx y dsty serán los de la celda correspondiente de la rejilla. |
|
Devuelve: |
0 si funcionó, -1 si falló. |
|
int ism_cambiar_dato_objeto(ism_id id, unsigned char dato, int valor, unsigned char modo); |
|
Descripción: |
Modifica el dato solicitado del objeto. |
|
Parámetros: |
id: el identificador del objeto. |
|
dato: el dato que quieres modificar. Los valores posibles son: D_X (la coordenada x), D_Y (la coordenada y), D_Z (la coordenada z), D_ALTURA (altura), D_ANCHURA_X (anchura en la dimensión X), D_ANCHURA_Y (anchura en la dimensión Y) y D_TRANSP (porcentaje de transparencia del objeto) |
|
valor: el nuevo valor del dato. |
|
modo: el modo en el que quieres cambiar el dato. Puedes usar CAMBIAR para sustituir el dato antiguo por el nuevo, o SUMAR para sumarlo. |
|
Comentarios: |
Ocurrirá un error si tratas de cambiar la coordenada X o Y de un objeto rejilla, alguna de sus anchuras, o su porcentaje de transparencia. |
|
Devuelve: |
0 si funcionó, -1 si falló. |
|
int ism_mover_objeto(ism_id id, int x, int y, int z, unsigned char modo); |
|
Descripción: |
Modifica las coordenadas del objeto indicado. |
|
Parámetros: |
id: el identificador del objeto. |
|
x, y, z: las nuevas coordenadas a las que hay que mover el objeto. |
|
modo: el modo en que se quiere interpretar las nuevas coordenadas. Puedes usar CAMBIAR para cambiar las coordenadas del objeto por las x, y y z indicadas en la función, o SUMAR para sumarlas. |
|
Comentarios: |
Ocurrirá un error si tratas de mover un objeto rejilla con esta función. |
|
Devuelve: |
0 si funcionó, -1 si falló. |
|
int ism_obtener_coords_libres(int x, int y, int *xl, int *yl); |
|
Descripción: |
Obtiene las coordenadas x e y, respecto de los ejes de coordenadas, del punto situado más a la izquierda de una celda dada de la rejilla. |
|
Parámetros: |
x, y: coordenadas de rejilla de la celda. |
|
xl, yl: punteros a las variables donde se quiere almacenar las x e y libres. |
|
Devuelve: |
0 si funcionó, -1 si falló. |
|
int ism_coords_iso_a_2d(int xiso, int yiso, int ziso, int *x2d, int *y2d); |
|
Descripción: |
Transforma coordenadas isométricas 3d en sus equivalentes 2d. Es decir, indica en que punto de la imágen de destino se dibujará un punto isométrico determinado. |
|
Parámetros: |
xiso, yiso, ziso: las coordenadas isométricas que quieres transformar en 2d. |
|
x2d, y2d: punteros a las variables donde quieres que se almacenen los valores x e y 2d. |
|
Comentarios: |
Las coordenadas 2d devueltas se refieren al mapa donde estés dibujando el mundo isométrico y al lugar del mismo en el que esté dibujando el origen de coordenadas isométrico, es decir, los valores de tu última llamada a ism_dibujar_mundo_isom(BITMAP *mapa_destino, int x0, int y0);. |
|
Devuelve: |
0 si funcionó, -1 si falló. |
|
int ism_coords_2d_a_iso(int *xiso, int *yiso, int *ziso, int x2d, int y2d, int vfija, unsigned char cfija); |
|
Descripción: |
Transforma coordenadas 2d en sus equivalentes 3d. Es decir, indica cuál es el punto isométrico alineado con un punto 2d del mapa en el que dibujas el mundo isométrico, y que pertenece a un plano determinado. |
| Parámetros: |
xiso, yiso, ziso: punteros a las variables donde quieres almacenar las coordenadas isométricas. |
|
x2d, y2d: la x e y del punto 2d. |
|
vfija, cfija: el plano que contiene el punto isométrico. Debe ser paralelo al plano x, y o z, por lo que cfija debe valer D_X, D_Y o D_Z, y vfija será la coordenada de dicho plano. |
|
Comentarios: |
Date cuenta de que un punto 2d no se corresponde con un único punto isométrico, sino con toda una recta perpendicular a la imagen. Por ello, para obtener un único punto, hay que intersectar esta recta con un plano, que es el que debes indicar a la función con sus dos últimos parámetros. Por ejemplo, para hallar el punto isométrico del suelo correspondiente a tu punto 2d, vfija debe valer 0, y cfija D_Z. |
|
Devuelve: |
0 si funcionó, -1 si falló. |
|
int ism_func_transp(void(*f_transp)(BITMAP *, BITMAP *, int, int, int)); |
|
Descripción: |
Establece la función que Isomot utilizará para dibujar los objetos transparentes. |
|
Parámetros: |
f_transp: la función de transparencia a utilizar. |
|
Comentarios: |
f_transp debe ser una función que devuelva void, y tome los siguientes parámetros: (BITMAP *org, BITMAP *dst, int x, int y, int fact), donde org y dst son el mapa origen y destino (es decir, que org es el mapa que se va a dibujar en dst), x e y son las coordenadas de dst donde se va a dibujar org, y fact es el factor de transparencia a aplicar, que puede tomar valores entre 0 (valor que corresponde a un 100% de transparencia) y 255 (que corresponde a un 0% de transparencia) Esto coincide exactamente con la declaración de la función fblend_trans de la librería FBlend, lo que no es ninguna casualidad ;). De este modo, si usas FBlend en tu proyecto, bastará con ejecutar la instrucción ism_func_transp(fblend_trans); para que Isomot la utilice para dibujar los objetos transparentes, en logar de las funciones propias de Allegro. |
|
Devuelve: |
0 si funcionó, -1 si falló. |