aboutsummaryrefslogtreecommitdiff
path: root/advtrains_train_steam/models
ModeNameSize
-rwxr-xr-xadvtrains_detailed_steam_engine.b3d472151logplain
-rwxr-xr-xadvtrains_engine_steam.b3d437126logplain
-rw-r--r--advtrains_passenger_wagon.b3d145287logplain
-rw-r--r--advtrains_wagon.b3d107352logplain
-rwxr-xr-xadvtrains_wagon_box.b3d50385logplain
/a> 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
-- scheduler.lua
-- Implementation of a Railway time schedule queue
-- In contrast to the LuaATC interrupt queue, this one can handle many different
-- event receivers. This is done by registering a callback with the scheduler

local ln = advtrains.lines
local sched = {}

local UNITS_THRESH = 10
local MAX_PER_ITER = 10

local callbacks = {}

-- Register a handler callback to handle scheduler items.
-- e - a handler identifier (corresponds to "handler" in enqueue() )
-- func - a function(evtdata) to be executed when a schedule item expires
--        evtdata - arbitrary data that has been passed into enqueue()
function sched.register_callback(e, func)
	callbacks[e] = func
end

--[[
{
	t = <railway time in seconds>
	e = <handler callback>
	d = <data table>
	u = <unit identifier>
}
The "unit identifier" is there to prevent schedule overflows. It can be, for example, the position hash