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
SprayTypeManager
DescriptionThis class handles all sprayTypesParent
AbstractManagerFunctions
- addSprayType
- getFillTypeByName
- getFillTypeIndexByName
- getFillTypeNameByIndex
- getSprayTypeByFillTypeIndex
- getSprayTypeByIndex
- getSprayTypeByName
- getSprayTypeIndexByFillTypeIndex
- getSprayTypes
- initDataStructures
- loadDefaultTypes
- loadMapData
- loadSprayTypes
- new
addSprayType
DescriptionAdds a new sprayTypeDefinition
addSprayType(string name, float litersPerSecond)Arguments
string | name | sprayType index name |
float | litersPerSecond | liter per second |
table | sprayType | sprayType object |
81 | function SprayTypeManager:addSprayType(name, litersPerSecond, typeName, sprayGroundType, isBaseType) |
82 | if not ClassUtil.getIsValidIndexName(name) then |
83 | print("Warning: '"..tostring(name).."' is not a valid name for a sprayType. Ignoring sprayType!") |
84 | return nil |
85 | end |
86 | |
87 | name = name:upper() |
88 | |
89 | local fillType = g_fillTypeManager:getFillTypeByName(name) |
90 | if fillType == nil then |
91 | print("Warning: Missing fillType '"..tostring(name).."' for sprayType definition. Ignoring sprayType!") |
92 | return |
93 | end |
94 | |
95 | if isBaseType and self.nameToSprayType[name] ~= nil then |
96 | print("Warning: SprayType '"..tostring(name).."' already exists. Ignoring sprayType!") |
97 | return nil |
98 | end |
99 | |
100 | local sprayType = self.nameToSprayType[name] |
101 | if sprayType == nil then |
102 | self.numSprayTypes = self.numSprayTypes + 1 |
103 | |
104 | sprayType = {} |
105 | sprayType.name = name |
106 | sprayType.index = self.numSprayTypes |
107 | sprayType.fillType = fillType |
108 | sprayType.litersPerSecond = Utils.getNoNil(litersPerSecond, 0) |
109 | typeName = typeName:upper() |
110 | sprayType.isFertilizer = typeName == "FERTILIZER" |
111 | sprayType.isLime = typeName == "LIME" |
112 | sprayType.isHerbicide = typeName == "HERBICIDE" |
113 | |
114 | if not sprayType.isFertilizer and not sprayType.isLime and not sprayType.isHerbicide then |
115 | print("Warning: SprayType '"..tostring(name).."' type '"..tostring(typeName).."' is invalid. Possible values are 'FERTILIZER', 'HERBICIDE' or 'LIME'. Ignoring sprayType!") |
116 | return nil |
117 | end |
118 | |
119 | table.insert(self.sprayTypes, sprayType) |
120 | self.nameToSprayType[name] = sprayType |
121 | self.nameToIndex[name] = self.numSprayTypes |
122 | self.indexToName[self.numSprayTypes] = name |
123 | self.fillTypeIndexToSprayType[fillType.index] = sprayType |
124 | end |
125 | |
126 | sprayType.litersPerSecond = litersPerSecond or sprayType.litersPerSecond or 0 |
127 | sprayType.sprayGroundType = sprayGroundType or sprayType.sprayGroundType or 1 |
128 | |
129 | return sprayType |
130 | end |
getFillTypeByName
DescriptionGets a sprayType by index nameDefinition
getFillTypeByName(string name)Arguments
string | name | the sprayType index name |
table | sprayType | the sprayType object |
182 | function SprayTypeManager:getFillTypeByName(name) |
183 | if name ~= nil then |
184 | name = name:upper() |
185 | return self.nameToSprayType[name] |
186 | end |
187 | return nil |
188 | end |
getFillTypeIndexByName
DescriptionGets a sprayType index by nameDefinition
getFillTypeIndexByName(string name)Arguments
string | name | the sprayType index name |
integer | fillTypeIndex | the sprayType index |
170 | function SprayTypeManager:getFillTypeIndexByName(name) |
171 | if name ~= nil then |
172 | name = name:upper() |
173 | return self.nameToIndex[name] |
174 | end |
175 | return nil |
176 | end |
getFillTypeNameByIndex
DescriptionGets a fillTypeName by indexDefinition
getFillTypeNameByIndex(integer index)Arguments
integer | index | the sprayType index |
string | fillTypeName | the sprayType name |
159 | function SprayTypeManager:getFillTypeNameByIndex(index) |
160 | if index ~= nil then |
161 | return self.indexToName[index] |
162 | end |
163 | return nil |
164 | end |
getSprayTypeByFillTypeIndex
DescriptionDefinitiongetSprayTypeByFillTypeIndex()Code
192 | function SprayTypeManager:getSprayTypeByFillTypeIndex(index) |
193 | if index ~= nil then |
194 | return self.fillTypeIndexToSprayType[index] |
195 | end |
196 | return nil |
197 | end |
getSprayTypeByIndex
DescriptionGets a sprayType by indexDefinition
getSprayTypeByIndex(integer index)Arguments
integer | index | the sprayType index |
table | sprayType | the sprayType object |
136 | function SprayTypeManager:getSprayTypeByIndex(index) |
137 | if index ~= nil then |
138 | return self.sprayTypes[index] |
139 | end |
140 | return nil |
141 | end |
getSprayTypeByName
DescriptionGets a sprayType by nameDefinition
getSprayTypeByName(string name)Arguments
string | name | the sprayType name |
table | sprayType | the sprayType object |
147 | function SprayTypeManager:getSprayTypeByName(name) |
148 | if name ~= nil then |
149 | name = name:upper() |
150 | return self.nameToSprayType[name] |
151 | end |
152 | return nil |
153 | end |
getSprayTypeIndexByFillTypeIndex
DescriptionGets a sprayTypeIndex by fillType indexDefinition
getSprayTypeIndexByFillTypeIndex(integer index)Arguments
integer | index | the fillType index |
integer | sprayTypeIndex | the sprayType index |
203 | function SprayTypeManager:getSprayTypeIndexByFillTypeIndex(index) |
204 | if index ~= nil then |
205 | local sprayType = self.fillTypeIndexToSprayType[index] |
206 | if sprayType ~= nil then |
207 | return sprayType.index |
208 | end |
209 | end |
210 | return nil |
211 | end |
getSprayTypes
DescriptionGets a list of sprayTypesDefinition
getSprayTypes()Return Values
table | sprayTypes | list of sprayTypes |
216 | function SprayTypeManager:getSprayTypes() |
217 | return self.sprayTypes |
218 | end |
initDataStructures
DescriptionInitialize data structuresDefinition
initDataStructures()Code
25 | function SprayTypeManager:initDataStructures() |
26 | self.numSprayTypes = 0 |
27 | self.sprayTypes = {} |
28 | self.nameToSprayType = {} |
29 | self.nameToIndex = {} |
30 | self.indexToName = {} |
31 | self.fillTypeIndexToSprayType = {} |
32 | |
33 | SprayType = self.nameToIndex |
34 | end |
loadDefaultTypes
DescriptionDefinitionloadDefaultTypes()Code
38 | function SprayTypeManager:loadDefaultTypes() |
39 | local xmlFile = loadXMLFile("sprayTypes", "data/maps/maps_sprayTypes.xml") |
40 | self:loadSprayTypes(xmlFile, nil, true) |
41 | delete(xmlFile) |
42 | end |
loadMapData
DescriptionLoad data on map loadDefinition
loadMapData()Return Values
boolean | true | if loading was successful else false |
47 | function SprayTypeManager:loadMapData(xmlFile, missionInfo, baseDirectory) |
48 | SprayTypeManager:superClass().loadMapData(self) |
49 | self:loadDefaultTypes() |
50 | return XMLUtil.loadDataFromMapXML(xmlFile, "sprayTypes", baseDirectory, self, self.loadSprayTypes, missionInfo) |
51 | end |
loadSprayTypes
DescriptionLoad data on map loadDefinition
loadSprayTypes()Return Values
boolean | true | if loading was successful else false |
56 | function SprayTypeManager:loadSprayTypes(xmlFile, missionInfo, isBaseType) |
57 | local i = 0 |
58 | while true do |
59 | local key = string.format("map.sprayTypes.sprayType(%d)", i) |
60 | if not hasXMLProperty(xmlFile, key) then |
61 | break |
62 | end |
63 | |
64 | local name = getXMLString(xmlFile, key.."#name") |
65 | local litersPerSecond = getXMLFloat(xmlFile, key.."#litersPerSecond") |
66 | local typeName = getXMLString(xmlFile, key.."#type") |
67 | local sprayGroundType = g_currentMission.fieldGroundSystem:getFieldSprayValueByName(getXMLString(xmlFile, key.."#sprayGroundType")) |
68 | self:addSprayType(name, litersPerSecond, typeName, sprayGroundType, isBaseType) |
69 | |
70 | i = i + 1 |
71 | end |
72 | |
73 | return true |
74 | end |
new
DescriptionCreating managerDefinition
new()Return Values
table | instance | instance of object |
18 | function SprayTypeManager.new(customMt) |
19 | local self = AbstractManager.new(customMt or SprayTypeManager_mt) |
20 | return self |
21 | end |