Script v1_7_1_0
- AI
- Animals
- Collections
- Contracts
- Debug
- Economy
- Elements
- EnvironmentalScore
- Errors
- Events
- GUI
- Handtools
- Hud
- I3d
- Input
- Jobs
- Maps
- Materials
- Misc
- Objects
- Parameters
- Placeables
- Placement
- Player
- Shop
- Sounds
- Specialization
- Specializations
- StateMachine
- Statistics
- Tasks
- Triggers
- Utils
- Vehicles
Engine v1_7_1_0
- AI
- Animation
- Camera
- Entity
- Fillplanes
- general
- General
- I3D
- Input
- Lighting
- Math
- Network
- Node
- NoteNode
- Overlays
- Particle System
- Physics
- Rendering
- Scenegraph
- Shape
- Sound
- Spline
- String
- Terrain Detail
- Text Rendering
- Tire Track
- VoiceChat
- XML
Foundation Reference
VehicleSettings
DescriptionSpecialization to store local settings for the vehicle based on the settings of the client which has entered the vehicleFunctions
- forceVehicleSettingsUpdate
- initSpecialization
- onPreLoad
- onStateChange
- onUpdateTick
- prerequisitesPresent
- registerEventListeners
- registerEvents
- registerFunctions
- registerVehicleSetting
- setVehicleSettingState
forceVehicleSettingsUpdate
DescriptionForce update of vehicle settings -> current settings will be send from client to serverDefinition
forceVehicleSettingsUpdate()Code
115 | function 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 |
121 | end |
initSpecialization
DescriptionDefinitioninitSpecialization()Code
25 | function VehicleSettings.initSpecialization() |
26 | end |
onPreLoad
DescriptionCalled on loadingDefinition
onPreLoad(table savegame)Arguments
table | savegame | savegame |
54 | function 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 |
63 | end |
onStateChange
DescriptionCalled if vehicle state changesDefinition
onStateChange()Code
148 | function 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 |
154 | end |
onUpdateTick
DescriptionCalled on updateTickDefinition
onUpdateTick(float dt, boolean isActiveForInput, boolean isSelected)Arguments
float | dt | time since last call in ms |
boolean | isActiveForInput | true if vehicle is active for input |
boolean | isSelected | true if vehicle is selected |
70 | function 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 |
89 | end |
prerequisitesPresent
DescriptionChecks if all prerequisite specializations are loadedDefinition
prerequisitesPresent(table specializations)Arguments
table | specializations | specializations |
boolean | hasPrerequisite | true if all prerequisite specializations are loaded |
19 | function VehicleSettings.prerequisitesPresent(specializations) |
20 | return true |
21 | end |
registerEventListeners
DescriptionDefinitionregisterEventListeners()Code
44 | function 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) |
49 | end |
registerEvents
DescriptionDefinitionregisterEvents()Code
38 | function VehicleSettings.registerEvents(vehicleType) |
39 | SpecializationUtil.registerEvent(vehicleType, "onVehicleSettingChanged") |
40 | end |
registerFunctions
DescriptionDefinitionregisterFunctions()Code
30 | function VehicleSettings.registerFunctions(vehicleType) |
31 | SpecializationUtil.registerFunction(vehicleType, "registerVehicleSetting", VehicleSettings.registerVehicleSetting) |
32 | SpecializationUtil.registerFunction(vehicleType, "setVehicleSettingState", VehicleSettings.setVehicleSettingState) |
33 | SpecializationUtil.registerFunction(vehicleType, "forceVehicleSettingsUpdate", VehicleSettings.forceVehicleSettingsUpdate) |
34 | end |
registerVehicleSetting
DescriptionRegisters a game settings for this vehicleDefinition
registerVehicleSetting(string gameSettingId, bool isBool)Arguments
string | gameSettingId | id of game setting |
bool | isBool | settings is only a boolean |
95 | function 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) |
111 | end |
setVehicleSettingState
DescriptionSet state of vehicle setting by indexDefinition
setVehicleSettingState(integer settingIndex, any_type state, bool noEventSend)Arguments
integer | settingIndex | index of setting |
any_type | state | state |
bool | noEventSend | no event will be send if true |
128 | function 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 |
144 | end |