LUADOC - Farming Simulator 22

Script v1_7_1_0

Engine v1_7_1_0

Foundation Reference

SprayTypeManager

Description
This class handles all sprayTypes
Parent
AbstractManager
Functions

addSprayType

Description
Adds a new sprayType
Definition
addSprayType(string name, float litersPerSecond)
Arguments
stringnamesprayType index name
floatlitersPerSecondliter per second
Return Values
tablesprayTypesprayType object
Code
81function 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
130end

getFillTypeByName

Description
Gets a sprayType by index name
Definition
getFillTypeByName(string name)
Arguments
stringnamethe sprayType index name
Return Values
tablesprayTypethe sprayType object
Code
182function SprayTypeManager:getFillTypeByName(name)
183 if name ~= nil then
184 name = name:upper()
185 return self.nameToSprayType[name]
186 end
187 return nil
188end

getFillTypeIndexByName

Description
Gets a sprayType index by name
Definition
getFillTypeIndexByName(string name)
Arguments
stringnamethe sprayType index name
Return Values
integerfillTypeIndexthe sprayType index
Code
170function SprayTypeManager:getFillTypeIndexByName(name)
171 if name ~= nil then
172 name = name:upper()
173 return self.nameToIndex[name]
174 end
175 return nil
176end

getFillTypeNameByIndex

Description
Gets a fillTypeName by index
Definition
getFillTypeNameByIndex(integer index)
Arguments
integerindexthe sprayType index
Return Values
stringfillTypeNamethe sprayType name
Code
159function SprayTypeManager:getFillTypeNameByIndex(index)
160 if index ~= nil then
161 return self.indexToName[index]
162 end
163 return nil
164end

getSprayTypeByFillTypeIndex

Description
Definition
getSprayTypeByFillTypeIndex()
Code
192function SprayTypeManager:getSprayTypeByFillTypeIndex(index)
193 if index ~= nil then
194 return self.fillTypeIndexToSprayType[index]
195 end
196 return nil
197end

getSprayTypeByIndex

Description
Gets a sprayType by index
Definition
getSprayTypeByIndex(integer index)
Arguments
integerindexthe sprayType index
Return Values
tablesprayTypethe sprayType object
Code
136function SprayTypeManager:getSprayTypeByIndex(index)
137 if index ~= nil then
138 return self.sprayTypes[index]
139 end
140 return nil
141end

getSprayTypeByName

Description
Gets a sprayType by name
Definition
getSprayTypeByName(string name)
Arguments
stringnamethe sprayType name
Return Values
tablesprayTypethe sprayType object
Code
147function SprayTypeManager:getSprayTypeByName(name)
148 if name ~= nil then
149 name = name:upper()
150 return self.nameToSprayType[name]
151 end
152 return nil
153end

getSprayTypeIndexByFillTypeIndex

Description
Gets a sprayTypeIndex by fillType index
Definition
getSprayTypeIndexByFillTypeIndex(integer index)
Arguments
integerindexthe fillType index
Return Values
integersprayTypeIndexthe sprayType index
Code
203function 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
211end

getSprayTypes

Description
Gets a list of sprayTypes
Definition
getSprayTypes()
Return Values
tablesprayTypeslist of sprayTypes
Code
216function SprayTypeManager:getSprayTypes()
217 return self.sprayTypes
218end

initDataStructures

Description
Initialize data structures
Definition
initDataStructures()
Code
25function 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
34end

loadDefaultTypes

Description
Definition
loadDefaultTypes()
Code
38function SprayTypeManager:loadDefaultTypes()
39 local xmlFile = loadXMLFile("sprayTypes", "data/maps/maps_sprayTypes.xml")
40 self:loadSprayTypes(xmlFile, nil, true)
41 delete(xmlFile)
42end

loadMapData

Description
Load data on map load
Definition
loadMapData()
Return Values
booleantrueif loading was successful else false
Code
47function SprayTypeManager:loadMapData(xmlFile, missionInfo, baseDirectory)
48 SprayTypeManager:superClass().loadMapData(self)
49 self:loadDefaultTypes()
50 return XMLUtil.loadDataFromMapXML(xmlFile, "sprayTypes", baseDirectory, self, self.loadSprayTypes, missionInfo)
51end

loadSprayTypes

Description
Load data on map load
Definition
loadSprayTypes()
Return Values
booleantrueif loading was successful else false
Code
56function 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
74end

new

Description
Creating manager
Definition
new()
Return Values
tableinstanceinstance of object
Code
18function SprayTypeManager.new(customMt)
19 local self = AbstractManager.new(customMt or SprayTypeManager_mt)
20 return self
21end