LUADOC - Farming Simulator 22

AnimalLoadingTrigger

Description
class to handle the animal load triggers
Functions

delete

Description
Deletes instance
Definition
delete()
Code
93function AnimalLoadingTrigger:delete()
94 g_currentMission.activatableObjectsSystem:removeActivatable(self.activatable)
95
96 if self.triggerNode ~= nil then
97 removeTrigger(self.triggerNode)
98 self.triggerNode = nil
99 end
100
101 self.husbandry = nil
102end

getAnimals

Description
Definition
getAnimals()
Code
214function AnimalLoadingTrigger:getAnimals()
215 return self.animalTypes
216end

load

Description
Loads information from scenegraph node.
Definition
load(integer id)
Arguments
integeridnodeid that the trigger is created from
Code
59function AnimalLoadingTrigger:load(node, husbandry)
60 self.husbandry = husbandry
61 self.isDealer = Utils.getNoNil(getUserAttribute(node, "isDealer"), false)
62
63 if self.isDealer then
64 local animalTypesString = getUserAttribute(node, "animalTypes")
65 if animalTypesString ~= nil then
66 local animalTypes = animalTypesString:split(" ")
67 for _, animalTypeStr in pairs(animalTypes) do
68 local animalTypeIndex = g_currentMission.animalSystem:getTypeIndexByName(animalTypeStr)
69 if animalTypeIndex ~= nil then
70 if self.animalTypes == nil then
71 self.animalTypes = {}
72 end
73
74 table.insert(self.animalTypes, animalTypeIndex)
75 else
76 Logging.warning("Invalid animal type '%s' for animalLoadingTrigger '%s'!", animalTypeStr, getName(node))
77 end
78 end
79 end
80 end
81
82 self.triggerNode = node
83 addTrigger(self.triggerNode, "triggerCallback", self)
84
85 self.title = g_i18n:getText(Utils.getNoNil(getUserAttribute(node, "title"), "ui_farm"), self.customEnvironment)
86 self.isEnabled = true
87
88 return true
89end

new

Description
Creates an instance of the class
Definition
new(bool isServer, bool isClient)
Arguments
boolisServer
boolisClient
Return Values
tableselfinstance
Code
35function AnimalLoadingTrigger.new(isServer, isClient)
36 local self = Object.new(isServer, isClient, AnimalLoadingTrigger_mt)
37
38 self.customEnvironment = g_currentMission.loadingMapModName
39 self.isDealer = false
40 self.triggerNode = nil
41 self.title = g_i18n:getText("ui_farm")
42
43 self.animals = nil
44
45 self.activatable = AnimalLoadingTriggerActivatable.new(self)
46 self.isPlayerInRange = false
47
48 self.isEnabled = false
49
50 self.loadingVehicle = nil
51 self.activatedTarget = nil
52
53 return self
54end

onCreate

Description
Callback of scenegraph object
Definition
onCreate(integer id)
Arguments
integeridnodeid that the trigger is created from
Code
19function AnimalLoadingTrigger:onCreate(id)
20 local trigger = AnimalLoadingTrigger.new(g_server ~= nil, g_client ~= nil)
21 if trigger ~= nil then
22 if trigger:load(id) then
23 g_currentMission:addNonUpdateable(trigger)
24 else
25 trigger:delete()
26 end
27 end
28end

onSelectedHusbandry

Description
Definition
onSelectedHusbandry()
Code
204function AnimalLoadingTrigger:onSelectedHusbandry(husbandry)
205 if husbandry ~= nil then
206 self:showAnimalScreen(husbandry)
207 else
208 self:updateActivatableObject()
209 end
210end

openAnimalMenu

Description
Definition
openAnimalMenu()
Code
220function AnimalLoadingTrigger:openAnimalMenu()
221 local husbandry = self.husbandry
222 if self.isDealer and self.loadingVehicle == nil then
223 local husbandries = g_currentMission.husbandrySystem:getPlaceablesByFarm()
224 if #husbandries > 1 then
225 g_gui:showAnimalDialog({title=g_i18n:getText("category_animalpens"), husbandries=husbandries, callback=self.onSelectedHusbandry, target=self})
226 return
227 elseif #husbandries == 1 then
228 husbandry = husbandries[1]
229 end
230 end
231
232 self:showAnimalScreen(husbandry)
233 self.activatedTarget = self.loadingVehicle
234end

