aboutsummaryrefslogtreecommitdiff
path: root/advtrains_signals_ks/models
ModeNameSize
-rw-r--r--advtrains_signals_ks_head_dist.obj6709logplain
-rw-r--r--advtrains_signals_ks_head_main.obj7058logplain
-rw-r--r--advtrains_signals_ks_lamps_dist.obj62142logplain
-rw-r--r--advtrains_signals_ks_lamps_main.obj86593logplain
-rw-r--r--advtrains_signals_ks_main_smr0.obj123754logplain
-rw-r--r--advtrains_signals_ks_main_smr30.obj123759logplain
-rw-r--r--advtrains_signals_ks_main_smr45.obj124025logplain
-rw-r--r--advtrains_signals_ks_main_smr60.obj124173logplain
-rw-r--r--advtrains_signals_ks_mast.obj9179logplain
-rw-r--r--advtrains_signals_ks_mast_smr0.obj3990logplain
-rw-r--r--advtrains_signals_ks_mast_smr30.obj3955logplain
-rw-r--r--advtrains_signals_ks_mast_smr45.obj3954logplain
-rw-r--r--advtrains_signals_ks_mast_smr60.obj3955logplain
-rw-r--r--advtrains_signals_ks_sht_smr0.obj84325logplain
-rw-r--r--advtrains_signals_ks_sht_smr30.obj83945logplain
-rw-r--r--advtrains_signals_ks_sht_smr45.obj83767logplain
-rw-r--r--advtrains_signals_ks_sht_smr60.obj84167logplain
-rw-r--r--advtrains_signals_ks_sign_smr0.obj3497logplain
-rw-r--r--advtrains_signals_ks_sign_smr30.obj3512logplain
-rw-r--r--advtrains_signals_ks_sign_smr45.obj3510logplain
-rw-r--r--advtrains_signals_ks_sign_smr60.obj3510logplain
-rw-r--r--advtrains_signals_ks_zs_bottom.obj25042logplain
-rw-r--r--advtrains_signals_ks_zs_top.obj21497logplain
pan class="hl opt">.interlocking.update_signal_aspect(tcbs) if tcbs.signal and sigd_equal(ts.route.entry, ts.route.origin) then if tcbs.route_auto and tcbs.routeset then --atdebug("Resetting route (",ts.route.origin,")") advtrains.interlocking.route.update_route(ts.route.origin, tcbs) else tcbs.routeset = nil end end end ts.route = nil end if tcbs.signal then advtrains.interlocking.route.update_route(sigd, tcbs) end end local function freesection(tid, train, ts_id, ts) -- train if not train.il_sections then train.il_sections = {} end itkremove(train.il_sections, "ts_id", ts_id) -- ts if not ts.trains then ts.trains = {} end itremove(ts.trains, tid) if ts.route_post then advtrains.interlocking.route.free_route_locks(ts_id, ts.route_post.locks) if ts.route_post.next then --this does nothing when the train went the right way, because -- "route" info is already cleared. advtrains.interlocking.route.cancel_route_from(ts.route_post.next) end ts.route_post = nil end -- This must be delayed, because this code is executed in-between a train step -- TODO use luaautomation timers? minetest.after(0, advtrains.interlocking.route.update_waiting, "ts", ts_id) end -- This is regular operation -- The train is on a track and drives back and forth -- This sets the section for both directions, to be failsafe advtrains.tnc_register_on_enter(function(pos, id, train, index) local tcb = ildb.get_tcb(pos) if tcb then for connid=1,2 do local ts = tcb[connid].ts_id and ildb.get_ts(tcb[connid].ts_id) if ts then setsection(id, train, tcb[connid].ts_id, ts, {p=pos, s=connid}) end end end end) -- this time, of course, only clear the backside (cp connid) advtrains.tnc_register_on_leave(function(pos, id, train, index) local tcb = ildb.get_tcb(pos) if tcb and train.path_cp[index] then local connid = train.path_cp[index] local ts = tcb[connid].ts_id and ildb.get_ts(tcb[connid].ts_id) if ts then freesection(id, train, tcb[connid].ts_id, ts) end end end) -- those callbacks are needed to account for created and removed trains (also regarding coupling) advtrains.te_register_on_create(function(id, train) -- let's see what track sections we find here local index = atround(train.index) local pos = advtrains.path_get(train, index) local ts_id, origin = ildb.get_ts_at_pos(pos) if ts_id then local ts = ildb.get_ts(ts_id) if ts then setsection(id, train, ts_id, ts, origin) else