LUADOC - Farming Simulator 22

Script v1_7_1_0

Engine v1_7_1_0

Foundation Reference

PackedBale

Description
Class for packed bales
Parent
Bale
Functions

delete

Description
Deleting bale object
Definition
delete()
Code
40function PackedBale:delete()
41 g_currentMission.activatableObjectsSystem:removeActivatable(self.packedBaleActivatable)
42
43 PackedBale:superClass().delete(self)
44end

getCanInteract

Description
Definition
getCanInteract()
Code
107function PackedBale:getCanInteract()
108 local x1, y1, z1 = self:getInteractionPosition()
109 if x1 ~= nil then
110 local x2, y2, z2 = getWorldTranslation(self.nodeId)
111 local distance = MathUtil.vector3Length(x1-x2, y1-y2, z1-z2)
112 if distance < self.maxUnpackDistance then
113 return true
114 end
115 end
116
117 return false
118end

getInteractionPosition

Description
Definition
getInteractionPosition()
Code
122function PackedBale:getInteractionPosition()
123 if not g_currentMission.controlPlayer then
124 return
125 end
126
127 if not g_currentMission.accessHandler:canPlayerAccess(self) then
128 return
129 end
130
131 return getWorldTranslation(g_currentMission.player.rootNode)
132end

loadBaleAttributesFromXML

Description
Loads bale attributes from xml file
Definition
loadBaleAttributesFromXML(table xmlFile)
Arguments
tablexmlFilexml file object
Code
49function PackedBale:loadBaleAttributesFromXML(xmlFile)
50 if not PackedBale:superClass().loadBaleAttributesFromXML(self, xmlFile) then
51 return false
52 end
53
54 self.singleBaleFilename = xmlFile:getValue("bale.packedBale#singleBale")
55 self.singleBaleFilename = Utils.getFilename(self.singleBaleFilename, self.baseDirectory)
56 if self.singleBaleFilename == nil or not fileExists(self.singleBaleFilename) then
57 Logging.xmlError(xmlFile, "Could not find single bale reference for bale (%s)", self.singleBaleFilename)
58 return false
59 end
60
61 xmlFile:iterate("bale.packedBale.singleBale", function(_, key)
62 local node = xmlFile:getValue(key .. "#node", nil, self.nodeId)
63 if node ~= nil then
64 table.insert(self.singleBaleNodes, node)
65 end
66 end)
67
68 g_currentMission.activatableObjectsSystem:addActivatable(self.packedBaleActivatable)
69
70 return true
71end

new

Description
Creating bale object
Definition
new(boolean isServer, boolean isClient, table customMt)
Arguments
booleanisServeris server
booleanisClientis client
tablecustomMtcustomMt
Return Values
tableinstanceInstance of object
Code
26function PackedBale.new(isServer, isClient, customMt)
27 local self = Bale.new(isServer, isClient, customMt or PackedBale_mt)
28 registerObjectClassName(self, "PackedBale")
29
30 self.singleBaleNodes = {}
31 self.packedBaleActivatable = PackedBaleActivatable.new(self)
32
33 self.maxUnpackDistance = PackedBale.MAX_UNPACK_DISTANCE
34
35 return self
36end

unpack

Description
Set wrapping state of bale
Definition
unpack(boolean wrappingState)
Arguments
booleanwrappingStatenew wrapping state
Code
77function PackedBale:unpack(noEventSend)
78 g_currentMission.activatableObjectsSystem:removeActivatable(self.packedBaleActivatable)
79
80 if self.isServer then
81 for i=1, #self.singleBaleNodes do
82 local singleBaleNode = self.singleBaleNodes[i]
83
84 if self.fillLevel > 1 then
85 local baleObject = Bale.new(self.isServer, self.isClient)
86 local x, y, z = getWorldTranslation(singleBaleNode)
87 local rx, ry, rz = getWorldRotation(singleBaleNode)
88 if baleObject:loadFromConfigXML(self.singleBaleFilename, x, y, z, rx, ry, rz) then
89 baleObject:setFillType(self.fillType)
90 baleObject:setFillLevel(math.min(self.fillLevel, baleObject:getCapacity()))
91 baleObject:setOwnerFarmId(self.ownerFarmId, true)
92 baleObject:register()
93
94 self.fillLevel = self.fillLevel - baleObject:getFillLevel()
95 end
96 end
97 end
98
99 self:delete()
100 else
101 g_client:getServerConnection():sendEvent(BaleUnpackEvent.new(self))
102 end
103end