LUADOC - Farming Simulator 22

Script v1_7_1_0

Engine v1_7_1_0

Foundation Reference

PlaceableAnimatedObjects

Description
Specialization for placeables
Functions

loadFromXMLFile

Description
Definition
loadFromXMLFile()
Code
165function PlaceableAnimatedObjects:loadFromXMLFile(xmlFile, key)
166 local spec = self.spec_animatedObjects
167 for i, animatedObject in ipairs(spec.animatedObjects) do
168 animatedObject:loadFromXMLFile(xmlFile, string.format("%s.animatedObject(%d)", key, i - 1))
169 end
170end

onDelete

Description
Definition
onDelete()
Code
113function PlaceableAnimatedObjects:onDelete()
114 local spec = self.spec_animatedObjects
115
116 if spec.animatedObjects ~= nil then
117 for _, animatedObject in ipairs(spec.animatedObjects) do
118 animatedObject:delete()
119 animatedObject:setOwnerFarmId(self:getOwnerFarmId(), false)
120 end
121 spec.animatedObjects = nil
122 end
123end

onLoad

Description
Called on loading
Definition
onLoad(table savegame)
Arguments
tablesavegamesavegame
Code
58function PlaceableAnimatedObjects:onLoad(savegame)
59 local spec = self.spec_animatedObjects
60 local xmlFile = self.xmlFile
61
62 spec.animatedObjects = {}
63 xmlFile:iterate("placeable.animatedObjects.animatedObject", function(index, animationKey)
64 local animatedObject = AnimatedObject.new(self.isServer, self.isClient)
65 animatedObject.dependencies = {}
66
67 xmlFile:iterate(animationKey .. ".dependency", function(_, dependencyKey)
68 local dependendIndex = xmlFile:getInt(dependencyKey.."#animatedObjectIndex")
69 if dependendIndex ~= nil then
70 local minTime = xmlFile:getValue(dependencyKey.."#minTime", 0)
71 local maxTime = xmlFile:getValue(dependencyKey.."#maxTime", 0)
72 local dependency = {objectIndex=dependendIndex, minTime=minTime, maxTime=maxTime}
73 table.insert(animatedObject.dependencies, dependency)
74 else
75 Logging.xmlError(xmlFile, "Missing animatedObjectIndex for '%s'", dependencyKey)
76 end
77 end)
78
79 if animatedObject:load(self.components, xmlFile, animationKey, self.configFileName, self.i3dMappings) then
80 table.insert(spec.animatedObjects, animatedObject)
81 else
82 Logging.xmlError(xmlFile, "Failed to load animated object %i", index)
83 end
84 end)
85
86 for _, animatedObject in ipairs(spec.animatedObjects) do
87 if #animatedObject.dependencies > 0 then
88 animatedObject.getCanBeTriggered = Utils.overwrittenFunction(animatedObject.getCanBeTriggered, function(_, superFunc)
89 if not superFunc(animatedObject) then
90 return false
91 end
92
93 for _, dependency in ipairs(animatedObject.dependencies) do
94 local dependendObject = spec.animatedObjects[dependency.objectIndex]
95 if dependendObject ~= nil then
96 local t = dependendObject.animation.time
97 if t < dependency.minTime or t > dependency.maxTime then
98 return false
99 end
100 else
101 Logging.xmlWarning(xmlFile, "Invalid dependency animated object index '%d'", dependency.objectIndex)
102 end
103 end
104
105 return true
106 end)
107 end
108 end
109end

onPostFinalizePlacement

Description
Definition
onPostFinalizePlacement()
Code
127function PlaceableAnimatedObjects:onPostFinalizePlacement()
128 local spec = self.spec_animatedObjects
129
130 for _, animatedObject in ipairs(spec.animatedObjects) do
131 animatedObject:register(true)
132 end
133end

onReadStream

Description
Definition
onReadStream()
Code
137function PlaceableAnimatedObjects:onReadStream(streamId, connection)
138 if connection:getIsServer() then
139 local spec = self.spec_animatedObjects
140 for _, animatedObject in ipairs(spec.animatedObjects) do
141 local animatedObjectId = NetworkUtil.readNodeObjectId(streamId)
142 animatedObject:readStream(streamId, connection)
143 g_client:finishRegisterObject(animatedObject, animatedObjectId)
144 end
145 end
146end

