LUADOC - Farming Simulator 22

Script v1_7_1_0

Engine v1_7_1_0

Foundation Reference

EnvironmentalScoreNitrogen

Parent
EnvironmentalScoreValue
Functions

addWorkedArea

Description
Definition
addWorkedArea()
Code
130function EnvironmentalScoreNitrogen:addWorkedArea(farmlandId, area, nOffset)
131 area = area / EnvironmentalScoreNitrogen.COMPRESSION
132 nOffset = nOffset / EnvironmentalScoreNitrogen.COMPRESSION
133
134 local farmlandData = self:getFarmlandData(farmlandId)
135
136 if farmlandData.pendingReset then
137 farmlandData.harvestedArea = 0
138 farmlandData.nOffsetSum = 0
139 farmlandData.pendingReset = false
140 end
141
142 farmlandData.harvestedArea = farmlandData.harvestedArea + area
143 farmlandData.nOffsetSum = farmlandData.nOffsetSum + area * nOffset
144end

getScore

Description
Definition
getScore()
Code
66function EnvironmentalScoreNitrogen:getScore(farmlandId)
67 local farmlandData = self:getFarmlandData(farmlandId)
68
69 if farmlandData.clientScore ~= nil then
70 return farmlandData.clientScore
71 end
72
73 if farmlandData.harvestedArea > 0 then
74 local averageOffset = farmlandData.nOffsetSum / farmlandData.harvestedArea * EnvironmentalScoreNitrogen.COMPRESSION
75 return self.scoreCurve:get(averageOffset)
76 else
77 return 0.5
78 end
79end

initFarmlandData

Description
Definition
initFarmlandData()
Code
83function EnvironmentalScoreNitrogen:initFarmlandData()
84 return {
85 harvestedArea = 0,
86 nOffsetSum = 0,
87 pendingReset = false,
88 }
89end

loadFarmlandData

Description
Definition
loadFarmlandData()
Code
93function EnvironmentalScoreNitrogen:loadFarmlandData(data, xmlFile, key)
94 data.harvestedArea = xmlFile:getFloat(key .. "#harvestedArea", data.harvestedArea)
95 data.nOffsetSum = xmlFile:getFloat(key .. "#nOffsetSum", data.nOffsetSum)
96 data.pendingReset = xmlFile:getBool(key .. "#pendingReset", data.pendingReset)
97end

loadFromXML

Description
Definition
loadFromXML()
Code
29function EnvironmentalScoreNitrogen:loadFromXML(xmlFile, key, baseDirectory, configFileName, mapFilename)
30 if not EnvironmentalScoreTillage:superClass().loadFromXML(self, xmlFile, key, baseDirectory, configFileName, mapFilename) then
31 return false
32 end
33
34 self.scoreCurve = AnimCurve.new(linearInterpolator1)
35
36 local i = 0
37 while true do
38 local baseKey = string.format("%s.scoreMapping.scoreValue(%d)", key, i)
39 if not hasXMLProperty(xmlFile, baseKey) then
40 break
41 end
42
43 local nOffset = getXMLFloat(xmlFile, baseKey .. "#nOffset") or 0
44 local score = getXMLFloat(xmlFile, baseKey .. "#score") or 0
45
46 local nitrogenMap = g_precisionFarming.nitrogenMap
47 if nitrogenMap ~= nil then
48 nOffset = nOffset / nitrogenMap:getNitrogenFromChangedStates(1)
49 end
50
51 self.scoreCurve:addKeyframe({score, time=nOffset})
52
53 i = i + 1
54 end
55
56 return true
57end

new

Description
Definition
new()
Code
19function EnvironmentalScoreNitrogen.new(pfModule, customMt)
20 local self = EnvironmentalScoreValue.new(pfModule, customMt or EnvironmentalScoreNitrogen_mt)
21
22 self.xmlKey = "nitrogen"
23
24 return self
25end

onHarvestScoreReset

Description
Definition
onHarvestScoreReset()
Code
123function EnvironmentalScoreNitrogen:onHarvestScoreReset(farmlandId)
124 local farmlandData = self:getFarmlandData(farmlandId)
125 farmlandData.pendingReset = true
126end

overwriteGameFunctions

Description
Definition
overwriteGameFunctions()
Code
148function EnvironmentalScoreNitrogen:overwriteGameFunctions(pfModule)
149 if g_server ~= nil then
150 pfModule:overwriteGameFunction(HarvestExtension, "setLastScoringValues", function(superFunc, harvestExtension, area, farmlandId, nActual, nTarget, pHActual, pHTarget, ignoreOverfertilization)
151 superFunc(harvestExtension, area, farmlandId, nActual, nTarget, pHActual, pHTarget, ignoreOverfertilization)
152
153 if nActual ~= nil and nTarget ~= nil and area > 0 and farmlandId ~= nil then
154 local difference = nActual-nTarget
155 if ignoreOverfertilization then
156 difference = math.min(difference, 0)
157 end
158
159 self:addWorkedArea(farmlandId, area, difference)
160 end
161 end)
162 end
163end

readFarmlandDataFromStream

Description
Definition
readFarmlandDataFromStream()
Code
109function EnvironmentalScoreNitrogen:readFarmlandDataFromStream(data, streamId, connection)
110 local score = MathUtil.round(streamReadUIntN(streamId, 8) / 255, 2)
111 data.clientScore = score
112end

saveFarmlandData

Description
Definition
saveFarmlandData()
Code
101function EnvironmentalScoreNitrogen:saveFarmlandData(data, xmlFile, key)
102 xmlFile:setFloat(key .. "#harvestedArea", data.harvestedArea)
103 xmlFile:setFloat(key .. "#nOffsetSum", data.nOffsetSum)
104 xmlFile:setBool(key .. "#pendingReset", data.pendingReset)
105end

update

Description
Definition
update()
Code
61function EnvironmentalScoreNitrogen:update(dt)
62end

writeFarmlandDataToStream

Description
Definition
writeFarmlandDataToStream()
Code
116function EnvironmentalScoreNitrogen:writeFarmlandDataToStream(data, streamId, connection)
117 local score = self:getScore(data.farmlandId)
118 streamWriteUIntN(streamId, score * 255, 8)
119end