LUADOC - Farming Simulator 22

EnvironmentalScorePH

Parent
EnvironmentalScoreValue
Functions

addWorkedArea

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

getScore

Description
Definition
getScore()
Code
66function EnvironmentalScorePH: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.phOffsetSum / farmlandData.harvestedArea * EnvironmentalScorePH.COMPRESSION
75 return self.scoreCurve:get(averageOffset)
76 end
77
78 return 0.5
79end

initFarmlandData

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

loadFarmlandData

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

loadFromXML

Description
Definition
loadFromXML()
Code
29function EnvironmentalScorePH: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 phOffset = getXMLFloat(xmlFile, baseKey .. "#phOffset") or 0
44 local score = getXMLFloat(xmlFile, baseKey .. "#score") or 0
45
46 local pHMap = g_precisionFarming.pHMap
47 if pHMap ~= nil then
48 phOffset = phOffset / pHMap:getPhValueFromChangedStates(1)
49 end
50
51 self.scoreCurve:addKeyframe({score, time=phOffset})
52
53 i = i + 1
54 end
55
56 return true
57end

new

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

onHarvestScoreReset

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

overwriteGameFunctions

Description
Definition
overwriteGameFunctions()
Code
148function EnvironmentalScorePH: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 pHActual ~= nil and pHTarget ~= nil and area > 0 and farmlandId ~= nil then
154 self:addWorkedArea(farmlandId, area, pHActual-pHTarget)
155 end
156 end)
157 end
158end

readFarmlandDataFromStream

Description
Definition
readFarmlandDataFromStream()
Code
109function EnvironmentalScorePH: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 EnvironmentalScorePH:saveFarmlandData(data, xmlFile, key)
102 xmlFile:setFloat(key .. "#harvestedArea", data.harvestedArea)
103 xmlFile:setFloat(key .. "#phOffsetSum", data.phOffsetSum)
104 xmlFile:setBool(key .. "#pendingReset", data.pendingReset)
105end

update

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

writeFarmlandDataToStream

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