LUADOC - Farming Simulator 19

Horse

Description
Animal
Parent
RideableAnimal
Functions

deactivateRiding

Description
Definition
deactivateRiding()
Code
195function Horse:deactivateRiding(noEventSend)
196 if self.rideableVehicle ~= nil then
197 self.rideableVehicle:setFitnessChangedCallback(nil, nil)
198 end
199
200 Horse:superClass().deactivateRiding(self, noEventSend)
201end

getFitnessScale

Description
Definition
getFitnessScale()
Code
160function Horse:getFitnessScale()
161 return self.fitnessScale
162end

getHealthScale

Description
Definition
getHealthScale()
Code
180function Horse:getHealthScale()
181 return self.healthScale
182end

getName

Description
Definition
getName()
Code
133function Horse:getName()
134 return self.name
135end

getValueScale

Description
Definition
getValueScale()
Code
139function Horse:getValueScale()
140 -- dirt scale should only count 1%
141 return 0.99 * (self.fitnessScale * self.healthScale) + 0.01 * (1-self.dirtScale)
142end

loadFromXMLFile

Description
Definition
loadFromXMLFile()
Code
101function Horse:loadFromXMLFile(xmlFile, key)
102 Horse:superClass().loadFromXMLFile(self, xmlFile, key)
103
104 self.name = getXMLString(xmlFile, key.."#name") or self.name
105 self.fitnessScale = getXMLFloat(xmlFile, key.."#fitnessScale") or self.fitnessScale
106 self.healthScale = getXMLFloat(xmlFile, key.."#healthScale") or self.healthScale
107 self.ridingTimer = getXMLFloat(xmlFile, key.."#ridingTimer") or self.ridingTimer
108 self.ridingScale = self.ridingTimer / Horse.DAILY_TARGET_RIDING_TIME
109end

new

Description
Definition
new()
Code
21function Horse:new(isServer, isClient, owner, fillTypeIndex, customMt)
22 local self = RideableAnimal:new(isServer, isClient, owner, fillTypeIndex, customMt or Horse_mt)
23
24 self.name = g_animalNameManager:getRandomName()
25
26 self.fitnessScale = 0.05
27 self.fitnessScaleSent = 0.0
28
29 self.healthScale = 1.0
30 self.healthScaleSent = 1.0
31
32 self.ridingTimer = 0.0
33 self.ridingTimerSent = 0.0
34 self.ridingScale = 0.0
35 self.ridingScaleSent = 0.0
36
37 self.horseDirtyFlag = self:getNextDirtyFlag()
38
39 return self
40end

onFitnessChangedCallback

Description
Definition
onFitnessChangedCallback()
Code
215function Horse:onFitnessChangedCallback(deltaTime)
216 self.ridingTimer = self.ridingTimer + deltaTime
217 self.ridingScale = self.ridingTimer / Horse.DAILY_TARGET_RIDING_TIME
218
219 if math.abs(self.ridingScaleSent - self.ridingScale) > 0.01 then
220 self.ridingScaleSent = self.ridingScale
221 self:raiseDirtyFlags(self.horseDirtyFlag)
222 end
223end

onLoadedRideable

Description
Definition
onLoadedRideable()
Code
205function Horse:onLoadedRideable(rideableVehicle, vehicleLoadState, arguments)
206 Horse:superClass().onLoadedRideable(self, rideableVehicle, vehicleLoadState, arguments)
207
208 if self.rideableVehicle ~= nil then
209 self.rideableVehicle:setFitnessChangedCallback(self.onFitnessChangedCallback, self)
210 end
211end

readStream

Description
Definition
readStream()
Code
44function Horse:readStream(streamId)
45 Horse:superClass().readStream(self, streamId)
46
47 self.name = streamReadString(streamId)
48 self.fitnessScale = streamReadFloat32(streamId)
49 self.healthScale = streamReadFloat32(streamId)
50 self.ridingScale = streamReadFloat32(streamId)
51end

readUpdateStream

Description
Definition
readUpdateStream()
Code
71function Horse:readUpdateStream(streamId, timestamp, connection)
72 Horse:superClass().readUpdateStream(self, streamId, timestamp, connection)
73
74 -- server to client only
75 if connection:getIsServer() then
76 if streamReadBool(streamId) then
77 self.fitnessScale = NetworkUtil.readCompressedPercentages(streamId, 7)
78 self.healthScale = NetworkUtil.readCompressedPercentages(streamId, 7)
79 self.ridingScale = NetworkUtil.readCompressedPercentages(streamId, 7)
80 end
81 end
82end

