LUADOC - Farming Simulator 22

Script v1_7_1_0

Engine v1_7_1_0

Foundation Reference

VehicleSettings

Description
Specialization to store local settings for the vehicle based on the settings of the client which has entered the vehicle
Functions

forceVehicleSettingsUpdate

Description
Force update of vehicle settings -> current settings will be send from client to server
Definition
forceVehicleSettingsUpdate()
Code
115function VehicleSettings:forceVehicleSettingsUpdate()
116 local spec = self.spec_vehicleSettings
117 for i=1, #spec.settings do
118 local setting = spec.settings[i]
119 self:setVehicleSettingState(setting.index, g_gameSettings:getValue(setting.gameSettingId), true)
120 end
121end

initSpecialization

Description
Definition
initSpecialization()
Code
25function VehicleSettings.initSpecialization()
26end

onPreLoad

Description
Called on loading
Definition
onPreLoad(table savegame)
Arguments
tablesavegamesavegame
Code
54function VehicleSettings:onPreLoad(savegame)
55 local spec = self.spec_vehicleSettings
56
57 spec.isDirty = false
58 spec.settings = {}
59
60 if self.isServer then
61 SpecializationUtil.removeEventListener(self, "onUpdateTick", VehicleSettings)
62 end
63end

onStateChange

Description
Called if vehicle state changes
Definition
onStateChange()
Code
148function VehicleSettings:onStateChange(state, vehicle, isControlling)
149 if isControlling then
150 if state == Vehicle.STATE_CHANGE_ENTER_VEHICLE then
151 self:forceVehicleSettingsUpdate()
152 end
153 end
154end

onUpdateTick

Description
Called on updateTick
Definition
onUpdateTick(float dt, boolean isActiveForInput, boolean isSelected)
Arguments
floatdttime since last call in ms
booleanisActiveForInputtrue if vehicle is active for input
booleanisSelectedtrue if vehicle is selected
Code
70function VehicleSettings:onUpdateTick(dt, isActiveForInput, isActiveForInputIgnoreSelection, isSelected)
71 local spec = self.spec_vehicleSettings
72 if spec.isDirty then
73 local hasDirtyValue = false
74 for i=1, #spec.settings do
75 if spec.settings[i].isDirty then
76 hasDirtyValue = true
77 break
78 end
79 end
80
81 if hasDirtyValue then
82 if g_server == nil and g_client ~= nil then
83 g_client:getServerConnection():sendEvent(VehicleSettingsChangeEvent.new(self, spec.settings))
84 end
85 end
86
87 spec.isDirty = false
88 end
89end

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
19function VehicleSettings.prerequisitesPresent(specializations)
20 return true
21end

registerEventListeners

Description
Definition
registerEventListeners()
Code
44function VehicleSettings.registerEventListeners(vehicleType)
45 SpecializationUtil.registerEventListener(vehicleType, "onPreLoad", VehicleSettings)
46 SpecializationUtil.registerEventListener(vehicleType, "onUpdateTick", VehicleSettings)
47 SpecializationUtil.registerEventListener(vehicleType, "onStateChange", VehicleSettings)
48 SpecializationUtil.registerEventListener(vehicleType, "onPreAttach", VehicleSettings)
49end

registerEvents

Description
Definition
registerEvents()
Code
38function VehicleSettings.registerEvents(vehicleType)
39 SpecializationUtil.registerEvent(vehicleType, "onVehicleSettingChanged")
40end

registerFunctions

Description
Definition
registerFunctions()
Code
30function VehicleSettings.registerFunctions(vehicleType)
31 SpecializationUtil.registerFunction(vehicleType, "registerVehicleSetting", VehicleSettings.registerVehicleSetting)
32 SpecializationUtil.registerFunction(vehicleType, "setVehicleSettingState", VehicleSettings.setVehicleSettingState)
33 SpecializationUtil.registerFunction(vehicleType, "forceVehicleSettingsUpdate", VehicleSettings.forceVehicleSettingsUpdate)
34end

registerVehicleSetting

Description
Registers a game settings for this vehicle
Definition
registerVehicleSetting(string gameSettingId, bool isBool)
Arguments
stringgameSettingIdid of game setting
boolisBoolsettings is only a boolean
Code
95function VehicleSettings:registerVehicleSetting(gameSettingId, isBool)
96 local spec = self.spec_vehicleSettings
97
98 local setting = {}
99 setting.index = #spec.settings + 1
100 setting.gameSettingId = gameSettingId
101 setting.isBool = isBool
102 setting.callback = function(_, state)
103 if self:getIsActiveForInput(true, true) then
104 self:setVehicleSettingState(setting.index, state)
105 end
106 end
107
108 g_messageCenter:subscribe(MessageType.SETTING_CHANGED[gameSettingId], setting.callback, self)
109
110 table.insert(spec.settings, setting)
111end

setVehicleSettingState

Description
Set state of vehicle setting by index
Definition
setVehicleSettingState(integer settingIndex, any_type state, bool noEventSend)
Arguments
integersettingIndexindex of setting
any_typestatestate
boolnoEventSendno event will be send if true
Code
128function VehicleSettings:setVehicleSettingState(settingIndex, state, noEventSend)
129 local spec = self.spec_vehicleSettings
130 local setting = spec.settings[settingIndex]
131 if setting ~= nil then
132 if noEventSend == nil or noEventSend == false then
133 if g_server == nil and g_client ~= nil then
134 g_client:getServerConnection():sendEvent(VehicleSettingsChangeEvent.new(self, spec.settings))
135 end
136 end
137
138 setting.state = state
139 setting.isDirty = true
140 spec.isDirty = true
141
142 SpecializationUtil.raiseEvent(self, "onVehicleSettingChanged", setting.gameSettingId, state)
143 end
144end