onWriteStream

Description
Called on server side when placeable was fully loaded on client side
Definition
onWriteStream(integer streamId, table connection)
Arguments
integerstreamIdstream ID
tableconnectionconnection
Code
152function PlaceableAnimatedObjects:onWriteStream(streamId, connection)
153 if not connection:getIsServer() then
154 local spec = self.spec_animatedObjects
155 for _, animatedObject in ipairs(spec.animatedObjects) do
156 NetworkUtil.writeNodeObjectId(streamId, NetworkUtil.getObjectId(animatedObject))
157 animatedObject:writeStream(streamId, connection)
158 g_server:registerObjectInStream(connection, animatedObject)
159 end
160 end
161end

prerequisitesPresent

Description
Checks if all prerequisite specializations are loaded
Definition
prerequisitesPresent(table specializations)
Arguments
tablespecializationsspecializations
Return Values
booleanhasPrerequisitetrue if all prerequisite specializations are loaded
Code
18function PlaceableAnimatedObjects.prerequisitesPresent(specializations)
19 return true
20end

registerEventListeners

Description
Definition
registerEventListeners()
Code
30function PlaceableAnimatedObjects.registerEventListeners(placeableType)
31 SpecializationUtil.registerEventListener(placeableType, "onLoad", PlaceableAnimatedObjects)
32 SpecializationUtil.registerEventListener(placeableType, "onDelete", PlaceableAnimatedObjects)
33 SpecializationUtil.registerEventListener(placeableType, "onReadStream", PlaceableAnimatedObjects)
34 SpecializationUtil.registerEventListener(placeableType, "onWriteStream", PlaceableAnimatedObjects)
35 SpecializationUtil.registerEventListener(placeableType, "onPostFinalizePlacement", PlaceableAnimatedObjects)
36end

registerOverwrittenFunctions

Description
Definition
registerOverwrittenFunctions()
Code
24function PlaceableAnimatedObjects.registerOverwrittenFunctions(placeableType)
25 SpecializationUtil.registerOverwrittenFunction(placeableType, "setOwnerFarmId", PlaceableAnimatedObjects.setOwnerFarmId)
26end

registerSavegameXMLPaths

Description
Definition
registerSavegameXMLPaths()
Code
51function PlaceableAnimatedObjects.registerSavegameXMLPaths(schema, basePath)
52 AnimatedObject.registerSavegameXMLPaths(schema, basePath .. ".animatedObject(?)")
53end

registerXMLPaths

Description
Definition
registerXMLPaths()
Code
40function PlaceableAnimatedObjects.registerXMLPaths(schema, basePath)
41 schema:setXMLSpecializationType("AnimatedObjects")
42 AnimatedObject.registerXMLPaths(schema, basePath .. ".animatedObjects")
43 schema:register(XMLValueType.INT, basePath .. ".animatedObjects.animatedObject(?).dependency(?)#animatedObjectIndex", "Animated object index")
44 schema:register(XMLValueType.FLOAT, basePath .. ".animatedObjects.animatedObject(?).dependency(?)#minTime", "Min Time")
45 schema:register(XMLValueType.FLOAT, basePath .. ".animatedObjects.animatedObject(?).dependency(?)#maxTime", "Max Time")
46 schema:setXMLSpecializationType()
47end

saveToXMLFile

Description
Definition
saveToXMLFile()
Code
174function PlaceableAnimatedObjects:saveToXMLFile(xmlFile, key, usedModNames)
175 local spec = self.spec_animatedObjects
176
177 for i, animatedObject in ipairs(spec.animatedObjects) do
178 animatedObject:saveToXMLFile(xmlFile, string.format("%s.animatedObject(%d)", key, i - 1), usedModNames)
179 end
180end

setOwnerFarmId

Description
Definition
setOwnerFarmId()
Code
184function PlaceableAnimatedObjects:setOwnerFarmId(superFunc, ownerFarmId, noEventSend)
185 superFunc(self, ownerFarmId, noEventSend)
186
187 local spec = self.spec_animatedObjects
188
189 if spec.animatedObjects ~= nil then
190 for _, animatedObject in ipairs(spec.animatedObjects) do
191 animatedObject:setOwnerFarmId(ownerFarmId, true)
192 end
193 end
194end