Script v1_7_1_0
- AI
- Animals
- Collections
- Contracts
- Debug
- Economy
- Elements
- EnvironmentalScore
- Errors
- Events
- GUI
- Handtools
- Hud
- I3d
- Input
- Jobs
- Maps
- Materials
- Misc
- Objects
- Parameters
- Placeables
- Placement
- Player
- Shop
- Sounds
- Specialization
- Specializations
- StateMachine
- Statistics
- Tasks
- Triggers
- Utils
- Vehicles
Engine v1_7_1_0
- AI
- Animation
- Camera
- Entity
- Fillplanes
- general
- General
- I3D
- Input
- Lighting
- Math
- Network
- Node
- NoteNode
- Overlays
- Particle System
- Physics
- Rendering
- Scenegraph
- Shape
- Sound
- Spline
- String
- Terrain Detail
- Text Rendering
- Tire Track
- VoiceChat
- XML
Foundation Reference
SpecializationManager
DescriptionThis class handles all specializationsParent
AbstractManagerFunctions
- addSpecialization
- getSpecializationByName
- getSpecializationObjectByName
- getSpecializations
- initDataStructures
- initSpecializations
- loadMapData
- new
- postInitSpecializations
addSpecialization
DescriptionAdds a new vehicleTypeDefinition
addSpecialization(string name, string className, string filename, string customEnvironment)Arguments
string | name | specialization name |
string | className | classname |
string | filename | filename |
string | customEnvironment | a custom environment |
boolean | success | true if added else false |
71 | function 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 |
101 | end |
getSpecializationByName
DescriptionDefinitiongetSpecializationByName()Code
127 | function SpecializationManager:getSpecializationByName(name) |
128 | if name ~= nil then |
129 | return self.specializations[name] |
130 | end |
131 | |
132 | return nil |
133 | end |
getSpecializationObjectByName
DescriptionDefinitiongetSpecializationObjectByName()Code
137 | function 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) |
145 | end |
getSpecializations
DescriptionDefinitiongetSpecializations()Code
149 | function SpecializationManager:getSpecializations() |
150 | return self.specializations |
151 | end |
initDataStructures
DescriptionInitialize data structuresDefinition
initDataStructures()Code
27 | function SpecializationManager:initDataStructures() |
28 | self.specializations = {} |
29 | self.sortedSpecializations = {} |
30 | end |
initSpecializations
DescriptionDefinitioninitSpecializations()Code
105 | function 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 |
112 | end |
loadMapData
DescriptionLoad data on map loadDefinition
loadMapData()Return Values
boolean | true | if loading was successful else false |
35 | function 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 |
62 | end |
new
DescriptionCreating managerDefinition
new()Return Values
table | instance | instance of object |
16 | function 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 |
23 | end |
postInitSpecializations
DescriptionDefinitionpostInitSpecializations()Code
116 | function 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 |
123 | end |