aboutsummaryrefslogtreecommitdiff
path: root/advtrains/models/advtrains_dtrack_swlst_60.b3d
diff options
context:
space:
mode:
authorywang <yw05@forksworld.de>2021-05-30 14:57:48 +0200
committerywang <yw05@forksworld.de>2021-11-05 20:28:38 +0100
commit8793c8bd48eb37f7807f9f1df942ed7226b934e8 (patch)
tree59b5dda459eb7e9b38da6adf9cd08de2a55b52d9 /advtrains/models/advtrains_dtrack_swlst_60.b3d
parentfb632f170a9ac217be888b3ad294d17557719a2a (diff)
downloadadvtrains-8793c8bd48eb37f7807f9f1df942ed7226b934e8.tar.gz
advtrains-8793c8bd48eb37f7807f9f1df942ed7226b934e8.tar.bz2
advtrains-8793c8bd48eb37f7807f9f1df942ed7226b934e8.zip
make distant signal aspect dropdown labels consistent with the ones for the main aspect
Diffstat (limited to 'advtrains/models/advtrains_dtrack_swlst_60.b3d')
0 files changed, 0 insertions, 0 deletions
='#n137'>137 138 139 140 141 142 143 144 145 146 147 148 149


local map_def={
	example = {
		p1x=168,
		p1z=530,
		p2x=780,
		p2z=1016,
		background="itm_example.png",
	},
}

local itm_cache={}
local itm_pdata={}
local itm_conf_mindia=0.1

minetest.register_privilege("itm", { description = "Allows to display train map", give_to_singleplayer = true, default = false })

local function create_map_form_with_bg(d)
	local minx, minz, maxx, maxz = math.min(d.p1x, d.p2x), math.min(d.p1z, d.p2z), math.max(d.p1x, d.p2x), math.max(d.p1z, d.p2z)
	local form_x, form_z=10,10
	local edge_x, edge_z = form_x/(maxx-minx), form_z/(maxz-minz)
	local len_x, len_z=math.max(edge_x, itm_conf_mindia), math.max(edge_z, itm_conf_mindia)
	local form="size["..(form_x+edge_x)..","..(form_z+edge_z).."] background[0,0;0,0;"..d.background..";true] "
	local lbl={}
	
	for pts, tid in pairs(advtrains.detector.on_node) do
		local pos=minetest.string_to_pos(pts)
		form=form.."box["..(edge_x*(pos.x-minx))..","..(form_z-(edge_z*(pos.z-minz)))..";"..len_x..","..len_z..";red]"
		lbl[sid(tid)]=pos
	end
	
	for t_id, xz in pairs(lbl) do
		form=form.."label["..(edge_x*(xz.x-minx))..","..(form_x-(edge_z*(xz.z-minz)))..";"..t_id.."]"
	end
	return form
end

local function create_map_form(d)
	if d.background then
		return create_map_form_with_bg(d)
	end
	
	local minx, minz, maxx, maxz = math.min(d.p1x, d.p2x), math.min(d.p1z, d.p2z), math.max(d.p1x, d.p2x), math.max(d.p1z, d.p2z)
	local form_x, form_z=10,10
	local edge_x, edge_z = form_x/(maxx-minx), form_z/(maxz-minz)
	local len_x, len_z=math.max(edge_x, itm_conf_mindia), math.max(edge_z, itm_conf_mindia)
	local form="size["..(form_x+edge_x)..","..(form_z+edge_z).."]"
	local lbl={}
	
	for x,itx in pairs(itm_cache) do
		if x>=minx and x<=maxx then
			for z,y in pairs(itx) do
				if z>=minz and z<=maxz then
					local adn=advtrains.detector.get({x=x, y=y, z=z})
					local color="gray"
					if adn then
						color="red"
						lbl[sid(adn)]={x=x, z=z}