start_mode8()

start_mode8(<identificador de la cámara>, <número de m8>, <número de región>)

Descripción:

Ésta es una función avanzada que requiere que el usuario tenga cierta experiencia para poder utilizarla.

Crea una ventana de visualización de un modo 8, es decir, visualiza un mapa de sectores tridimensional; en primer lugar se debe cargar el mapa con la función load_wld(), y entonces a esta función con los siguientes parámetros:

<identificador de la cámara> - Código identificador del proceso en cuya posición debe situarse la cámara del modo 8, la cámara se situará en las coordenadas (x,y), a la altura (z) y mirando en la dirección indicada por (angle) (todos son datos locales predefinidos del proceso).

<número de m8> - Se pueden crear hasta 10 ventanas de modo 8 en pantalla, con los número del 0 al 9; si únicamente se quiere crear una, lo mejor es definir la número 0. Este número será necesario posteriormente para modificar los parámetros de la ventana, pues el sistema necesitará saber cuál de las 10 posibles ventanas de modo 8 se quiere alterar.

<número de región> - Aquí se indicará la región rectangular de pantalla en la que se va a mostrar el modo 8. Si se indica 0 como número de región, se mostrará en toda la pantalla. El resto de regiones se deben definir previamente con la función define_región() (una región no es más que una zona rectangular de la pantalla).

Nota: El funcionamiento es muy similar a los modos 7 que muestran un plano abatido (ver start_mode7()).


Además de la llamada a la función se deben inicializar algunos valores de la estructura global m8 para el correcto funcionamiento de la ventana. Ésta es una estructura de 10 registros (uno para cada posible ventana de modo 8) y cada registro tiene los siguientes campos:

  camera - Código identificador de la cámara
  height - Altura de la cámara respecto al proceso
  angle - Angulo vertical de la cámara (-128,128)
  z - Plano de profundidad (prioridad de impresión de la región)

El campo camera es imprescindible, por ello se solicita como uno de los parámetros de llamada de la función start_mode8() ya que, sin este campo, la ventana no puede determinar desde dónde se debe ver el mapa.


Programa ejemplo:
PROGRAM ejemplo_start_mode8;

GLOBAL
    fichero;

BEGIN
  set_mode(m640x480);
  set_fps(70,0);
  fichero = load_fpg("HELP\WLD_VIEW.FPG");
  load_wld("HELP\WLD_VIEW.WLD",fichero);

  start_mode8(id,0,0); // Inicializa una región de modo 8

  ctype=c_m8;
  height=64;
  radius=64;
  m8.height=32;
  go_to_flag(0);
  LOOP
      IF (key(_right)) angle-=5000; END
      IF (key(_left))  angle+=5000; END
      IF (key(_up))    advance(24); END
      IF (key(_down))  advance(-9); END
      IF (key(_q))     z+=16;       END
      IF (key(_a))     z-=16;       END
      IF (key(_w))     m8.angle+=8; END
      IF (key(_s))     m8.angle-=8; END
      FRAME;
  END
END


Este programa muestra un ejemplo de inicialización de una región de modo 8, cargando el mapa contenido en el archivo wld_view.prg, y cuyas texturas se encuentran en el fichero wld_view.fpg.


Para crear un proceso cuyo gráfico se visualice en el modo 8, se debe definir su variable local ctype como c_m8 (tipo de coordenada como coordenada de modo 8).

Cuando un proceso pertenezca al modo 8 sus variables x e y estarán referidas al punto dentro del mapa de sectores (WLD), y su variable z indicará la altura.

Si hubiera varias ventanas de modo 8 el proceso se visualizaría por defecto en todas, si únicamente se tuviera que visualizar el algunas de ellas, se debería definir su variable local cnumber.

Para que un proceso tenga varios gráficos (varias vistas), dependiendo del ángulo desde el que se le mire, se debe definir su gráfico con la variable local xgraph (en lugar de la variable graph).


Nota: Para eliminar una región de modo 8 se debe utilizar la función stop_mode8(), a la que se le debe indicar el número de m8.


Ver: STRUCT m8 - load_wld() - go_to_flag() - stop_mode8()