From 72cae1327527672afe2bbb47662d42a44f086942 Mon Sep 17 00:00:00 2001 From: orwell Date: Tue, 11 Jun 2024 22:30:40 +0200 Subject: Fix more setstate stuff with new API (compat legacy) --- advtrains_interlocking/signal_api.lua | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'advtrains_interlocking') diff --git a/advtrains_interlocking/signal_api.lua b/advtrains_interlocking/signal_api.lua index a300ab1..b1e8b20 100644 --- a/advtrains_interlocking/signal_api.lua +++ b/advtrains_interlocking/signal_api.lua @@ -211,6 +211,21 @@ function signal.clear_aspect(pos, skip_dst_notify) end end +-- Clear any info about aspects from this signal, without resetting/reapplying the aspect. +-- Supposed to be used for legacy on-off signals when the on-off toggle is used +function signal.unregister_aspect(pos) + local main_pts = advtrains.encode_pos(pos) + local old_tbl = signal.aspects[main_pts] + local old_remote = old_tbl and old_tbl.remote + + -- unregister from old remote + if old_remote then + signal.distant_refs[old_remote][main_pts] = nil + end + + signal.aspects[main_pts] = nil +end + -- Notify distant signals of main_pts of a change in the aspect of this signal -- function signal.notify_distants_of(main_pts, limit) -- cgit v1.2.3