Script v1.7.1.0
- AI
- Animals
- Contracts
- Debug
- Economy
- Effects
- Events
- Farms
- GUI
- Handtools
- I3d
- Materials
- Misc
- Objects
- Placeables
- Player
- Shop
- Sounds
- Specializations
- AIConveyorBelt
- AIImplement
- AIVehicle
- AnimatedVehicle
- ArticulatedAxis
- Attachable
- AttacherJointControl
- AttacherJoints
- BaleGrab
- BaleLoader
- Baler
- BaleWrapper
- BaseMaterial
- BunkerSiloCompacter
- BunkerSiloInteractor
- BuyableBale
- CCTDrivable
- Combine
- ConnectionHoses
- ConveyorBelt
- Cover
- CrabSteering
- Crawlers
- Cultivator
- Cutter
- Cylindered
- CylinderedFoldable
- Dashboard
- Dischargeable
- Drivable
- DynamicallyLoadedParts
- DynamicMountAttacher
- Enterable
- FertilizingCultivator
- FertilizingSowingMachine
- FillTriggerVehicle
- FillUnit
- FillVolume
- Foldable
- FoliageBending
- ForageWagon
- FrontloaderAttacher
- FruitPreparer
- GroundAdjustedNodes
- GroundReference
- Honk
- HookLiftContainer
- HookLiftTrailer
- IKChains
- JigglingParts
- Leveler
- Lights
- LivestockTrailer
- Locomotive
- LogGrab
- ManureBarrel
- MixerWagon
- Motorized
- Mountable
- Mower
- Pickup
- Pipe
- Plow
- PowerConsumer
- PowerTakeOffs
- RandomlyMovingParts
- ReceivingHopper
- ReverseDriving
- Rideable
- RidgeMarker
- Roller
- Ropes
- SemiTrailerFront
- Shovel
- SlopeCompensation
- SmartAttach
- SowingMachine
- SpeedRotatingParts
- SplineVehicle
- Sprayer
- StrawBlower
- StumpCutter
- Suspensions
- Tedder
- TensionBeltObject
- TensionBelts
- TipOccluder
- Trailer
- TreePlanter
- TreeSaw
- TurnOnVehicle
- Washable
- WaterTrailer
- Wearable
- Weeder
- Wheels
- Windrower
- Wipers
- WoodCrusher
- WoodHarvester
- WorkArea
- WorkMode
- WorkParticles
- Triggers
- Utils
- Vehicles
- Weather
Engine v1.7.1.0
- AI
- Animation
- Camera
- Entity
- Fillplanes
- General
- I3D
- Input
- Lighting
- Math
- Network
- Node
- Overlays
- Particle System
- Physics
- Rendering
- Scenegraph
- Shape
- Sound
- Spline
- String
- Terrain Detail
- Text Rendering
- Tire Track
- XML
- general
Foundation Reference
Roller
DescriptionSpecialization for roller used for removing fields/terrainDetailLayerFunctions
- doCheckSpeedLimit
- getDefaultSpeedLimit
- getDirtMultiplier
- getDoGroundManipulation
- getIsWorkAreaActive
- getWearMultiplier
- initSpecialization
- onDeactivate
- onDelete
- onEndWorkAreaProcessing
- onLoad
- onPostAttach
- onStartWorkAreaProcessing
- prerequisitesPresent
- processRollerArea
- registerEventListeners
- registerFunctions
- registerOverwrittenFunctions
doCheckSpeedLimit
DescriptionDefinitiondoCheckSpeedLimit()Code
100 | function Roller:doCheckSpeedLimit(superFunc) |
101 | local spec = self.spec_roller |
102 | |
103 | return superFunc(self) or spec.isWorking |
104 | end |
getDefaultSpeedLimit
DescriptionDefinitiongetDefaultSpeedLimit()Code
205 | function Roller.getDefaultSpeedLimit() |
206 | return 15 |
207 | end |
getDirtMultiplier
DescriptionDefinitiongetDirtMultiplier()Code
115 | function Roller:getDirtMultiplier(superFunc) |
116 | local spec = self.spec_roller |
117 | local multiplier = superFunc(self) |
118 | |
119 | if spec.isWorking then |
120 | multiplier = multiplier + self:getWorkDirtMultiplier() |
121 | end |
122 | |
123 | return multiplier |
124 | end |
getDoGroundManipulation
DescriptionDefinitiongetDoGroundManipulation()Code
108 | function Roller:getDoGroundManipulation(superFunc) |
109 | local spec = self.spec_roller |
110 | return superFunc(self) and spec.isWorking |
111 | end |
getIsWorkAreaActive
DescriptionDefinitiongetIsWorkAreaActive()Code
142 | function Roller:getIsWorkAreaActive(superFunc, workArea) |
143 | if workArea.type == WorkAreaType.ROLLER then |
144 | local spec = self.spec_roller |
145 | if spec.startActivationTime > g_currentMission.time then |
146 | return false |
147 | end |
148 | |
149 | if spec.onlyActiveWhenLowered and not self:getIsLowered() then |
150 | return false |
151 | end |
152 | end |
153 | |
154 | return superFunc(self, workArea) |
155 | end |
getWearMultiplier
DescriptionReturns current wear multiplierDefinition
getWearMultiplier()Return Values
float | dirtMultiplier | current wear multiplier |
129 | function Roller:getWearMultiplier(superFunc) |
130 | local spec = self.spec_roller |
131 | local multiplier = superFunc(self) |
132 | |
133 | if spec.isWorking then |
134 | multiplier = multiplier + self:getWorkWearMultiplier() |
135 | end |
136 | |
137 | return multiplier |
138 | end |
initSpecialization
DescriptionDefinitioninitSpecialization()Code
15 | function Roller.initSpecialization() |
16 | g_workAreaTypeManager:addWorkAreaType("roller", false) |
17 | end |
onDeactivate
DescriptionDefinitiononDeactivate()Code
197 | function Roller:onDeactivate() |
198 | local spec = self.spec_roller |
199 | g_soundManager:stopSample(spec.samples.work) |
200 | spec.isWorkSamplePlaying = false |
201 | end |
onDelete
DescriptionDefinitiononDelete()Code
74 | function Roller:onDelete() |
75 | if self.isClient then |
76 | local spec = self.spec_roller |
77 | g_soundManager:deleteSamples(spec.samples) |
78 | end |
79 | end |
onEndWorkAreaProcessing
DescriptionDefinitiononEndWorkAreaProcessing()Code
167 | function Roller:onEndWorkAreaProcessing(dt, hasProcessed) |
168 | local spec = self.spec_roller |
169 | |
170 | if self.isClient then |
171 | if spec.isWorking then |
172 | if not spec.isWorkSamplePlaying then |
173 | g_soundManager:playSample(spec.samples.work) |
174 | spec.isWorkSamplePlaying = true |
175 | end |
176 | else |
177 | if spec.isWorkSamplePlaying then |
178 | g_soundManager:stopSample(spec.samples.work) |
179 | spec.isWorkSamplePlaying = false |
180 | end |
181 | end |
182 | end |
183 | end |
onLoad
DescriptionDefinitiononLoad()Code
54 | function Roller:onLoad(savegame) |
55 | local spec = self.spec_roller |
56 | |
57 | XMLUtil.checkDeprecatedXMLElements(self.xmlFile, self.configFileName, "vehicle.rollerSound", "vehicle.roller.sounds.work") --FS17 to FS19 |
58 | XMLUtil.checkDeprecatedXMLElements(self.xmlFile, self.configFileName, "vehicle.onlyActiveWhenLowered#value", "vehicle.roller#onlyActiveWhenLowered") --FS17 to FS19 |
59 | |
60 | if self.isClient then |
61 | spec.samples = {} |
62 | spec.isWorkSamplePlaying = false |
63 | spec.samples.work = g_soundManager:loadSampleFromXML(self.xmlFile, "vehicle.roller.sounds", "work", self.baseDirectory, self.components, 0, AudioGroup.VEHICLE, self.i3dMappings, self) |
64 | end |
65 | |
66 | spec.onlyActiveWhenLowered = Utils.getNoNil(getXMLBool(self.xmlFile, "vehicle.roller#onlyActiveWhenLowered"), true) |
67 | spec.startActivationTimeout = 2000 |
68 | spec.startActivationTime = 0 |
69 | spec.isWorking = false |
70 | end |
onPostAttach
DescriptionCalled after vehicle gets attachedDefinition
onPostAttach(table attacherVehicle, integer inputJointDescIndex, integer jointDescIndex)Arguments
table | attacherVehicle | attacher vehicle |
integer | inputJointDescIndex | index of input attacher joint |
integer | jointDescIndex | index of attacher joint it gets attached to |
190 | function Roller:onPostAttach(attacherVehicle, inputJointDescIndex, jointDescIndex) |
191 | local spec = self.spec_roller |
192 | spec.startActivationTime = g_currentMission.time + spec.startActivationTimeout |
193 | end |
onStartWorkAreaProcessing
DescriptionDefinitiononStartWorkAreaProcessing()Code
159 | function Roller:onStartWorkAreaProcessing(dt) |
160 | local spec = self.spec_roller |
161 | |
162 | spec.isWorking = false |
163 | end |
prerequisitesPresent
DescriptionDefinitionprerequisitesPresent()Code
21 | function Roller.prerequisitesPresent(specializations) |
22 | return SpecializationUtil.hasSpecialization(WorkArea, specializations) |
23 | end |
processRollerArea
DescriptionDefinitionprocessRollerArea()Code
83 | function Roller:processRollerArea(workArea, dt) |
84 | local spec = self.spec_roller |
85 | |
86 | local xs,_,zs = getWorldTranslation(workArea.start) |
87 | local xw,_,zw = getWorldTranslation(workArea.width) |
88 | local xh,_,zh = getWorldTranslation(workArea.height) |
89 | |
90 | local realArea = FSDensityMapUtil.updateRollerArea(xs, zs, xw, zw, xh, zh) |
91 | FSDensityMapUtil.eraseTireTrack(xs, zs, xw, zw, xh, zh) |
92 | |
93 | spec.isWorking = self:getLastSpeed() > 0.5 |
94 | |
95 | return realArea |
96 | end |
registerEventListeners
DescriptionDefinitionregisterEventListeners()Code
43 | function Roller.registerEventListeners(vehicleType) |
44 | SpecializationUtil.registerEventListener(vehicleType, "onLoad", Roller) |
45 | SpecializationUtil.registerEventListener(vehicleType, "onDelete", Roller) |
46 | SpecializationUtil.registerEventListener(vehicleType, "onPostAttach", Roller) |
47 | SpecializationUtil.registerEventListener(vehicleType, "onDeactivate", Roller) |
48 | SpecializationUtil.registerEventListener(vehicleType, "onStartWorkAreaProcessing", Roller) |
49 | SpecializationUtil.registerEventListener(vehicleType, "onEndWorkAreaProcessing", Roller) |
50 | end |
registerFunctions
DescriptionDefinitionregisterFunctions()Code
27 | function Roller.registerFunctions(vehicleType) |
28 | SpecializationUtil.registerFunction(vehicleType, "processRollerArea", Roller.processRollerArea) |
29 | end |
registerOverwrittenFunctions
DescriptionDefinitionregisterOverwrittenFunctions()Code
33 | function Roller.registerOverwrittenFunctions(vehicleType) |
34 | SpecializationUtil.registerOverwrittenFunction(vehicleType, "doCheckSpeedLimit", Roller.doCheckSpeedLimit) |
35 | SpecializationUtil.registerOverwrittenFunction(vehicleType, "getDoGroundManipulation", Roller.getDoGroundManipulation) |
36 | SpecializationUtil.registerOverwrittenFunction(vehicleType, "getDirtMultiplier", Roller.getDirtMultiplier) |
37 | SpecializationUtil.registerOverwrittenFunction(vehicleType, "getWearMultiplier", Roller.getWearMultiplier) |
38 | SpecializationUtil.registerOverwrittenFunction(vehicleType, "getIsWorkAreaActive", Roller.getIsWorkAreaActive) |
39 | end |