-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathPANTALLA_ERTMS.cs
More file actions
78 lines (74 loc) · 3.14 KB
/
PANTALLA_ERTMS.cs
File metadata and controls
78 lines (74 loc) · 3.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
using Orts.Simulation.Signalling;
using ORTS.Scripting.Api;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ORTS.Scripting.Script
{
public class PANTALLA_ERTMS : CommonSignalScript
{
Aspecto AspectoEstaSeñal;
Aspecto previoAspectoEstaSeñal;
Timer actualizarAspectoTimer;
public override void Initialize()
{
actualizarAspectoTimer = new Timer(this);
actualizarAspectoTimer.Setup(1);
SharedVariables[KEY_VARIABLE_COMPARTIDA_SISTEMAS_SEÑALIZACION] = (int)SistemaSeñalizacion.ETCS_N2;
}
public override void Update()
{
base.Initialize();
previoAspectoEstaSeñal = AspectoEstaSeñal;
if (!Enabled || CurrentBlockState != BlockState.Clear)
{
AspectoEstaSeñal = Aspecto.Parada;
}
else
{
AspectoEstaSeñal = Aspecto.ViaLibre;
}
if (!PreUpdate())
{
if (AspectoEstaSeñal != previoAspectoEstaSeñal)
{
if (!actualizarAspectoTimer.Started) actualizarAspectoTimer.Start();
if (!actualizarAspectoTimer.Triggered) AspectoEstaSeñal = previoAspectoEstaSeñal;
}
else if (actualizarAspectoTimer.Started)
{
actualizarAspectoTimer.Stop();
}
}
if (AspectoEstaSeñal == Aspecto.Parada)
{
MstsSignalAspect = Aspect.Stop;
TextSignalAspect = "Parada";
}
else
{
//MstsSignalAspect = (Aspect)8;
MstsSignalAspect = Aspect.Clear_2;
TextSignalAspect = "ViaLibre";
}
DrawState = DefaultDrawState(MstsSignalAspect);
SharedVariables[KEY_VARIABLE_COMPARTIDA_TIPO_SEÑAL] = (int)TipoSeñal.Virtual;
SharedVariables[KEY_VARIABLE_COMPARTIDA_ESTADO_CANTON] = (int)BlockState.Clear;
var informacionDeRutaMSTS = DistMultiSigMR("OPREANUNCIO", "NORMAL", false);
if (informacionDeRutaMSTS == Aspect.Stop) informacionDeRutaMSTS = (Aspect)IdSignalLocalVariable(NextSignalId("NORMAL"), KEY_VARIABLE_COMPARTIDA_INFO_RUTA);
SharedVariables[KEY_VARIABLE_COMPARTIDA_INFO_RUTA] = (int)informacionDeRutaMSTS;
bool callOn = (IdSignalLocalVariable(NextSignalId("NORMAL"), KEY_VARIABLE_COMPARTIDA_REBASE) == 1 && CurrentBlockState == BlockState.Clear) || (CurrentBlockState == BlockState.Occupied && TrainHasCallOn(false, true));
SharedVariables[KEY_VARIABLE_COMPARTIDA_REBASE] = callOn ? 1 : 0;
SetSNCA();
}
public override void SetSNCA()
{
SharedVariables[KEY_VARIABLE_COMPARTIDA_PROXIMIDAD] = 0;
SharedVariables[KEY_VARIABLE_COMPARTIDA_SNCA_DIFF] = 1;
SharedVariables[KEY_VARIABLE_COMPARTIDA_SNCA] = IdSignalLocalVariable(NextSignalId("NORMAL"), KEY_VARIABLE_COMPARTIDA_SNCA) + 1;
base.SetSNCA();
}
}
}