LUADOC - Farming Simulator 22

SpecializationManager

Description
This class handles all specializations
Parent
AbstractManager
Functions

addSpecialization

Description
Adds a new vehicleType
Definition
addSpecialization(string name, string className, string filename, string customEnvironment)
Arguments
stringnamespecialization name
stringclassNameclassname
stringfilenamefilename
stringcustomEnvironmenta custom environment
Return Values
booleansuccesstrue if added else false
Code
71function SpecializationManager:addSpecialization(name, className, filename, customEnvironment)
72
73 if self.specializations[name] ~= nil then
74 Logging.error("Specialization '%s' already exists. Ignoring it!", tostring(name))
75 return false
76 elseif className == nil then
77 Logging.error("No className specified for specialization '%s'", tostring(name))
78 return false
79 elseif filename == nil then
80 Logging.error("No filename specified for specialization '%s'", tostring(name))
81 return false
82 else
83
84 local specialization = {}
85 specialization.name = name
86 specialization.className = className
87 specialization.filename = filename
88
89 source(filename, customEnvironment)
90
91 local specializationObject = ClassUtil.getClassObject(className)
92 if specializationObject ~= nil then
93 specializationObject.className = className
94 end
95
96 self.specializations[name] = specialization
97 table.insert(self.sortedSpecializations, specialization)
98 end
99
100 return true
101end

getSpecializationByName

Description
Definition
getSpecializationByName()
Code
127function SpecializationManager:getSpecializationByName(name)
128 if name ~= nil then
129 return self.specializations[name]
130 end
131
132 return nil
133end

getSpecializationObjectByName

Description
Definition
getSpecializationObjectByName()
Code
137function SpecializationManager:getSpecializationObjectByName(name)
138 local entry = self.specializations[name]
139
140 if entry == nil then
141 return nil
142 end
143
144 return ClassUtil.getClassObject(entry.className)
145end

getSpecializations

Description
Definition
getSpecializations()
Code
149function SpecializationManager:getSpecializations()
150 return self.specializations
151end

initDataStructures

Description
Initialize data structures
Definition
initDataStructures()
Code
27function SpecializationManager:initDataStructures()
28 self.specializations = {}
29 self.sortedSpecializations = {}
30end

initSpecializations

Description
Definition
initSpecializations()
Code
105function SpecializationManager:initSpecializations()
106 for i=1, #self.sortedSpecializations do
107 local specialization = self:getSpecializationObjectByName(self.sortedSpecializations[i].name)
108 if specialization ~= nil and specialization.initSpecialization ~= nil then
109 specialization.initSpecialization()
110 end
111 end
112end

loadMapData

Description
Load data on map load
Definition
loadMapData()
Return Values
booleantrueif loading was successful else false
Code
35function SpecializationManager:loadMapData()
36 SpecializationManager:superClass().loadMapData(self)
37
38 local xmlFile = loadXMLFile("SpecializationsXML", self.xmlFilename)
39 local i=0
40 while true do
41 local baseName = string.format("specializations.specialization(%d)", i)
42
43 local typeName = getXMLString(xmlFile, baseName.. "#name")
44 if typeName == nil then
45 break
46 end
47 local className = getXMLString(xmlFile, baseName.. "#className")
48 local filename = getXMLString(xmlFile, baseName.. "#filename")
49
50 g_asyncTaskManager:addSubtask(function()
51 self:addSpecialization(typeName, className, filename, "")
52 end)
53 i = i+1
54 end
55 delete(xmlFile)
56
57 g_asyncTaskManager:addSubtask(function()
58 print(string.format(" Loaded '%s' specializations", self.typeName))
59 end)
60
61 return true
62end

new

Description
Creating manager
Definition
new()
Return Values
tableinstanceinstance of object
Code
16function SpecializationManager.new(typeName, xmlFilename, customMt)
17 local self = AbstractManager.new(customMt or SpecializationManager_mt)
18
19 self.typeName = typeName
20 self.xmlFilename = xmlFilename
21
22 return self
23end

postInitSpecializations

Description
Definition
postInitSpecializations()
Code
116function SpecializationManager:postInitSpecializations()
117 for i=1, #self.sortedSpecializations do
118 local specialization = self:getSpecializationObjectByName(self.sortedSpecializations[i].name)
119 if specialization ~= nil and specialization.postInitSpecialization ~= nil then
120 specialization.postInitSpecialization()
121 end
122 end
123end