Eventos del sistema


En el apartado 'Variables del sistema' se relacionan todas las variables del sistema, incluidas las orientadas a eventos. En ese apartado se explica que estas variables contienen el valor SI cada vez que se produce el evento que le corresponde a la variable, pero no explica como y donde usar estas variables para nuestro propio beneficio en nuestra aventura gráfica. De eso hablaremos en esta sección.


Comandos condicionados a eventos:

Ya hemos visto que los comandos que vamos a usar durante el transcurso de la aventura gráfica los codificamos dentro de los ficheros .ini, un fichero .ini para cada localidad para las circunstancias particulares de cada localidad y también disponemos de la posibilidad de codificar comandos al final del fichero 'local.ini' de la aventura para controlar situaciones en cualquier localidad que el jugador intente hacer algo.
Todo esto está muy bien, pero no podemos codificar estos comandos tal cual en esos ficheros y esperar que 'Icarus Adventure System' sepa en que momentos hay que usar unos comandos y en que momentos otros, para eso utilizaremos comandos condicionales IF COND combinados con variables del sistema orientadas a eventos para 'encerrar' entre IF COND y ENDIF los comandos que queremos procesar según el evento que se produzca en cada momento de nuestra aventura.

Piensa que cada vez que se produce un evento, 'Icarus Adventure System' procesa todas las líneas de comandos que haya en el .ini de la localidad donde se encuentre el jugador, por lo que si no encerramos correctamente los comandos entre condiciones IF COND y ENDIF usando las variables del sistema correctas para cada ocasión, el desastre puede ser bastante grande y no te funcionará nada.
Después de procesar el .ini de la localidad, el programa procesa las líneas de comandos que haya en el fichero 'local.ini' de la aventura. Y esto sucede cada vez que se produce cualquier tipo de evento.

Entendemos por evento una de las siguientes circunstancias (indicadas en color verde) que se pueden producir durante en transcurso de la aventura:

  • El jugador entra en una localidad
    Para hacer que ciertos comandos sólo se procesen cuando el jugador entre en una localidad en concreto, sólo tenemos que encerrar esos comandos (en el fichero .ini de esa localidad) entre un IF COND ENDIF como el que se muestra a continuación:
    IF COND EVENTO_LOCALIDAD=SI
      comandos ....
      comandos ....
      comandos ....
    ENDIF

  • En una localidad, el jugador selecciona una acción usando , un objeto de su inventario y después pulsa el botón 'Procesar acción'
    El evento no se produce al seleccionar la acción ni el objeto, sino al pulsar el botón 'Procesar acción'.

    Por ejemplo: Para hacer que ciertos comandos sólo se procesen cuando el jugador haya seleccionado la acción 'Usar', el objeto 12 y haya pulsado el botón 'Procesar acción', sólo tenemos que encerrar esos comandos (en el fichero .ini de esa localidad) entre un IF COND ENDIF como el que se muestra a continuación:
    IF COND EVENTO_ACCION=SI COND ACCION_SELECCIONADA=Usar COND OBJETO_SELECCIONADO=12
      comandos ....
      comandos ....
      comandos ....
    ENDIF

  • En una localidad, el jugador selecciona una acción usando , un objeto de su inventario, una zona de la pantalla y después pulsa el botón 'Procesar acción'
    El evento que queremos procesar es justo cuando el jugador pulsa el botón 'Procesar acción'.

    Por ejemplo: Para hacer que ciertos comandos sólo se procesen cuando el jugador haya seleccionado la acción 'Atacar', el objeto 14 (espada), la zona 2 (Ogro) y haya pulsado el botón 'Procesar acción', sólo tenemos que encerrar esos comandos (en el fichero .ini de esa localidad) entre un IF COND ENDIF como el que se muestra a continuación:
    IF COND EVENTO_ACCION=SI COND ACCION_SELECCIONADA=Atacar COND OBJETO_SELECCIONADO=14 COND ZONA_SELECCIONADA=2
      comandos ....
      comandos ....
      comandos ....
    ENDIF

  • En una localidad, el jugador toca una zona de la pantalla táctil
    El evento se produce al tocar cualquier zona definida con la sentencia DEF_ZONA. Aquí no interviene para nada el botón 'Procesar acción'.

    Por ejemplo: Para hacer que ciertos comandos sólo se procesen cuando el jugador toque la zona 4 de la pantalla, sólo tenemos que encerrar esos comandos (en el fichero .ini de esa localidad) entre un IF COND ENDIF como el que se muestra a continuación:
    IF COND EVENTO_ZONA=SI COND ZONA_SELECCIONADA=4
      comandos ....
      comandos ....
      comandos ....
    ENDIF

  • En una localidad, el jugador toca la flecha de avanzar hacia el Norte
    Este evento se usa principalmente en combinación en el comando 'BLOQUEAR_SALIDA'. Aquí tampoco interviene para nada el botón 'Procesar acción'.

    Por ejemplo: Para hacer que ciertos comandos sólo se procesen cuando el jugador toque la flecha de ir hacia el Norte, sólo tenemos que encerrar esos comandos (en el fichero .ini de esa localidad) entre un IF COND ENDIF como el que se muestra a continuación:
    IF COND EVENTO_DIRECCION_NORTE=SI
      comandos ....
      comandos ....
      comandos ....
    ENDIF
    También dispones de las variables del sistema EVENTO_DIRECCION_SUR, EVENTO_DIRECCION_ESTE y EVENTO_DIRECCION_OESTE para controlar las otras tres direcciones.


  • En cualquier localidad, el jugador selecciona una acción usando , un objeto de su inventario y después pulsa el botón 'Procesar acción'
    El evento no se produce al seleccionar la acción ni el objeto, sino al pulsar el botón 'Procesar acción'.

    Por ejemplo: Para hacer que ciertos comandos se procesen en cualquier localidad pero sólo cuando el jugador haya seleccionado la acción 'Tomar', el objeto 19 (una bebida) y haya pulsado el botón 'Procesar acción', sólo tenemos que encerrar esos comandos (en el fichero 'local.ini' de la aventura) entre un IF COND ENDIF como el que se muestra a continuación:
    IF COND EVENTO_ACCION=SI COND ACCION_SELECCIONADA=Tomar COND OBJETO_SELECCIONADO=19
      comandos ....
      comandos ....
      comandos ....
    ENDIF


    Es completamente imprescindible siempre encerrar los comandos entre al menos un IF COND ENDIF usando alguna variable del sistema orientada a eventos, ya que de lo contrario el programa no va a saber en que momento procesarlos y podrías encontrarte que los procese en cualquier momento o nunca.

    Evidentemente puedes añadir más condiciones COND en la misma línea de estos IF COND para comprobar más variables si así lo requieren las circunstancias particulares de tu aventura.