Script v1_7_1_0
- AI
- Animals
- Collections
- Contracts
- Debug
- Economy
- Elements
- EnvironmentalScore
- EnvironmentalScore
- EnvironmentalScoreHerbici...
- EnvironmentalScoreNitroge...
- EnvironmentalScorePH
- EnvironmentalScoreSoilSam...
- EnvironmentalScoreTillage
- EnvironmentalScoreValue
- 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
EnvironmentalScoreSoilSample
ParentEnvironmentalScoreValueFunctions
- getScore
- initFarmlandData
- loadFarmlandData
- loadFromXML
- new
- onHarvestScoreReset
- overwriteGameFunctions
- readFarmlandDataFromStream
- saveFarmlandData
- update
- updateFarmlandSampleState
- writeFarmlandDataToStream
getScore
DescriptionDefinitiongetScore()Code
50 | function EnvironmentalScoreSoilSample:getScore(farmlandId) |
51 | local farmlandData = self:getFarmlandData(farmlandId) |
52 | |
53 | if farmlandData.clientScore ~= nil then |
54 | return farmlandData.clientScore |
55 | end |
56 | |
57 | if farmlandData.samplePercentage < 0 then |
58 | return 0.5 |
59 | end |
60 | |
61 | return farmlandData.samplePercentage |
62 | end |
initFarmlandData
DescriptionDefinitioninitFarmlandData()Code
66 | function EnvironmentalScoreSoilSample:initFarmlandData() |
67 | return { |
68 | samplePercentage = -1 |
69 | } |
70 | end |
loadFarmlandData
DescriptionDefinitionloadFarmlandData()Code
74 | function EnvironmentalScoreSoilSample:loadFarmlandData(data, xmlFile, key) |
75 | data.samplePercentage = xmlFile:getFloat(key .. "#samplePercentage", data.samplePercentage) |
76 | end |
loadFromXML
DescriptionDefinitionloadFromXML()Code
35 | function EnvironmentalScoreSoilSample:loadFromXML(xmlFile, key, baseDirectory, configFileName, mapFilename) |
36 | if not EnvironmentalScoreTillage:superClass().loadFromXML(self, xmlFile, key, baseDirectory, configFileName, mapFilename) then |
37 | return false |
38 | end |
39 | |
40 | return true |
41 | end |
new
DescriptionDefinitionnew()Code
20 | function EnvironmentalScoreSoilSample.new(pfModule, customMt) |
21 | local self = EnvironmentalScoreValue.new(pfModule, customMt or EnvironmentalScoreSoilSample_mt) |
22 | |
23 | self.xmlKey = "soilSample" |
24 | |
25 | self.typeWeights = { |
26 | [EnvironmentalScoreSoilSample.TYPE_NONE] = 0, |
27 | [EnvironmentalScoreSoilSample.TYPE_SAMPLED] = 1, |
28 | } |
29 | |
30 | return self |
31 | end |
onHarvestScoreReset
DescriptionDefinitiononHarvestScoreReset()Code
100 | function EnvironmentalScoreSoilSample:onHarvestScoreReset(farmlandId) |
101 | self:updateFarmlandSampleState(farmlandId) |
102 | end |
overwriteGameFunctions
DescriptionDefinitionoverwriteGameFunctions()Code
115 | function EnvironmentalScoreSoilSample:overwriteGameFunctions(pfModule) |
116 | if g_server ~= nil then |
117 | -- soil sampling |
118 | pfModule:overwriteGameFunction(SoilSampler, "processSoilSampling", function(superFunc, vehicle, ...) |
119 | superFunc(vehicle, ...) |
120 | |
121 | local spec = vehicle.spec_soilSampler |
122 | if spec.coverMap ~= nil then |
123 | local x, _, z = getWorldTranslation(spec.samplingNode) |
124 | local farmlandId = g_farmlandManager:getFarmlandIdAtWorldPosition(x, z) |
125 | self:updateFarmlandSampleState(farmlandId) |
126 | end |
127 | end) |
128 | |
129 | -- soil map purchase |
130 | pfModule:overwriteGameFunction(CoverMap, "uncoverFarmlandArea", function(superFunc, coverMap, farmlandId) |
131 | superFunc(coverMap, farmlandId) |
132 | self:updateFarmlandSampleState(farmlandId) |
133 | end) |
134 | |
135 | -- only for cheat command |
136 | pfModule:overwriteGameFunction(CoverMap, "analyseArea", function(superFunc, coverMap, startWorldX, startWorldZ, widthWorldX, widthWorldZ, heightWorldX, heightWorldZ, state, farmId, farmlandId) |
137 | superFunc(coverMap, startWorldX, startWorldZ, widthWorldX, widthWorldZ, heightWorldX, heightWorldZ, state, farmId, farmlandId) |
138 | |
139 | if farmlandId ~= nil then |
140 | self:updateFarmlandSampleState(farmlandId) |
141 | end |
142 | end) |
143 | end |
144 | end |
readFarmlandDataFromStream
DescriptionDefinitionreadFarmlandDataFromStream()Code
86 | function EnvironmentalScoreSoilSample:readFarmlandDataFromStream(data, streamId, connection) |
87 | local score = MathUtil.round(streamReadUIntN(streamId, 8) / 255, 2) |
88 | data.clientScore = score |
89 | end |
saveFarmlandData
DescriptionDefinitionsaveFarmlandData()Code
80 | function EnvironmentalScoreSoilSample:saveFarmlandData(data, xmlFile, key) |
81 | xmlFile:setFloat(key .. "#samplePercentage", data.samplePercentage) |
82 | end |
update
DescriptionDefinitionupdate()Code
45 | function EnvironmentalScoreSoilSample:update(dt) |
46 | end |
updateFarmlandSampleState
DescriptionDefinitionupdateFarmlandSampleState()Code
106 | function EnvironmentalScoreSoilSample:updateFarmlandSampleState(farmlandId) |
107 | local farmlandData = self:getFarmlandData(farmlandId) |
108 | |
109 | local percentage = self.pfModule.coverMap:getFarmlandSampleState(farmlandId) |
110 | farmlandData.samplePercentage = MathUtil.clamp(percentage, 0, 1) |
111 | end |
writeFarmlandDataToStream
DescriptionDefinitionwriteFarmlandDataToStream()Code
93 | function EnvironmentalScoreSoilSample:writeFarmlandDataToStream(data, streamId, connection) |
94 | local score = self:getScore(data.farmlandId) |
95 | streamWriteUIntN(streamId, score * 255, 8) |
96 | end |