Hace tiempo que no escribía, pero he estado constantemente atento a las novedades en Trensim.
Vamos al grano: estoy creando unas nuevas señales, tratando de imitar el nuevo sistema de Señalización, Electrificación y Comunicaciones (SEC) implementado por EFE aquí en Chile (de procedencia muy española, por cierto). Pues bien, modelar los shapes no ha dado ningún problema, y menos aun conocer la forma en que operan en la realidad (anoté algunas nociones básicas en http://treneschile.260mb.com/sec). Así mismo, no he tenido problema en configurar algunas de estas señales (salida (S), retroceso (R), indicadora de salida (IS), etc.). Se me ha hecho bastante fácil con el sigcfg.dat, y no tanto con el sigscr.dat, pero han funcionado.
Pero el problema llega con la señal de entrada. Ésta señal muestra los siguientes aspectos:
Luz roja: Entrada a la estación denegada.
Luz amarilla: Señal de retroceso en rojo (o señal de salida)
Luz verde: Vía libre, claro
Luz roja y luz blanca: maniobras (mejor ni intentar implementar esta función)
Luz roja y luz blanca con destellos: desvío para rebase (tampoco)
Luz verde y luz amarilla: Entrada a desvío, con limitación de velocidad.
Ésta última es el problema. He intentado utilizar los scripts denominadod SP4EBABAP (señal de entrada en BAB que puede mostrar precaución si está desviada, lo que necesito), y otros similares de señales de entrada. Con cualquiera de éstos, la señal cuando está implementada en una ruta de prueba, muestra siempre luces amarilla y verde, con desvío o sin el.
Solo he logrado colocar la señal en verde para vía libre sin discriminar desvío, y así la mantengo hasta ahora.
Procedo a copiar el script actual:
- Código: Seleccionar todo
SCRIPT 31ENT
// Señal Española 4 luces Entrada BAB (BA) capaz de anuncio de precaución si salida a desviada.
extern float block_state();
extern float route_set();
extern float next_sig_lr();
extern float def_draw_state();
extern float state;
extern float draw_state;
extern float enabled;
float next_state;
// If required, show the 'stop' indication.
if (!enabled || // Not enabled/cleared to show natural state?
block_state() !=# BLOCK_CLEAR) // Block ahead not clear?
// Switch not set as per link?
{
state = SIGASP_STOP;
}
// Signal head is enabled and the block ahead is clear - update based on state of
// next signal head.
else if ( !route_set() )
{
next_state = next_sig_lr (SIGFN_NORMAL);
if (next_state ==# SIGASP_CLEAR_2 || next_state ==# SIGASP_APPROACH_1 || next_state ==# SIGASP_APPROACH_2)
{
state = SIGASP_CLEAR_1;
}
else
{
state = SIGASP_APPROACH_1;
}
}
else
{
next_state = next_sig_lr (SIGFN_NORMAL);
if (next_state ==# SIGASP_STOP || next_state ==# SIGASP_STOP_AND_PROCEED || next_state ==# SIGASP_RESTRICTING
|| next_state ==# SIGASP_APPROACH_1)
{
state = SIGASP_APPROACH_1;
}
else if (next_state ==# SIGASP_CLEAR_1)
{
state = SIGASP_APPROACH_2;
}
else
{
state = SIGASP_CLEAR_2;
}
}
// Get draw state
draw_state = def_draw_state (state);
(Aquí creo que se repiten las indicaciones para SIGASP_CLEAR_1 o 2)
Pues bien, ¿alguno de los entendidos en configuración de scripts (que no entiendo mucho) podría indicarme cuales variables indican la condición de una vía desviada y de qué manera asigno una condición de la señal a ésta (además de cómo y dónde las agrego)? También faltaría ver qué arreglos llevan las señales de Avanzada y Avanzada Absoluta, que muestran los mismos colores dependiendo de la señal de entrada.
Recordemos que funcionan de manera similar a España.
He buscado en hilos anteriores, pero no he llegado a alguna respuesta (o no la he visto).
De antemano gracias.
Saludos
PD.: Dejo capturas de estas señales en Shape Viewer (no, acá no les pusieron escaleras):