aboutsummaryrefslogtreecommitdiff
path: root/advtrains_line_automation/time_table.lua
Commit message (Collapse)AuthorAge
ontent' class='blob'>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
-- Interlocking counterpart of LZB, which has been moved into the core...
-- Registers LZB callback for signal management.

--[[
usage of lzbdata:
{
	travsht = boolean indicating whether the train will be a shunt move at "trav"
	travspd = speed restriction at end of traverser
	travwspd = warning speed res.t
}
]]

local SHUNT_SPEED_MAX = advtrains.SHUNT_SPEED_MAX

local il = advtrains.interlocking

local function get_over_function(speed, shunt, asptype)
	return function(pos, id, train, index, speed, lzbdata)
		if speed == 0 and minetest.settings:get_bool("at_il_force_lzb_halt") then
			atwarn(id,"overrun LZB 0 restriction (red signal) ",pos)
			-- Set train 1 index backward. Hope this does not lead to bugs...
			--train.index = index - 0.5
			advtrains.speed.set_restriction(train, "main", 0)
			
			--TODO temporary
			--advtrains.drb_dump(id)
			--error("Debug: "..id.." triggered LZB-0")
		else
			advtrains.speed.set_restriction(train, asptype, speed or -1)
			train.is_shunt = shunt
		end
		--atdebug("train drove over IP: speed=",speed,"shunt=",shunt)
	end
end

advtrains.tnc_register_on_approach(function(pos, id, train, index, has_entered, lzbdata)

	--atdebug(id,"IL ApprC",pos,index,lzbdata)
	--train.debug = advtrains.print_concat_table({train.is_shunt,"|",index,"|",lzbdata})

	local pts = advtrains.roundfloorpts(pos)
	local cn  = train.path_cn[index]
	local travsht = lzbdata.il_shunt
	
	local travspd = lzbdata.il_speed
	
	if travsht==nil then
		-- lzbdata has reset
		travspd = train.speed_restriction
		travsht = train.is_shunt or false
	end
	
	
	
	-- check for signal