~gpcf/advtrains-devel

Remove TCB marker on TCB removal v1 PROPOSED

1F616EMO: 1
 Remove TCB marker on TCB removal

 2 files changed, 14 insertions(+), 6 deletions(-)
Export patchset (mbox)
How do I use this?

Copy & paste the following snippet into your terminal to import this patchset into git:

curl -s https://lists.sr.ht/~gpcf/advtrains-devel/patches/53601/mbox | git am -3
Learn more about email & git

[PATCH] Remove TCB marker on TCB removal Export this patch

From: 1F616EMO <root@1f616emo.xyz>

This patch fixes the following problem:

* TCB marker is not removed on TCB removal
* TCB marker is recreated on removal
---
 advtrains_interlocking/database.lua  |  9 ++++++---
 advtrains_interlocking/tcb_ts_ui.lua | 11 ++++++++---
 2 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/advtrains_interlocking/database.lua b/advtrains_interlocking/database.lua
index 6787c50..5096d48 100644
--- a/advtrains_interlocking/database.lua
+++ b/advtrains_interlocking/database.lua
@@ -425,7 +425,7 @@ function ildb.link_track_sections(merge_id, root_id)
	merge_ts(root_id, merge_id)
end

function ildb.remove_from_interlocking(sigd)
function ildb.remove_from_interlocking(sigd, no_tcb_marker)
	local tcbs = ildb.get_tcbs(sigd)
	if not ildb.may_modify_tcbs(tcbs) then return false end
	
@@ -455,7 +455,9 @@ function ildb.remove_from_interlocking(sigd)
			track_sections[tsid] = nil
		end
	end
	advtrains.interlocking.show_tcb_marker(sigd.p)
	if not no_tcb_marker then
		advtrains.interlocking.show_tcb_marker(sigd.p)
	end
	if tcbs.signal then
		return false
	end
@@ -468,10 +470,11 @@ function ildb.remove_tcb(pos)
		return true --FIX: not an error, because tcb is already removed
	end
	for connid=1,2 do
		if not ildb.remove_from_interlocking({p=pos, s=connid}) then
		if not ildb.remove_from_interlocking({p=pos, s=connid}, true) then
			return false
		end
	end
	advtrains.interlocking.remove_tcb_marker_pts(pts)
	track_circuit_breaks[pts] = nil
	return true
end
diff --git a/advtrains_interlocking/tcb_ts_ui.lua b/advtrains_interlocking/tcb_ts_ui.lua
index 0cc10da..96edadb 100755
--- a/advtrains_interlocking/tcb_ts_ui.lua
+++ b/advtrains_interlocking/tcb_ts_ui.lua
@@ -550,6 +550,13 @@ minetest.register_entity("advtrains_interlocking:tcbmarker", {
	static_save = false,
})

function advtrains.interlocking.remove_tcb_marker_pts(pts)
	if markerent[pts] then
		markerent[pts]:remove()
		markerent[pts] = nil
	end
end

function advtrains.interlocking.show_tcb_marker(pos)
	--atdebug("showing tcb marker",pos)
	local tcb = ildb.get_tcb(pos)
@@ -573,9 +580,7 @@ function advtrains.interlocking.show_tcb_marker(pos)
	end
	
	local pts = advtrains.roundfloorpts(pos)
	if markerent[pts] then
		markerent[pts]:remove()
	end
	advtrains.interlocking.remove_tcb_marker_pts(pts)
	
	local obj = minetest.add_entity(pos, "advtrains_interlocking:tcbmarker")
	if not obj then return end
-- 
2.45.2