struct CDIV_SCROLL{ int x0, y0, // Coordenadas del primer plano x1, y1, // Coordenadas del plano de fondo z, // Plano de profundidad file, // Fichero graph0, // Gráfico del primer plano graph1, // Gráfico del plano de fondo speed, // Velocidad relativa del segundo plano region, // Región de pantalla lock; // Código de bloqueo void * camera; // Código identificador de la cámara };
struct CDIV_SCROLL scroll[10];
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.
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 movimiento del segundo plano en función del campo speed 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.
speed - Ventanas de scroll automático. Velocidad de movimiento del segundo plano de scroll, por defecto valdrá 50, lo que quiere decir que se moverá a la mitad de velocidad del proceso "camera". Si se desase que se moviera al doble de velocidad se tendría que establecer a 200, la cuarta parte a 25 y así sucesivamente. Esta variable solamente funcionará cuando existan los dos gráficos de scroll.
region - Ventanas de scroll automático. Región de bloqueo del scroll, cuyo valor, por defecto, es 0 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.
Ver: Datos globales - start_scroll() - stop_scroll()