# OBSOLETO - OUTDATED

# Segnale di Direzione e Occupazione Blocco per binari bidirezionali.
# Va collegato come avviso di un segnale ausiliario con a valle uno scambio,
# il tutto in un tratto di binario fittizio posto dopo il punto di ingresso/uscita.
# Il blocco è nel verso del segnale se lo scambio a valle del segnale ausiliario è
# deviato, altrimenti è nel verso contrario; il blocco è occupato (nel verso corrente)
# quando il segnale ausilario è aperto.
# Lo scenario Demo_blocco.trk illustra il funzionamento con un tratto fittizio partico-
# lare che consente ingressi e uscite segnalati correttamente senza penalità, dando an-
# che l'avviso di via impedita sull'ultimo segnale quando il blocco è occupato in uscita.
# All'inizio della simulazione il blocco è libero e orientato in senso opposto al segnale.
# Vedere le istruzioni per l'uso con un blocco macro speciale, incluso nel pacchetto.
#
# Aspetti: white         (libero nella direzione del segnale)
#          red           (occupato nella direzione del segnale)
#          anti_white    (libero nella direzione opposta al segnale)
#          anti_red      (occupato nella direzione opposta al segnale)

# Special pure distant showing Block Direction and Occupancy, suitable for bidirectional tracks.
# It should be placed on a hidden track section after the visible entry/exit point, folllowed by
# an auxiliary signal and by a switch. If the switch is diverging, the block is oriented in the
# direction of the underlying signal, if the switch is straight the block is oriented in the direction
# opposite to the underlying signal. The block is occupied (in whatever direction it is) if the auxiliary
# signal is clear. At the beginning of the simulation the block is free and oriented opposite
# to the underlying signal. See the instrucions for use with a specific track section, that's
# already included in the package as a "macro" block.
#
# Aspects: white      (free in the direction of the underlying standard signal)
#          red        (occupied in the direction of the underlying standard signal)
#          anti_white (free in the direction opposite to the underlying standard signal)
#          anti_red   (occupied in the direction opposite to the underlying standard signal)

# P.Rosati  1/12/2013

Aspect: red
	IconE: DB_r_E.xpm
	IconW: DB_r_W.xpm
	IconN: DB_r_N.xpm
	IconS: DB_r_S.xpm
	Action: none

Aspect: white
	IconE: DB_w_E.xpm
	IconW: DB_w_W.xpm
	IconN: DB_w_N.xpm
	IconS: DB_w_S.xpm
	Action: none

Aspect: anti_red
	IconE: DB_r_W.xpm
	IconW: DB_r_E.xpm
	IconN: DB_r_S.xpm
	IconS: DB_r_N.xpm
	Action: none

Aspect: anti_white
	IconE: DB_w_W.xpm
	IconW: DB_w_E.xpm
	IconN: DB_w_S.xpm
	IconS: DB_w_N.xpm
	Action: none

# initial aspect

OnInit:
	.aspect = anti_white
end

# the player or a script cleared the signal

OnCleared:
	return
end

# this or another signal changed its aspect

OnUpdate:
	if next.aspect = red 			# Blocco libero - Block is free
		if next.switchThrown = 1 	# Blocco dritto - Block is oriented as the signal
			.aspect = white
		else						# Blocco rovesciato  - Block is oriented opposite to the signal
			.aspect = anti_white
		end
	else							# Blocco occupato (non girabile) - Block is busy (cannot be changed)
		if next.switchThrown = 1 	# Blocco dritto - Block is oriented as the signal
			.aspect = red
		else						# Blocco rovesciato  - Block is oriented opposite to the signal
			.aspect = anti_red
		end
	end
end
