Variable puntero
En Wired Code: variable.pointer
Es otra variable disfrazada: no guarda nada propio, y todo lo que lees o escribes por ella va a la variable cuya caja te diga una variable de contexto. Con ella, una misma pila puede trabajar con una variable o con otra según lo que le llegue.
Cómo funciona
El puntero se apunta con una variable de contexto, la «de acceso». Su valor tiene que ser el id de
furni de la caja de la variable a la que quieres llegar: el de la caja que está en el suelo, que es lo
que vale la interna @id de ese furni.
A partir de ahí, todo lo que hagas con el puntero lo hace la variable de esa caja. Si la de acceso vale el
@id de la caja de puntos_rojo, un Cambiar valor de variable que
sume 1 al puntero suma 1 a puntos_rojo; un Dar variable, una
Eliminar variable o una condición de variable sobre el puntero hacen lo
mismo con puntos_rojo. El puntero no tiene valor propio, y el causante
Cambio de variable salta por la variable de destino.
Se decide al empezar la pila
A qué caja apunta se decide cuando la pila arranca, con el valor que trae en ese momento la variable de acceso. De ahí salen las tres reglas que hay que tener en cuenta:
- Darle valor en la misma pila no sirve, ni con Ejecutar en orden: cuando corre el Dar variable, la pila ya ha decidido con el valor que traía al arrancar. Si no traía ninguno, el puntero no apunta a nada, y el Dar variable no lo cambia.
- Se le da valor en la pila que manda la señal, y el puntero se usa en la que la recibe. Las variables de contexto viajan con la señal (ver Variable de contexto), así que la pila que recibe arranca ya con la de acceso puesta.
- Cambiarla dentro de la pila que recibe no lo mueve: hasta que esa pila termine, el puntero sigue en la misma caja. Cada pila decide por su cuenta al empezar, también las que reciben la misma señal.
Solo cajas del mismo ámbito
El puntero tiene ámbito —furni, usuario, global o contexto— y solo apunta a cajas de ese ámbito. Si la de
acceso no está dada, o vale el @id de una caja de otro ámbito, el de algo que no es una caja o el de otro
puntero, el puntero no apunta a nada: para esa pila la variable no existe. Las condiciones no la
encuentran y los efectos que la cambian no hacen nada.
Fuera de una pila no apunta a nada
Como lo que lo apunta es la ejecución, el puntero solo funciona dentro de una pila. En la pestaña
Variables de :wired no se puede resaltar ni gestionar; en las
listas que no corren en una pila —la del Eco, la del causante
Cambio de variable, y la audiencia y los mínimos y máximos de los
Variable FX— sale en gris, y en la lista de variables de la
Tabla de Clasificación ni siquiera sale.
Configuración
El ámbito se elige con los cuatro iconos de la cabecera de la ventana: furni, usuario, global y contexto. De fábrica, furni.
Información de uso: la ventana avisa de que es un wired avanzado y de que probablemente no lo necesites salvo que veas tú mismo para qué.
Nombre de la variable, cómo se va a llamar el puntero: de 1 a 40 caracteres, con letras, números y guion bajo (_), y sin repetir el de otra caja de la sala.
Variable de Contexto de acceso, la que lo apunta. La lista enseña todas las variables de contexto de la
sala, pero solo puedes elegir las que has creado tú y tienen valor: las del sistema
(@selector_furni_count, @signal_user_count, @event…) salen en gris. Si no eliges ninguna, al pulsar
Listo sale el aviso «La selección del furni de variable es inválida o falta.» y no se guarda.
Ejemplo
Dos botones y una sola pila de lógica: cada botón suma un punto a su equipo, y la pila que suma no sabe de equipos.
Cajas de variable:
Variable global [puntos_rojo]
Variable global [puntos_azul]
Variable de contexto [caja_equipo · tiene valor]
Variable puntero [puntos_equipo · ámbito global · acceso caja_equipo]
Pila A (botón rojo)
│
├─ Causante: Click en Furni
│ └─ Elige Furni ............................. el botón rojo
│
├─ Efecto: Dar variable
│ ├─ Escoge una variable ..................... caja_equipo (ámbito contexto)
│ └─ Valor inicial ........................... @id (ámbito furni)
│ └─ Escoge la fuente de la variable .... Usar furnis seleccionados → la caja de puntos_rojo
│
└─ Efecto: Enviar Señal
└─ Antenas ................................. Usar furnis seleccionados → Antena Wired Pequeña
Pila B
│
├─ Causante: Recibir Señal
│ └─ Elige Furni ............................. Antena Wired Pequeña (la misma antena)
│
└─ Efecto: Cambiar valor de variable
├─ Escoge una variable ..................... puntos_equipo (ámbito global)
├─ Escoge una operación .................... Suma
└─ Valor de referencia ..................... 1La pila del botón azul es igual, con la caja de puntos_azul en el Dar variable. La pila B suma en la caja
que le llegue: si mañana hay un tercer equipo, solo hace falta otro botón con su pila A.
Notas
El valor de acceso es el @id de la caja. Léelo con Valor o variable
desde la interna @id del furni de la caja, como en el ejemplo, en vez de copiar el número a mano.
Recoger la caja y volver a ponerla no le cambia el @id —es el mismo furni—, pero otra caja igual, una
copia o una nueva del inventario, tiene el suyo: leyéndolo de la caja no tienes que acordarte de cambiarlo.
Escribir por el puntero escribe en la variable de destino. No queda nada guardado en el puntero: si dejas de apuntarlo, todo lo que hiciste está en la caja a la que apuntaba.
Un puntero no apunta a otro puntero, ni la variable de acceso puede ser un puntero: la lista los enseña en gris.
En un Marcador de posición de variable sale siempre el número, también en modo Textual: el puntero no lleva la tabla de textos de la variable a la que apunta.