# OBSOLETO E MALFUNZIONANTE: NON USARE! - OUTDATED AND MALFUNCTIONING: DON'T USE!

# Segnale di Occupazione e Direzione Blocco per binari bidirezionali.
# Va collegato a un tratto di binario fittizio isolato, e azionato solo con i pedali
# (marcare l'opzione che evita le penalità quando lo si "richiude"): un click normale
# occupa o libera il blocco nella direzione corrente; un ctrl-click inverte la direzione
# del blocco (e lo libera se non lo è).
# Dopo averlo girato, il blocco va occupato almeno una volta prima di girarlo di nuovo,
# altrimenti lo script si inceppa.
# All'inizio della simulazione il blocco è libero e orientato come il segnale.
#
# Se si vuole che i segnali normali diano l'avviso di via impedita quando il blocco è
# occupato in uscita, occorre piazzare (nascosti, nel tratto fittizio posto dopo l'uscita)
# anche il segnale di sola occupazione blocco (rfi_OB_bi.tds) e il suo segnale ausiliario.
#
# Aspetti: red 		    (bianco, libero nella direzione del segnale)
#          locked   	(rosso,  occupato nella direzione del segnale)
#          anti_free 	(bianco, libero nella direzione opposta al segnale)
#          anti_locked	(rosso,  occupato nella direzione opposta al segnale)

# P.Rosati  1/12/2013

Aspect: locked
	IconE: DB_r_E.xpm
	IconW: DB_r_W.xpm
	IconN: DB_r_N.xpm
	IconS: DB_r_S.xpm
	Action: stop

Aspect: red
	IconE: DB_w_E.xpm
	IconW: DB_w_W.xpm
	IconN: DB_w_N.xpm
	IconS: DB_w_S.xpm
	Action: stop

Aspect: anti_locked
	IconE: DB_r_W.xpm
	IconW: DB_r_E.xpm
	IconN: DB_r_S.xpm
	IconS: DB_r_N.xpm
	Action: stop

Aspect: anti_free
	IconE: DB_w_W.xpm
	IconW: DB_w_E.xpm
	IconN: DB_w_S.xpm
	IconS: DB_w_N.xpm
	Action: stop

# initial aspect

OnInit:
	.aspect = red
end

# the player or a script cleared the signal for shunting

OnShunt:
	if .aspect = red or .aspect = locked
		.aspect = anti_free
	else
		.aspect = red			# red
	end
end

# the player or a script cleared the signal

OnCleared:
	if .aspect = red			# red
		.aspect = locked
	return
	end
	if .aspect = locked
		.aspect = red			# red
		return
	end
	if .aspect = anti_free
		.aspect = anti_locked
		return
	end
	if .aspect = anti_locked
		.aspect = anti_free
	end
end

# this or another signal changed its aspect

OnUpdate:
	return
end