saveToXMLFile

Description
Definition
saveToXMLFile()
Code
113function Horse:saveToXMLFile(xmlFile, key, usedModNames)
114 Horse:superClass().saveToXMLFile(self, xmlFile, key, usedModNames)
115
116 setXMLString(xmlFile, key.."#name", self.name)
117 setXMLFloat(xmlFile, key.."#fitnessScale", self.fitnessScale)
118 setXMLFloat(xmlFile, key.."#healthScale", self.healthScale)
119 setXMLFloat(xmlFile, key.."#ridingTimer", self.ridingTimer)
120end

setFitnessScale

Description
Definition
setFitnessScale()
Code
146function Horse:setFitnessScale(scale, noEventSend)
147 self.fitnessScale = scale
148 if math.abs(self.fitnessScaleSent - self.fitnessScale) > 0.01 then
149 self.fitnessScaleSent = self.fitnessScale
150 g_messageCenter:publish(MessageType.HUSBANDRY_ANIMALS_CHANGED, self.owner)
151
152 if noEventSend == nil or not noEventSend then
153 self:raiseDirtyFlags(self.horseDirtyFlag)
154 end
155 end
156end

setHealthScale

Description
Definition
setHealthScale()
Code
166function Horse:setHealthScale(scale, noEventSend)
167 self.healthScale = scale
168 if math.abs(self.healthScaleSent - self.healthScale) > 0.01 then
169 self.healthScaleSent = self.healthScale
170 g_messageCenter:publish(MessageType.HUSBANDRY_ANIMALS_CHANGED, self.owner)
171
172 if noEventSend == nil or not noEventSend then
173 self:raiseDirtyFlags(self.horseDirtyFlag)
174 end
175 end
176end

setName

Description
Definition
setName()
Code
124function Horse:setName(name)
125 if self.name ~= nil and self.name ~= name then
126 self.name = name
127 g_messageCenter:publish(MessageType.HUSBANDRY_ANIMALS_CHANGED, self.owner)
128 end
129end

updateFitness

Description
Definition
updateFitness()
Code
227function Horse:updateFitness(productionFactor)
228 if self.isServer then
229 local fitness = self:getFitnessScale()
230
231 if self.ridingTimer < Horse.DAILY_MINIMUM_RIDING_TIME then
232 fitness = fitness - 0.02
233 else -- add capped gain
234 local fitnessGain = math.min(0.1, 0.1 * self.ridingTimer / Horse.DAILY_TARGET_RIDING_TIME)
235 fitnessGain = fitnessGain * productionFactor
236 fitness = fitness + fitnessGain
237 end
238
239 fitness = MathUtil.clamp(fitness, 0.0, 1.0)
240 self:setFitnessScale(fitness)
241
242 self.ridingTimer = 0.0
243
244 if self.ridingScale ~= 0.0 then
245 self.ridingScale = 0.0
246 self.ridingScaleSent = 0.0
247 self:raiseDirtyFlags(self.horseDirtyFlag)
248 end
249 end
250end

writeStream

Description
Definition
writeStream()
Code
55function Horse:writeStream(streamId)
56 Horse:superClass().writeStream(self, streamId)
57
58 streamWriteString(streamId, self.name)
59 streamWriteFloat32(streamId, self.fitnessScale)
60 streamWriteFloat32(streamId, self.healthScale)
61 streamWriteFloat32(streamId, self.ridingScale)
62
63 -- Set, so when running updateStream the data is not overwritten on the client
64 self.fitnessScaleSent = self.fitnessScale
65 self.healthScaleSent = self.healthScale
66 self.ridingScaleSent = self.ridingScale
67end

writeUpdateStream

Description
Definition
writeUpdateStream()
Code
86function Horse:writeUpdateStream(streamId, connection, dirtyMask)
87 Horse:superClass().writeUpdateStream(self, streamId, connection, dirtyMask)
88
89 -- server to client only
90 if not connection:getIsServer() then
91 if streamWriteBool(streamId, bitAND(dirtyMask, self.horseDirtyFlag) ~= 0) then
92 NetworkUtil.writeCompressedPercentages(streamId, self.fitnessScaleSent, 7)
93 NetworkUtil.writeCompressedPercentages(streamId, self.healthScaleSent, 7)
94 NetworkUtil.writeCompressedPercentages(streamId, self.ridingScaleSent, 7)
95 end
96 end
97end