diff --git a/Begriffe.lua b/Begriffe.lua deleted file mode 100644 index a95f1a7..0000000 --- a/Begriffe.lua +++ /dev/null @@ -1,499 +0,0 @@ --- Begriffe, die mit dieser Funktion definiert werden, lassen sich aufaddieren -function Zusatzbegriff(r) - return setmetatable(r, { - __add = function(a, b) - local r={} - local l={1,2,"V_max","H_erwarten","V_erwarten","Kurz"} - for i=1,#l do - if b[l[i]] ~= nil then - r[l[i]]=b[l[i]] - elseif a[l[i]] ~= nil then - r[l[i]]=a[l[i]] - end - end - return r - end - }) -end - --- HV-Signale der DR/DB -Hp0={ false } -Hp1={ true, Zugfahrt=true } -Hp2={ true, Zugfahrt=true, V_max=40 } - -Vr0=Zusatzbegriff{ H_erwarten=true } -Vr1=Zusatzbegriff{ } -Vr2=Zusatzbegriff{ V_erwarten=40 } -Kurz=Zusatzbegriff{ Kurz=true } - --- OSJD/EZMG/Hl-Signale des Ostblocks --- V_erwarten=60 wird durch V_erwarten=40 signalisiert -Hl1={ true, Zugfahrt=true } -Hl2={ true, Zugfahrt=true, V_max=100 } -Hl3a={ true, Zugfahrt=true, V_max=40 } -Hl3b={ true, Zugfahrt=true, V_max=60 } -Hl4={ true, Zugfahrt=true, V_erwarten=100 } -Hl5={ true, Zugfahrt=true, V_max=100, V_erwarten=100 } -Hl6a={ true, Zugfahrt=true, V_max=40, V_erwarten=100 } -Hl6b={ true, Zugfahrt=true, V_max=60, V_erwarten=100 } -Hl7={ true, Zugfahrt=true, V_erwarten=40 } -Hl8={ true, Zugfahrt=true, V_max=100, V_erwarten=40 } -Hl9a={ true, Zugfahrt=true, V_max=40, V_erwarten=40 } -Hl9b={ true, Zugfahrt=true, V_max=60, V_erwarten=40 } -Hl10={ true, Zugfahrt=true, H_erwarten=true } -Hl11={ true, Zugfahrt=true, V_max=100, H_erwarten=true } -Hl12a={ true, Zugfahrt=true, V_max=40, H_erwarten=true } -Hl12b={ true, Zugfahrt=true, V_max=60, H_erwarten=true } -Hl13={ false } - --- Ks-Signalsystem ab 1994 --- Zs3/Zs3v aufaddieren! -Ks1={ true, Zugfahrt=true } -Ks1bl={ true, Zugfahrt=true, V_erwarten=160 } -Ks2={ true, Zugfahrt=true, H_erwarten=true } - -Zs1={ true, Ersatzsignal=true } -Zs7={ true, Vorsichtssignal=true, V_max=40 } - -Sh0={ false } -Sh1={ true } -Rangierfahrt={ true, V_max=25 } - --- Ist Key 1 gleich nil -> Signal ignorieren -Kennlicht={ } -Aus={ } - -for i=2,15 do - _G["Zs3_"..tostring(i)]=Zusatzbegriff{ V_max=i*10 } - _G["Zs3v_"..tostring(i)]=Zusatzbegriff{ V_erwarten=i*10 } -end - -SignalModellBegriffe = { - ["HlSigAV40Betno_GK3"]={}, - ["HlSigAV40BetnolaSch_GK3"]={}, - ["HlSigAV60Betnor_GK3"]={Hl13,Hl1,Hl3b,Hl3a,Rangierfahrt,Zs1,Hl13,Aus}, - ["HlSigAVmaxBetno_GK3"]={}, - ["HlSigAVmaxBetnolaS_GK3"]={}, - ["HlSigAZBetno_GK3"]={Hl13,Hl1,Hl4,Hl7,Hl10,Hl3a,Hl9a,Hl6a,Hl12a,Rangierfahrt,Zs1,Hl13}, - ["HlSigAZBetnolaS_GK3"]={}, - ["HlSigAZV40Betno_GK3"]={}, - ["HlSigAZV40BetnolaS_GK3"]={}, - ["HlSigAZV602Betno_GK3"]={Hl13,Hl1,Hl4,Hl7,Hl10,Hl3b,Hl6b,Hl9b,Hl12b,Hl3a,Hl6a,Hl9a,Hl12a,Rangierfahrt,Zs1,Hl13,Aus}, - ["HlSigAZV60Betno_GK3"]={Hl13,Hl7,Hl10,Hl9b,Hl12b,Hl9a,Hl12a,Rangierfahrt,Zs1,Hl13,Aus}, - ["HlSigAZVmax2Betno_GK3"]={}, - ["HlSigAZVmax2BetnolaS_GK3"]={}, - ["HlSigAZVmaxBetno_GK3"]={}, - ["HlSigAZVmaxBetnolaS_GK3"]={}, - ["HlSigBlockBetno_GK3"]={}, - ["HlSigBlockBetnolaS_GK3"]={}, - ["HlSigBueSo16B_GK3"]={Hl13,Sh1,Aus}, - ["HlSigEBetno_GK3"]={}, - ["HlSigEBetnolaS_GK3"]={}, - ["HlSigEV402Betno_GK3"]={}, - ["HlSigEV402BetnolaS_GK3"]={}, - ["HlSigEV40Betno_GK3"]={}, - ["HlSigEV40BetnolaS_GK3"]={}, - ["HlSigEV602Betno_GK3"]={Hl13,Hl1,Hl3b,Hl3a,Zs1,Hl13,Aus}, - ["HlSigEV603Betno_GK3"]={Hl13,Hl7,Hl10,Hl9b,Hl12b,Hl9a,Hl12a,Zs1,Hl13,Aus}, - ["HlSigEV60Betno_GK3"]={Hl13,Hl1,Hl4,Hl7,Hl10,Hl3b,Hl6b,Hl9b,Hl12b,Hl3a,Hl6a,Hl9a,Hl12a,Zs1,Hl13,Aus}, - ["HlSigEVmax2Betno_GK3"]={}, - ["HlSigEVmax2BetnolaS_GK3"]={}, - ["HlSigEVmaxBetno_GK3"]={}, - ["HlSigEVmaxBetnolaS_GK3"]={}, - ["HlSig_A_Vmax"]={Hl1,Hl13}, - ["HlSig_B"]={Hl1,Hl13}, - ["HlSig_E_Vhalt"]={Hl10,Hl13}, - ["Hl_Sig_A1_HK1"]={Hl13,Hl1,Zs1,Rangierfahrt,Hl13}, - ["Hl_Sig_A2_HK1"]={Hl13,Hl1,Hl3a,Zs1,Rangierfahrt,Hl13}, - ["Hl_Sig_A3_Ls_HK1"]={Hl13,Hl1,Hl3b,Hl3a,Zs1,Rangierfahrt,Hl13}, - ["Hl_Sig_B_HK1"]={Hl13,Hl1,Zs1,Hl13}, - ["Hl_Sig_E1_HK1"]={Hl13,Hl1,Hl7,Hl10,Hl3a,Hl9a,Hl12a,Zs1,Hl13}, - ["Hl_Sig_E2_Ls_HK1"]={Hl13,Hl1,Hl4,Hl7,Hl10,Hl3b,Hl6b,Hl9b,Hl12b,Hl3a,Hl6a,Hl9a,Hl12a,Zs1,Hl13}, - ["Hl_Sig_SB_HK1"]={Hl13,Hl1,Hl10,Hl13}, - ["Hl_Sig_Vs40_HK1"]={Hl10,Hl7,Hl1}, - ["Hl_Sig_Vs40_Wh_HK1"]={Hl10,Hl7,Hl1}, - ["Hl_Sig_Vs60_HK1"]={Hl10,Hl7,Hl1}, - ["Hl_Sig_Vs60_Wh_HK1"]={Hl10,Hl7,Hl1}, - ["Hl_Sig_ZBF_1_1_HK1"]={Hl13,Kennlicht}, - ["Hl_Sig_ZBF_1_2_HK1"]={Hl13,Kennlicht,Rangierfahrt,Hl13}, - ["Hl_Sig_ZBF_2_1_HK1"]={Hl13,Kennlicht,Hl13}, - ["Hl_Sig_ZBF_2_2_HK1"]={Hl13,Kennlicht,Rangierfahrt,Hl13}, - ["Hl_Zwerg_Hl_HK1"]={Hl13,Hl1,Hl10,Hl3a,Zs1,Rangierfahrt}, - ["Hl_Zwerg_Ra_HK1"]={Aus,Rangierfahrt}, - ["HpSig_AZ_V40_Vs_69_V7"]={Hp0,Hp1+Vr0,Hp1+Vr1,Hp1+Vr2,Hp2+Vr0,Hp2+Vr1,Hp2+Vr2,Rangierfahrt}, - ["HpSig_AZ_Vmax_Vs_69_V7"]={Hp0,Hp1+Vr0,Hp1+Vr1,Hp1+Vr2,Rangierfahrt}, - ["HpSig_A_V100_69_V8"]={Hp0,Hp1,Hp1+Zs3_10,Hp2,Rangierfahrt}, - ["HpSig_A_V100_Vs_69_V8"]={Hp0,Hp1+Vr0,Hp1+Vr1,Hp1+Zs3_10+Vr0,Hp1+Zs3_10+Vr1,Hp2+Vr0,Hp2+Vr1,Rangierfahrt}, - ["HpSig_A_V40_69_V7"]={Hp0,Hp1,Hp2,Rangierfahrt}, - ["HpSig_A_V40_EpIV"]={Hp2,Hp0}, - ["HpSig_A_V40_Vr0_EpIV"]={Hp2+Vr0,Hp0}, - ["HpSig_A_V40_Vs_69_V7"]={Hp0,Hp1+Vr0,Hp1+Vr1,Hp2+Vr0,Hp2+Vr1,Rangierfahrt}, - ["HpSig_A_V60_69_V8"]={Hp0,Hp1,Hp2+Zs3_6,Hp2,Rangierfahrt}, - ["HpSig_A_V60_80_69_V8"]={Hp0,Hp1,Hp1+Zs3_8,Hp2+Zs3_6,Hp2,Rangierfahrt}, - ["HpSig_A_V60_80_Vs_69_V8"]={Hp0,Hp1+Vr0,Hp1+Vr1,Hp1+Zs3_8+Vr0,Hp1+Zs3_8+Vr1,Hp2+Zs3_6+Vr0,Hp2+Zs3_6+Vr1,Hp2+Vr0,Hp2+Vr1,Rangierfahrt}, - ["HpSig_A_V60_Vs_69_V8"]={Hp0,Hp1+Vr0,Hp1+Vr1,Hp2+Zs3_6+Vr0,Hp2+Zs3_6+Vr1,Hp2+Vr0,Hp2+Vr1,Rangierfahrt}, - ["HpSig_A_V80_69_V8"]={Hp0,Hp1,Hp1+Zs3_8,Hp2,Rangierfahrt}, - ["HpSig_A_V80_Vs_69_V8"]={Hp0,Hp1+Vr0,Hp1+Vr1,Hp1+Zs3_8+Vr0,Hp1+Zs3_8+Vr1,Hp2+Vr0,Hp2+Vr1,Rangierfahrt}, - ["HpSig_A_Vmax_69_V7"]={Hp0,Hp1,Rangierfahrt}, - ["HpSig_A_Vmax_Vs_69_V7"]={Hp0,Hp1+Vr0,Hp1+Vr1,Rangierfahrt}, - ["HpSig_A_Vmax_Vr0_EpIV"]={Hp1+Vr0,Hp0}, - ["HpSig_Ae_V100_69_V8"]={Hp0,Hp1,Hp1+Zs3_10,Rangierfahrt}, - ["HpSig_Ae_V100_Vs_69_V8"]={Hp0,Hp1+Vr0,Hp1+Vr1,Hp1+Zs3_10+Vr0,Hp1+Zs3_10+Vr1,Rangierfahrt}, - ["HpSig_Ae_V120_69_V8"]={Hp0,Hp1,Hp1+Zs3_12,Rangierfahrt}, - ["HpSig_Ae_V80_69_V8"]={Hp0,Hp1,Hp1+Zs3_8,Rangierfahrt}, - ["HpSig_Ae_V80_Vs_69_V8"]={Hp0,Hp1+Vr0,Hp1+Vr1,Hp1+Zs3_8+Vr0,Hp1+Zs3_8+Vr1,Rangierfahrt}, - ["HpSig_B_69_V7"]={Hp0,Hp1}, - ["HpSig_B_Vswg_69_V7"]={Hp0,Hp1+Vr0,Hp1+Vr1}, - ["HpSig_B_Vswg_oVSig_69_V7"]={Hp0,Hp1+Vr0,Hp1+Vr1}, - ["HpSig_B_Vswr_69_V7"]={Hp0,Hp1+Vr0,Hp1+Vr1}, - ["HpSig_B_Vswr_oVSig_69_V7"]={Hp0,Hp1+Vr0,Hp1+Vr1}, - ["HpSig_B_oVSig_69_V7"]={Hp0,Hp1}, - ["HpSig_EZ_V40_Vs_69_V7"]={}, - ["HpSig_EZw_V40_Vr0_EpIV"]={Hp2+Vr0,Hp0}, - ["HpSig_EZw_Vmax_Vr0_EpIV"]={Hp1,Hp0}, - ["HpSig_E_V100_69_V8"]={Hp0,Hp1,Hp1+Zs3_10,Hp2}, - ["HpSig_E_V100_Vs_69_V8"]={}, - ["HpSig_E_V100_Vs_V60_69_V8"]={}, - ["HpSig_E_V100_Vs_V60_l_69_V8"]={}, - ["HpSig_E_V100_Vs_V80_69_V8"]={}, - ["HpSig_E_V100_Vs_V80_l_69_V8"]={}, - ["HpSig_E_V100_Vs_l_69_V8"]={}, - ["HpSig_E_V100_l_69_V8"]={Hp0,Hp1,Hp1+Zs3_10,Hp2}, - ["HpSig_E_V20_30_69_V8"]={}, - ["HpSig_E_V20_30_l_69_V8"]={}, - ["HpSig_E_V20_69_V8"]={}, - ["HpSig_E_V20_l_69_V8"]={}, - ["HpSig_E_V30_69_V8"]={}, - ["HpSig_E_V30_l_69_V8"]={}, - ["HpSig_E_V40_69_V7"]={}, - ["HpSig_E_V40_Vr0_EpIV"]={Hp2+Vr0,Hp0}, - ["HpSig_E_V40_Vs_69_V7"]={}, - ["HpSig_E_V40_Vs_V100_69_V8"]={}, - ["HpSig_E_V40_Vs_V100_l_69_V8"]={}, - ["HpSig_E_V40_Vs_V20_30_69_V8"]={}, - ["HpSig_E_V40_Vs_V20_30_l_69_V8"]={}, - ["HpSig_E_V40_Vs_V20_69_V8"]={}, - ["HpSig_E_V40_Vs_V20_l_69_V8"]={}, - ["HpSig_E_V40_Vs_V30_69_V8"]={}, - ["HpSig_E_V40_Vs_V30_l_69_V8"]={}, - ["HpSig_E_V40_Vs_V60_69_V8"]={}, - ["HpSig_E_V40_Vs_V60_80_69_V8"]={}, - ["HpSig_E_V40_Vs_V60_80_l_69_V8"]={}, - ["HpSig_E_V40_Vs_V60_l_69_V8"]={}, - ["HpSig_E_V40_Vs_V80_69_V8"]={}, - ["HpSig_E_V40_Vs_V80_l_69_V8"]={}, - ["HpSig_E_V40_Vs_l_69_V7"]={}, - ["HpSig_E_V40_l_69_V7"]={}, - ["HpSig_E_V60_69_V8"]={}, - ["HpSig_E_V60_80_69_V8"]={}, - ["HpSig_E_V60_80_Vs_69_V8"]={}, - ["HpSig_E_V60_80_Vs_l_69_V8"]={}, - ["HpSig_E_V60_80_l_69_V8"]={}, - ["HpSig_E_V60_Vs_69_V8"]={}, - ["HpSig_E_V60_Vs_l_69_V8"]={}, - ["HpSig_E_V60_l_69_V8"]={}, - ["HpSig_E_V80_69_V8"]={}, - ["HpSig_E_V80_I_69_V8_"]={}, - ["HpSig_E_V80_Vs_69_V8"]={}, - ["HpSig_E_V80_Vs_l_69_V8"]={}, - ["HpSig_E_V80_l_69_V8"]={}, - ["HpSig_E_Vmax_Vr0_EpIV"]={Hp1+Vr0,Hp0}, - ["KS_HS_A_RI1"]={}, - ["KS_HS_A_Zs3_RI1"]={}, - ["KS_HS_E_RI1"]={}, - ["KS_HS_E_Zs3_RI1"]={}, - ["KS_HS_R_RI1"]={}, - ["KS_MA_A_RI1"]={}, - ["KS_MA_A_Zs3_RI1"]={}, - ["KS_MA_A_Zs3_Zs3v_RI1"]={}, - ["KS_MA_A_Zs3v_RI1"]={}, - ["KS_MA_E_RI1"]={}, - ["KS_MA_E_Zs3_RI1"]={}, - ["KS_MA_E_Zs3_Zs3v_RI1"]={}, - ["KS_MA_E_Zs3v_RI1"]={}, - ["KS_VS2_RI1"]={}, - ["KS_VSW_RI1"]={}, - ["KS_VSW_Zs3v_RI1"]={}, - ["KS_VS_RI1"]={}, - ["KS_VS_Zs3v_RI1"]={}, - ["KabKaSchSignalA_TB1"]={}, - ["KabKaSchSignalB_TB1"]={}, - ["KabKaSchSignal_TB1"]={}, - ["KsMastSigZs32_GK3"]={}, - ["KsMastSigZs3_GK3"]={}, - ["KsMastSigZs3v2_GK3"]={}, - ["KsMastSigZs3v_GK3"]={}, - ["KsMastSigZs6Zs13_GK3"]={}, - ["KsSigAKAMASKl_GK3"]={}, - ["KsSigAKAMASKlli_GK3"]={}, - ["KsSigAKAMAS_GK3"]={}, - ["KsSigAKAMASli_GK3"]={}, - ["KsSigAKA_GK3"]={}, - ["KsSigAKAli_GK3"]={}, - ["KsSigALAMASKl_GK3"]={}, - ["KsSigALAMASKlli_GK3"]={}, - ["KsSigALAMAS_GK3"]={}, - ["KsSigALAMASli_GK3"]={}, - ["KsSigALA_GK3"]={}, - ["KsSigALAli_GK3"]={}, - ["KsSigAMASKl_GK3"]={}, - ["KsSigAMAS_GK3"]={}, - ["KsSigAVKAMASKl_GK3"]={}, - ["KsSigAVKAMASKlli_GK3"]={}, - ["KsSigAVKAMAS_GK3"]={}, - ["KsSigAVKAMASli_GK3"]={}, - ["KsSigAVKA_GK3"]={}, - ["KsSigAVKAli_GK3"]={}, - ["KsSigAVLAMASKl_GK3"]={}, - ["KsSigAVLAMASKlli_GK3"]={}, - ["KsSigAVLAMAS_GK3"]={}, - ["KsSigAVLAMASli_GK3"]={}, - ["KsSigAVLA_GK3"]={}, - ["KsSigAVLAli_GK3"]={}, - ["KsSigAVMASKl_GK3"]={}, - ["KsSigAVMAS_GK3"]={}, - ["KsSigAV_GK3"]={}, - ["KsSigA_GK3"]={}, - ["KsSigBKAMAS_GK3"]={}, - ["KsSigBKAMASli_GK3"]={}, - ["KsSigBKA_GK3"]={}, - ["KsSigBKAli_GK3"]={}, - ["KsSigBLAMAS_GK3"]={}, - ["KsSigBLAMASli_GK3"]={}, - ["KsSigBLA_GK3"]={}, - ["KsSigBLAli_GK3"]={}, - ["KsSigBMAS_GK3"]={}, - ["KsSigBVKAMASKl_GK3"]={}, - ["KsSigBVKAMASKlli_GK3"]={}, - ["KsSigBVKAMAS_GK3"]={}, - ["KsSigBVKAMASli_GK3"]={}, - ["KsSigBVKA_GK3"]={}, - ["KsSigBVKAli_GK3"]={}, - ["KsSigBVLAMASKl_GK3"]={}, - ["KsSigBVLAMASKlli_GK3"]={}, - ["KsSigBVLAMAS_GK3"]={}, - ["KsSigBVLAMASli_GK3"]={}, - ["KsSigBVLA_GK3"]={}, - ["KsSigBVLAli_GK3"]={}, - ["KsSigBVMASKl_GK3"]={}, - ["KsSigBVMAS_GK3"]={}, - ["KsSigBV_GK3"]={}, - ["KsSigB_GK3"]={}, - ["KsSigVSigKA_GK3"]={}, - ["KsSigVSigKAli_GK3"]={}, - ["KsSigVSigLA_GK3"]={}, - ["KsSigVSigLAli_GK3"]={}, - ["KsSigVSigWdhKA_GK3"]={}, - ["KsSigVSigWdhKAli_GK3"]={}, - ["KsSigVSigWdhLA_GK3"]={}, - ["KsSigVSigWdhLAli_GK3"]={}, - ["KsSigVSigWdh_GK3"]={}, - ["KsSigVSig_GK3"]={}, - ["KsSigVSigverkKA_GK3"]={}, - ["KsSigVSigverkKAli_GK3"]={}, - ["KsSigVSigverkLA_GK3"]={}, - ["KsSigVSigverkLAli_GK3"]={}, - ["KsSigVSigverk_GK3"]={}, - ["PI5_HP01_Form"]={Hp0,Hp1}, - ["PI5_HP01_Form_oVSig"]={Hp0,Hp1}, - ["PI5_HP02_Form"]={Hp0,Hp1,Hp2}, - ["PI5_HP02_Form_V60T"]={Hp0,Hp1,Hp2+Zs3_6}, - ["PI5_HP02_Form_V60T_oVSig"]={Hp0,Hp1,Hp2+Zs3_6}, - ["PI5_HP02_Form_Vr0"]={Hp0,Hp1,Hp1+Vr2,Hp2+Vr0}, - ["PI5_HP02_Form_Vr0_oVSig"]={Hp0,Hp1,Hp1+Vr2,Hp2+Vr0}, - ["PI5_HP02_Form_oVSig"]={Hp0,Hp1,Hp2}, - ["PI5_RaSig_mech"]={}, - ["PI5_ShSig_Form"]={}, - ["ShSig_Form"]={Sh1,Sh0}, - ["ShSig_Licht_EpIV"]={Sh1,Sh0}, - ["ShSig_Licht_EpIV_kl"]={Sh1,Sh0}, - ["SperrSig_DS100_RI1"]={Hp0,Kennlicht,Rangierfahrt,Sh1}, - ["SperrSig_DS100_haeng2_RI1"]={Hp0,Kennlicht,Rangierfahrt,Sh1}, - ["SperrSig_DS100_haeng_RI1"]={Hp0,Kennlicht,Rangierfahrt,Sh1}, - ["SperrSig_DS100_hoch_RI1"]={Hp0,Kennlicht,Rangierfahrt,Sh1}, - ["Wartesignal_DR_alt_HK1"]={Sh0,Rangierfahrt}, - ["Wartesignal_DR_neu_HK1"]={Sh0,Rangierfahrt}, -} - --- Die Begriffe von den AH1-69er Signalen generieren wir aus dem Namen. Scheiss Tipperei! -do - for Modell, _ in pairs(SignalModellBegriffe) do - if string.match(Modell, "HpSig_.*_V[78]$") then - local Begriffe = {} - local Typ, HS, VS = string.match(Modell, "HpSig_(%a*)_([^s]*)Vsw?g?r?_(.*)69_V[78]") - if not Typ then - Typ, HS = string.match(Modell, "HpSig_(%a*)_([^s]*)69_V[78]") - end - - local function MitVr(a) - if VS then - table.insert(Begriffe, a+Vr0) - table.insert(Begriffe, a+Vr1) - if string.match(VS, "V60_80") then - table.insert(Begriffe, a+Vr1+Zs3v_8) - table.insert(Begriffe, a+Vr2+Zs3v_6) - elseif string.match(VS, "V60") and (not a.V_max or a.V_max >= 60 or string.match(HS, "V40")) then - table.insert(Begriffe, a+Vr2+Zs3v_6) - elseif string.match(VS, "V80") and (not a.V_max or a.V_max >= 80 or string.match(HS, "V40"))then - table.insert(Begriffe, a+Vr1+Zs3v_8) - elseif string.match(VS, "V100") then - table.insert(Begriffe, a+Vr1+Zs3v_10) - end - if string.match(Typ,"E") or Typ == "AZ" then table.insert(Begriffe, a+Vr2) end - if string.match(VS, "V20_30") and (not a.V_max or a.V_max >= 30)then - table.insert(Begriffe, a+Vr2+Zs3v_3) - table.insert(Begriffe, a+Vr2+Zs3v_2) - elseif string.match(VS, "V30") and (not a.V_max or a.V_max >= 30)then - table.insert(Begriffe, a+Vr2+Zs3v_3) - elseif string.match(VS, "V20") and (not a.V_max or a.V_max >= 20)then - table.insert(Begriffe, a+Vr2+Zs3v_2) - end - else - table.insert(Begriffe, a) - end - end - - table.insert(Begriffe, Hp0) - MitVr(Hp1) - if string.match(HS, "V100") then - MitVr(Hp1+Zs3_10) - elseif string.match(HS, "V60_80") then - MitVr(Hp1+Zs3_8) - MitVr(Hp2+Zs3_6) - elseif string.match(HS, "V60") then - MitVr(Hp2+Zs3_6) - elseif string.match(HS, "V80") then - MitVr(Hp1+Zs3_8) - end - if not string.match(HS, "Vmax") and Typ ~= "Ae" then - MitVr(Hp2) - end - if string.match(HS, "V20_30") then - MitVr(Hp2+Zs3_3) - MitVr(Hp2+Zs3_2) - elseif string.match(HS, "V20") then - MitVr(Hp2+Zs3_2) - elseif string.match(HS, "V30") then - MitVr(Hp2+Zs3_3) - end - if string.match(Typ, "A") then - table.insert(Begriffe, Rangierfahrt) - end - SignalModellBegriffe[Modell]=Begriffe - end - end -end - -function BegriffErklaeren(Begriff) - if Begriff == nil then return "nil", "" end - if Begriff[1]==false then - return "Halt", "" - elseif Begriff[1]==nil then - return "Abgeschaltet", "" - end - local txt = "Fahrt" - local farbe = "" - if Begriff.H_erwarten ~= nil or Begriff.V_max then - farbe = "" - end - if Begriff.Ersatzsignal or Begriff.Vorsichtssignal then - farbe = "" - end - if Begriff.Vorsichtssignal then txt = txt.." auf Sicht" end - if Begriff.V_max then - txt = txt.." mit "..tostring(Begriff.V_max).." km/h" - end - if Begriff.V_erwarten then - txt = txt..", "..tostring(Begriff.V_erwarten).." km/h erwarten" - end - if Begriff.H_erwarten ~= nil then - txt = txt..", Halt erwarten" - end - if Begriff.kurz then - txt = txt.." (kurzer Bremsweg)" - end - return txt, farbe -end - -function SignalmodelleAusAnlagendatei(Datei) - local fd = io.open(Datei, "r") - local xml = fd:read("*a") - - Signalmodelle={} - - for capture in string.gmatch(xml, " Stellung[props[i]] then return true end - if StlgB[props[i]] < StlgA[props[i]] then return true end - end - if StlgB[props[i]] and Stellung[props[i]] and StlgB[props[i]] < Stellung[props[i]] then - if StlgA[props[i]] == nil then return false end - if StlgA[props[i]] > Stellung[props[i]] then return false end - if StlgA[props[i]] < StlgB[props[i]] then return false end - end - end - end - end - return false - end) - -- Begriff aktiv schalten... der Wert in unserer Indextabelle ist der Index in die Begriffstabelle - -- und damit auch genau der Wert, den EEP fuer die numerische Stellung braucht - EEPSetSignal(ID, order[1], 1) - return true -end diff --git a/Zuglenkung.lua b/Zuglenkung.lua deleted file mode 100644 index f07aeac..0000000 --- a/Zuglenkung.lua +++ /dev/null @@ -1,92 +0,0 @@ -require("Serializer") - -Zuglenkung_Slot = Zuglenkung_Slot or 991 -Zuglenkung_Auftreage = ladeTabelle(Zuglenkung_Slot) - --- Extrafunktion, damit der User das ueberschreiben kann -function ZuglenkungMelden(...) - local Zeitstempel = string.format("%02d:%02d:%02d", EEPTimeH, EEPTimeM, EEPTimeS) - print(Zeitstempel," Zuglenkung: ",...) -end - -function Zuglenkung(...) - local Weg = {...} - if #Weg % 2 == 1 then - print("Zuglenkung() erfordert eine gerade Anzahl Argumente") - return - end - local Auftrag=nil - for i=#Weg-1,1,-2 do - Auftrag={Weg[i],Weg[i+1],0,Auftrag} - end - ZuglenkungAuftrag(Auftrag) - speicherTabelle(Zuglenkung_Slot, Zuglenkung_Auftreage) -end - -function ZuglenkungAuftrag(Auftrag) - if Zuglenkung_Auftreage[Auftrag[1]] ~= nil then - ZuglenkungMelden("Stellauftrag ", Auftrag[1], " verworfen") - end - Zuglenkung_Auftreage[Auftrag[1]]=Auftrag - if type(Auftrag[2]) == "number" then - ZuglenkungMelden("Anmeldung ",string.format("FS %04d-%02d",Auftrag[1],Auftrag[2])) - else - ZuglenkungMelden("Anmeldung ",string.format("FS %04d",Auftrag[1])," zu ",__tostring(Auftrag[2])) - end -end - -function ZuglenkungMain() - local ZuStellen={} - for k, Auftrag in pairs(Zuglenkung_Auftreage) do - local Stellung = EEPGetSignal(Auftrag[1]) - - -- Rumheulen, falls es unser FSignal nicht gibt - if Stellung == 0 then - ZuglenkungMelden("FSignal ", Auftrag[1], " nicht gefunden") - Zuglenkung_Auftreage[k]=nil - - -- Merken, das wir das FS-Signal schonmal aufgeloest gesehen haben - elseif Stellung == 1 then - Auftrag[3]=1 - local Ziel = Auftrag[2] - if type(Ziel) == "number" then Ziel={Ziel} end - table.insert(ZuStellen, {Auftrag[1], Ziel[math.random(#Ziel)]}) - - -- Stellung > 1 und wir haben es vorher auf 1 gesehen -> wir waren das - elseif Auftrag[3] == 1 then - ZuglenkungMelden(string.format("FS %04d-%02d",Auftrag[1],Stellung-1)," geschaltet") - Auftrag = Auftrag[4] - Zuglenkung_Auftreage[k]=nil - if Auftrag then - ZuglenkungAuftrag(Auftrag) - return - end - end - end - - -- Stellversuche durchmischen - for i=#ZuStellen, 2, -1 do - local j = math.random(#ZuStellen) - ZuStellen[i], ZuStellen[j] = ZuStellen[j], ZuStellen[i] - end - - -- Stellversuche durchfuehren - for i=1, #ZuStellen do - EEPSetSignal(ZuStellen[i][1], ZuStellen[i][2]+1, 1) - end - - speicherTabelle(Zuglenkung_Slot, Zuglenkung_Auftreage) -end - -function Zuglenkung_Beschreiben() - txt="" - for k, Auftrag in pairs(Zuglenkung_Auftreage) do - txt=txt.."FS "..Auftrag[1].." auf "..__tostring(Auftrag[2]) - while Auftrag[3] do - Auftrag=Auftrag[3] - txt=txt..", dann "..Auftrag[1].." auf "..__tostring(Auftrag[2]) - end - txt=txt.."\n" - end - return txt -end