LUADOC - Farming Simulator 19

SpecializationUtil

Description
Specialization util class
Functions

callSpecializationsFunction

Description
Definition
callSpecializationsFunction()
Code
13function SpecializationUtil.callSpecializationsFunction(func)
14 return function (self, ...)
15 for _,v in pairs(g_specializationManager:getSpecializations()) do
16 local f = v[func]
17 if f ~= nil then
18 f(self, ...)
19 end
20 end
21 end
22end

hasSpecialization

Description
Definition
hasSpecialization()
Code
101function SpecializationUtil.hasSpecialization(spec, specializations)
102 for _,v in pairs(specializations) do
103 if v == spec then
104 return true
105 end
106 end
107 return false
108end

raiseEvent

Description
Definition
raiseEvent()
Code
26function SpecializationUtil.raiseEvent(vehicle, eventName, ...)
27 assert(vehicle.eventListeners[eventName] ~= nil, "Error: Event '"..tostring(eventName).."' is not registered for vehicleType '"..tostring(vehicle.vehicleType.name).."'!")
28 for _, spec in ipairs(vehicle.eventListeners[eventName]) do
29 spec[eventName](vehicle, ...)
30 end
31end

registerEvent

Description
Definition
registerEvent()
Code
35function SpecializationUtil.registerEvent(vehicleType, eventName)
36 if vehicleType.functions[eventName] ~= nil or vehicleType.events[eventName] ~= nil or (eventName == nil or eventName == "") then
37 printCallstack()
38 end
39
40 assert(vehicleType.functions[eventName] == nil, "Error: Event '"..tostring(eventName).."' already registered as function in vehicleType '"..tostring(vehicleType.name).."'!")
41 assert(vehicleType.events[eventName] == nil, "Error: Event '"..tostring(eventName).."' already registered as event in vehicleType '"..tostring(vehicleType.name).."'!")
42 assert(eventName ~= nil and eventName ~= "", "Error: Event '"..tostring(eventName).."' is 'nil' or empty!")
43
44 vehicleType.events[eventName] = eventName
45 vehicleType.eventListeners[eventName] = {}
46end

registerEventListener

Description
Definition
registerEventListener()
Code
76function SpecializationUtil.registerEventListener(vehicleType, eventName, spec)
77 local className = ClassUtil.getClassName(spec)
78
79 assert(vehicleType.eventListeners ~= nil, "Error: Invalid vehicle type for specialization '"..tostring(className).."'!")
80 if vehicleType.eventListeners[eventName] == nil then
81 return
82 end
83
84 assert(spec[eventName] ~= nil, "Error: Event listener function '"..tostring(eventName).."' not defined in specialization '"..tostring(className).."'!")
85
86 local found = false
87 for _, registeredSpec in pairs(vehicleType.eventListeners[eventName]) do
88 if registeredSpec == spec then
89 found = true
90 break
91 end
92 end
93
94 assert(not found, "Error: Eventlistener for '"..eventName.."' already registered in specialization '"..tostring(className).."'!")
95
96 table.insert(vehicleType.eventListeners[eventName], spec)
97end

registerFunction

Description
Definition
registerFunction()
Code
50function SpecializationUtil.registerFunction(vehicleType, funcName, func)
51 if vehicleType.functions[funcName] ~= nil or vehicleType.events[funcName] ~= nil or func == nil then
52 printCallstack()
53 end
54
55 assert(vehicleType.functions[funcName] == nil, "Error: Function '"..tostring(funcName).."' already registered as function in vehicleType '"..tostring(vehicleType.name).."'!")
56 assert(vehicleType.events[funcName] == nil, "Error: Function '"..tostring(funcName).."' already registered as event in vehicleType '"..tostring(vehicleType.name).."'!")
57 assert(func ~= nil, "Error: Given reference for Function '"..tostring(funcName).."' is 'nil'!")
58
59 vehicleType.functions[funcName] = func
60end

registerOverwrittenFunction

Description
Definition
registerOverwrittenFunction()
Code
64function SpecializationUtil.registerOverwrittenFunction(vehicleType, funcName, func)
65
66 assert(func ~= nil, "Error: Given reference for OverwrittenFunction '"..tostring(funcName).."' is 'nil'!")
67
68 -- if function does not exist, we don't need to overwrite anything
69 if vehicleType.functions[funcName] ~= nil then
70 vehicleType.functions[funcName] = Utils.overwrittenFunction(vehicleType.functions[funcName], func)
71 end
72end