LUADOC - Farming Simulator 17

Printable Version

VehicleSellingPoint

Description
Class for vehicle selling point
Functions

onCreate

Description
Creating vehicle selling point
Definition
onCreate(integer id)
Arguments
integeridnode id
Code
15function VehicleSellingPoint:onCreate(id)
16 local vehicleSellingPoint = VehicleSellingPoint:new(id)
17 g_currentMission:addUpdateable(vehicleSellingPoint)
18end

new

Description
Creating vehicle selling point
Definition
new(integer id)
Arguments
integeridnode id
Return Values
tableinstanceInstance of object
Code
24function VehicleSellingPoint:new(id)
25 local self = {}
26 setmetatable(self, VehicleSellingPoint_mt)
27
28 self.id = id
29
30 self.sellTriggerId = Utils.indexToObject(self.id, Utils.getNoNil(getUserAttribute(self.id, "triggerIndex"), "0"))
31 self.sellIconId = Utils.indexToObject(self.id, Utils.getNoNil(getUserAttribute(self.id, "sellIconIndex"), "0|0"))
32
33 addTrigger(self.sellTriggerId, "triggerCallback", self)
34
35 self.sellAreaTriggerId = Utils.indexToObject(self.id, Utils.getNoNil(getUserAttribute(self.id, "sellAreaTriggerId"), "1"))
36 addTrigger(self.sellAreaTriggerId, "sellAreaTriggerCallback", self)
37
38 self.ownWorkshop = Utils.getNoNil(getUserAttribute(self.id, "ownWorkshop"), false)
39
40 self.vehicleInRange = {}
41 self.currentVehicle = nil
42 self.currentVehicleId = 0
43
44 self.activateText = g_i18n:getText("action_configSellSpecificVehicle")
45
46 self.isEnabled = true
47 self.objectActivated = false
48
49 if self.sellIconId ~= nil and ((g_isPresentationVersion and not g_isPresentationVersionShopEnabled) or (not g_currentMission.missionInfo:isa(FSCareerMissionInfo))) then
50 setVisibility(self.sellIconId, false)
51 end
52
53 return self
54end

delete

Description
Deleting vehicle selling point
Definition
delete()
Code
58function VehicleSellingPoint:delete()
59 if g_currentMission:getIsClient() then
60 removeTrigger(self.sellTriggerId)
61 removeTrigger(self.sellAreaTriggerId)
62 end
63end

getIsActivatable

Description
Get is activateable
Definition
getIsActivatable()
Return Values
booleanisActivateableis activateable
Code
68function VehicleSellingPoint:getIsActivatable()
69 return self.isEnabled and g_currentMission.controlPlayer
70end

onActivateObject

Description
On activate object
Definition
onActivateObject()
Code
78function VehicleSellingPoint:onActivateObject()
79 self:determineCurrentVehicle()
80 g_gui:showDirectSellDialog({vehicle=self.currentVehicle, owner=self, ownWorkshop=self.ownWorkshop})
81end

update

Description
Update
Definition
update(float dt)
Arguments
floatdttime since last call in ms
Code
86function VehicleSellingPoint:update(dt)
87 if self.isEnabled and self.sellIconId ~= nil then
88 rotate(self.sellIconId, 0, 0.002 * dt, 0)
89 end
90end

triggerCallback

Description
Trigger callback
Definition
triggerCallback(integer triggerId, integer otherId, boolean onEnter, boolean onLeave, boolean onStay)
Arguments
integertriggerIdid of trigger
integerotherIdid of actor
booleanonEnteron enter
booleanonLeaveon leave
booleanonStayon stay
Code
99function VehicleSellingPoint:triggerCallback(triggerId, otherId, onEnter, onLeave, onStay)
100 if self.isEnabled and (not g_isPresentationVersion or g_isPresentationVersionShopEnabled) and g_currentMission.missionInfo:isa(FSCareerMissionInfo) then
101 if onEnter or onLeave then
102 if g_currentMission.player ~= nil and otherId == g_currentMission.player.rootNode then
103 if onEnter then
104 if not self.objectActivated then
105 g_currentMission:addActivatableObject(self)
106 self.objectActivated = true
107 end
108 else
109 if self.objectActivated then
110 g_currentMission:removeActivatableObject(self)
111 self.objectActivated = false
112 end
113 end
114 end
115 end
116 end
117end

sellAreaTriggerCallback

Description
Sell area trigger callback
Definition
sellAreaTriggerCallback(integer triggerId, integer otherId, boolean onEnter, boolean onLeave, boolean onStay)
Arguments
integertriggerIdid of trigger
integerotherIdid of actor
booleanonEnteron enter
booleanonLeaveon leave
booleanonStayon stay
Code
126function VehicleSellingPoint:sellAreaTriggerCallback(triggerId, otherId, onEnter, onLeave, onStay, otherShapeId)
127 if otherShapeId ~= nil and (onEnter or onLeave) then
128 if onEnter then
129 self.vehicleInRange[otherShapeId] = true
130 elseif onLeave then
131 self.vehicleInRange[otherShapeId] = nil
132 end
133
134 self:determineCurrentVehicle()
135 end
136end

determineCurrentVehicle

Description
Determine current vehicle
Definition
determineCurrentVehicle()
Code
140function VehicleSellingPoint:determineCurrentVehicle()
141 self.currentVehicle = nil
142 for vehicleId, inRange in pairs(self.vehicleInRange) do
143 if inRange ~= nil then
144 self.currentVehicle = g_currentMission.nodeToVehicle[vehicleId]
145 if self.currentVehicle ~= nil then
146 break
147 end
148 end
149 -- invalid vehicle (not existing or left), remove from list
150 self.vehicleInRange[vehicleId] = nil
151 end
152end