LUADOC - Farming Simulator 22

SpecializationUtil

Description
Specialization util class
Functions

hasSpecialization

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

raiseEvent

Description
Definition
raiseEvent()
Code
13function SpecializationUtil.raiseEvent(object, eventName, ...)
14 assert(object.eventListeners[eventName] ~= nil, "Error: Event '"..tostring(eventName).."' is not registered for type '"..tostring(object.type.name).."'!")
15 for _, spec in ipairs(object.eventListeners[eventName]) do
16 --#profile local doProfiling, profileName = Vehicle.PROFILE_EVENTS[eventName], spec.className .. ":" .. eventName
17 --#profile if doProfiling then g_remoteProfiler.ZoneBeginN(profileName) end
18 spec[eventName](object, ...)
19 --#profile if doProfiling then g_remoteProfiler.ZoneEnd() end
20 end
21end

registerEvent

Description
Definition
registerEvent()
Code
25function SpecializationUtil.registerEvent(objectType, eventName)
26 if objectType.functions[eventName] ~= nil or objectType.events[eventName] ~= nil or (eventName == nil or eventName == "") then
27 printCallstack()
28 end
29
30 assert(objectType.functions[eventName] == nil, "Error: Event '"..tostring(eventName).."' already registered as function in type '"..tostring(objectType.name).."'!")
31 assert(objectType.events[eventName] == nil, "Error: Event '"..tostring(eventName).."' already registered as event in type '"..tostring(objectType.name).."'!")
32 assert(eventName ~= nil and eventName ~= "", "Error: Event '"..tostring(eventName).."' is 'nil' or empty!")
33
34 objectType.events[eventName] = eventName
35 objectType.eventListeners[eventName] = {}
36end

registerEventListener

Description
Definition
registerEventListener()
Code
66function SpecializationUtil.registerEventListener(objectType, eventName, spec)
67 local className = ClassUtil.getClassName(spec)
68
69 assert(objectType.eventListeners ~= nil, "Error: Invalid type for specialization '"..tostring(className).."'!")
70 if objectType.eventListeners[eventName] == nil then
71 return
72 end
73
74 assert(spec[eventName] ~= nil, "Error: Event listener function '"..tostring(eventName).."' not defined in specialization '"..tostring(className).."'!")
75
76 local found = false
77 for _, registeredSpec in pairs(objectType.eventListeners[eventName]) do
78 if registeredSpec == spec then
79 found = true
80 break
81 end
82 end
83
84 assert(not found, "Error: Eventlistener for '"..eventName.."' already registered in specialization '"..tostring(className).."'!")
85
86 table.insert(objectType.eventListeners[eventName], spec)
87end

registerFunction

Description
Definition
registerFunction()
Code
40function SpecializationUtil.registerFunction(objectType, funcName, func)
41 if objectType.functions[funcName] ~= nil or objectType.events[funcName] ~= nil or func == nil then
42 printCallstack()
43 end
44
45 assert(objectType.functions[funcName] == nil, "Error: Function '"..tostring(funcName).."' already registered as function in type '"..tostring(objectType.name).."'!")
46 assert(objectType.events[funcName] == nil, "Error: Function '"..tostring(funcName).."' already registered as event in type '"..tostring(objectType.name).."'!")
47 assert(func ~= nil, "Error: Given reference for Function '"..tostring(funcName).."' is 'nil'!")
48
49 objectType.functions[funcName] = func
50end

registerOverwrittenFunction

Description
Definition
registerOverwrittenFunction()
Code
54function SpecializationUtil.registerOverwrittenFunction(objectType, funcName, func)
55
56 assert(func ~= nil, "Error: Given reference for OverwrittenFunction '"..tostring(funcName).."' is 'nil'!")
57
58 -- if function does not exist, we don't need to overwrite anything
59 if objectType.functions[funcName] ~= nil then
60 objectType.functions[funcName] = Utils.overwrittenFunction(objectType.functions[funcName], func)
61 end
62end

removeEventListener

Description
Definition
removeEventListener()
Code
91function SpecializationUtil.removeEventListener(object, eventName, specClass)
92 local listeners = object.eventListeners[eventName]
93 if listeners ~= nil then
94 for i=#listeners, 1, -1 do
95 if ClassUtil.getClassName(listeners[i]) == ClassUtil.getClassName(specClass) then
96 table.remove(listeners, i)
97 end
98 end
99 end
100end