setLoadingTrailer

Description
Sets the loading trailer
Definition
setLoadingTrailer(table loadingVehicle)
Arguments
tableloadingVehicle
Code
164function AnimalLoadingTrigger:setLoadingTrailer(loadingVehicle)
165 if self.loadingVehicle ~= nil and self.loadingVehicle.setLoadingTrigger ~= nil then
166 self.loadingVehicle:setLoadingTrigger(nil)
167 end
168
169 self.loadingVehicle = loadingVehicle
170
171 if self.loadingVehicle ~= nil and self.loadingVehicle.setLoadingTrigger ~= nil then
172 self.loadingVehicle:setLoadingTrigger(self)
173 end
174
175 self:updateActivatableObject()
176end

showAnimalScreen

Description
Definition
showAnimalScreen()
Code
180function AnimalLoadingTrigger:showAnimalScreen(husbandry)
181 if husbandry == nil and self.loadingVehicle == nil then
182 g_gui:showInfoDialog({text=g_i18n:getText("shop_messageNoHusbandries")})
183 return
184 end
185
186 local controller
187 if husbandry ~= nil and self.loadingVehicle == nil then
188 controller = AnimalScreenDealerFarm.new(husbandry)
189 elseif husbandry == nil and self.loadingVehicle ~= nil then
190 controller = AnimalScreenDealerTrailer.new(self.loadingVehicle)
191 else
192 controller = AnimalScreenTrailerFarm.new(husbandry, self.loadingVehicle)
193 end
194
195 if controller ~= nil then
196 controller:init()
197 g_animalScreen:setController(controller)
198 g_gui:showGui("AnimalScreen")
199 end
200end

triggerCallback

Description
Callback when trigger changes state
Definition
triggerCallback(integer triggerId, integer otherId, bool onEnter, bool onLeave, bool onStay)
Arguments
integertriggerId
integerotherId
boolonEnter
boolonLeave
boolonStay
Code
111function AnimalLoadingTrigger:triggerCallback(triggerId, otherId, onEnter, onLeave, onStay)
112 if self.isEnabled and (onEnter or onLeave) then
113 local vehicle = g_currentMission.nodeToObject[otherId]
114 if vehicle ~= nil and vehicle.getSupportsAnimalType ~= nil then
115 if onEnter then
116 self:setLoadingTrailer(vehicle)
117 elseif onLeave then
118 if vehicle == self.loadingVehicle then
119 self:setLoadingTrailer(nil)
120 end
121 if vehicle == self.activatedTarget then
122 -- close dialog!
123 g_animalScreen:onVehicleLeftTrigger()
124 end
125 end
126
127 if GS_IS_MOBILE_VERSION then
128 if onEnter and self.activatable:getIsActivatable() then
129 self:openAnimalMenu()
130 local rootVehicle = vehicle.rootVehicle
131 if rootVehicle.brakeToStop ~= nil then
132 rootVehicle:brakeToStop()
133 end
134 end
135 end
136 elseif g_currentMission.player ~= nil and otherId == g_currentMission.player.rootNode then
137 if onEnter then
138 self.isPlayerInRange = true
139
140 if GS_IS_MOBILE_VERSION then
141 self:openAnimalMenu()
142 end
143 else
144 self.isPlayerInRange = false
145 end
146 self:updateActivatableObject()
147 end
148 end
149end

updateActivatableObject

Description
Adds or removes the trigger as an activable object to the mission
Definition
updateActivatableObject()
Code
153function AnimalLoadingTrigger:updateActivatableObject()
154 if self.loadingVehicle ~= nil or self.isPlayerInRange then
155 g_currentMission.activatableObjectsSystem:addActivatable(self.activatable)
156 elseif self.loadingVehicle == nil and not self.isPlayerInRange then
157 g_currentMission.activatableObjectsSystem:removeActivatable(self.activatable)
158 end
159end