GLOBAL STRUCT scroll

STRUCT scroll[9];
    x0, y0; // Coordenadas del primer plano
    x1, y1; // Coordenadas del segundo plano
    z; // Plano de profundidad
    camera; // Código identificador de la cámara
    ratio; // Velocidad relativa del segundo plano
    speed; // Velocidad máxima del primer plano
    region1; // Primera región de pantalla
    region2; // Segunda región de pantalla
END

Esta estructura de 10 registros contiene ciertos campos relacionados con parámetros modificables de las ventanas de scroll. Los diez registros tienen los mismos nombres de campos, pero cada uno de ellos modifica los parámetros de una ventana de scroll diferente (ya que pueden activarse hasta 10 ventanas de este tipo).

Una ventana de scroll se podría definir como una región de pantalla que muestra sólo una parte de un gráfico más grande que dicha ventana (este gráfico suele ser el decorado o fondo del juego). El scroll en sí es el movimiento de dicha ventana por el gráfico en cualquier dirección, visualizándose poco a poco el gráfico completo, sección a sección del mismo.

Para que un registro (del 0 al 9) de la estructura scroll tenga sentido, primero debe activarse dicha ventana de scroll (del 0 al 9) con la función start_scroll (ver esta función para más información sobre las ventanas de scroll}.

Se entiende que los campos de esta estructura son complementarios a los parámetros de llamada de esta última función.


Forma de uso de la estructura scroll:

Para acceder a estos campos se debe preceder el nombre del campo por la palabra scroll, el número de registro entre corchetes y el símbolo . (punto).

Por ejemplo, si se inicializaran dos ventanas de scroll, la número 0 y la número 1, se podría acceder al campo camera de ambas ventanas como scroll[0].camera y scroll[1].camera, respectivamente. Cuando se acceda a la ventana número 0 de scroll se puede, además, omitir el número de ventana entre corchetes, es decir, que la variable scroll.camera y la variable scroll[0].camera son, a todos los efectos, la misma para el lenguaje.


Se muestra a continuación una descripción detallada de cada campo

x0, y0 - Coordenadas del primer plano de scroll, cuando es scroll NO es automático (no se ha definido el campo camera), éstos son los campos que se deberán modificar para mover el primer plano de la ventana de scroll.

Estos dos campos almacenan las coordenadas horizontal y vertical de la esquina superior izquierda de la ventana de scroll (el punto del gráfico del primer plano que se verá en la esquina superior izquierda de la ventana).

Cuando se haya definido el campo camera de esta estructura, el movimiento de la ventana de scroll será automático, por lo que estos campos serán sólo de lectura; para poder comprobar donde está situado el scroll en cada momento (ver la función move_scroll()).


x1, y1 - Coordenadas del segundo plano, cuando se haya definido un gráfico para el segundo plano. Cuando el scroll NO es automático (no se ha definido el campo camera), éstos son los campos que se deberán modificar para mover el plano de fondo de la ventana de scroll.

Cuando se haya definido el campo camera de esta estructura, el movimiento de la ventana de scroll será automático, por lo que estos campos serán sólo de lectura, determinándose la velocidad de movimento del segundo plano en función del campo ratio de esta misma estructura.


z - Prioridad de impresión del scroll, aquí se indica en que plano de profundidad se debe pintar esta ventana, respecto al resto de procesos. Por defecto, esta variable valdrá 512, lo cual quiere decir que como los procesos por defecto tienen su variable local z a 0, la ventana de scroll se pintará en un plano de profundidad mayor, más al fondo, visualizándose los gráficos de los procesos por encima de la ventana. Para variar esta situación se puede modificar la variable z de la ventana (por ejemplo, ponerla a -1) o la variable z de los procesos (por ejemplo, ponerla a 600).


camera - Este campo no es necesario inicializarlo, se inicializará cuando se quiera que el scroll sea automático, esto es, que el sistema se encargue de que éste siga siempre a un proceso (un gráfico del juego). Para ello, se debe poner en este campo el código identificador del proceso; sólo con esto, el desplazamiento de la ventana de scroll pasará a ser controlado automáticamente por el sistema, intentando centrar el gráfico de dicho proceso siempre en la ventana. Este proceso debe tener la variable local ctype con el valor c_scroll.

Por defecto este campo valdrá 0, lo que implica que el scroll no seguirá a ningún proceso, a no ser que se asigne el código identificador de uno a camera. Cuando se haga esto, se denominará a este proceso como el proceso cámara del scroll.

Nota: A continuación se muestra una serie de campos sólo para ventanas de scroll automático; esto quiere decir que para que dichos campos tengan sentido (y, por consiguiente, efecto) se debe haber definido previamente el campo camera de esta estructura con el código identificador del proceso que se va a centrar en el scroll. Estos valores afectarán a la forma en la que se va a hacer este seguimiento al proceso denominado cámara del scroll.


ratio - Ventanas de scroll automático. Cuando se hayan definido dos planos de scroll en la llamada a la función start_scroll(), en este campo se puede definir la velocidad de movimiento del plano del fondo respecto a la del primer plano. Por defecto, este valor será 200 lo que implicará que el plano de fondo se moverá a la mitad de velocidad del primer plano; si se define como 400 se moverá a la cuarta parte (cuatro veces más lento), 100 a la misma velocidad, 50 al doble de velocidad que el primer plano, etc.


speed - Ventanas de scroll automático. Velocidad máxima del primer plano de scroll, por defecto valdrá 0, lo que quiere decir que no se impone ningún límite de velocidad. Si se impone un límite, especificando el número de puntos máximo que puede desplazarse el primer plano por cada imagen del juego, se descentrará el proceso cámara de la ventana de scroll cuando éste se mueva a una velocidad mayor.


region1 - Ventanas de scroll automático. Región de bloqueo del scroll, cuyo valor, por defecto, es -1 lo que implica que no hay ninguna región de bloqueo. Si se define este campo con un número de región (una zona rectangular de la pantalla definida previamente con la función define_region()), entonces el sistema no moverá el scroll mientras el proceso cámara permanezca dentro de la misma.


region2 - Ventanas de scroll automático. Region exterior del scroll; por defecto su valor es -1, lo que implica que no hay una región exterior. Si se define este campo con un número de región y se ha definido una velocidad máxima en el campo speed, entonces el sistema ignorará dicho límite de velocidad cuando el proceso cámara vaya a salirse de esta región (ésto se hace para no perder de vista al proceso (para que su gráfico siempre sea visible dentro de la ventana de scroll).

Nota: Si se definen las dos regiones (region1 y region2), normalmente la región 1 es menor que la región 2 (está contenida en ella), esto implicará que:

- No se desplazará el gráfico de fondo (no se hará scroll) mientras el gráfico del proceso cámara esté dentro de la región 1.

- Si se ha definido una velocidad máxima (speed), entonces se hará scroll para intentar devolver el gráfico del proceso cámara a la región 1, pero sin sobrepasar el límite de velocidad impuesto.

- Si el gráfico del proceso cámara intentara salirse de la región 2, se ignoraría el límite de velocidad impuesto, para no permitirlo.


Ver: Datos globales - start_scroll() - stop_scroll()