LUADOC - Farming Simulator 22

AITaskDriveTo

Parent
AITask
Functions

new

Description
Definition
new()
Code
22function AITaskDriveTo.new(isServer, job, customMt)
23 local self = AITask.new(isServer, job, customMt or AITaskDriveTo_mt)
24
25 self.x = nil
26 self.z = nil
27 self.dirX = nil
28 self.dirZ = nil
29 self.vehicle = nil
30 self.state = AITaskDriveTo.STATE_DRIVE_TO_OFFSET_POS
31 self.maxSpeed = 10
32 self.offset = 0
33
34 self.prepareTimeout = 0
35
36 return self
37end

onError

Description
Definition
onError()
Code
167function AITaskDriveTo:onError(errorMessage)
168end

onTargetReached

Description
Definition
onTargetReached()
Code
155function AITaskDriveTo:onTargetReached()
156 if self.state == AITaskDriveTo.STATE_DRIVE_TO_OFFSET_POS then
157 local y = getTerrainHeightAtWorldPos(g_currentMission.terrainRootNode, self.x, 0, self.z)
158 self.vehicle:setAITarget(self, self.x, y, self.z, self.dirX, 0, self.dirZ, self.maxSpeed, true)
159 self.state = AITaskDriveTo.STATE_DRIVE_TO_FINAL_POS
160 else
161 self.isFinished = true
162 end
163end

reset

Description
Definition
reset()
Code
41function AITaskDriveTo:reset()
42 self.vehicle = nil
43 self.x, self.z = nil, nil
44 self.dirX, self.dirZ = nil, nil
45 self.state = AITaskDriveTo.STATE_DRIVE_TO_OFFSET_POS
46 self.maxSpeed = 10
47 self.offset = 0
48 AITaskDriveTo:superClass().reset(self)
49end

setTargetDirection

Description
Definition
setTargetDirection()
Code
77function AITaskDriveTo:setTargetDirection(dirX, dirZ)
78 self.dirX = dirX
79 self.dirZ = dirZ
80
81 if self.isActive then
82 -- update target
83 end
84end

setTargetOffset

Description
Definition
setTargetOffset()
Code
59function AITaskDriveTo:setTargetOffset(offset)
60 self.offset = offset
61end

setTargetPosition

Description
Definition
setTargetPosition()
Code
65function AITaskDriveTo:setTargetPosition(x, z)
66 self.x = x
67 self.z = z
68
69 if self.isActive then
70 -- update target
71-- self.vehicle:
72 end
73end

setVehicle

Description
Definition
setVehicle()
Code
53function AITaskDriveTo:setVehicle(vehicle)
54 self.vehicle = vehicle
55end

start

Description
Definition
start()
Code
108function AITaskDriveTo:start()
109 if self.isServer then
110 self.state = AITaskDriveTo.STATE_PREPARE_DRIVING
111 self.vehicle:prepareForAIDriving()
112
113 self.isActive = true
114
115--#debug log("AITaskDriveTo:start()")
116 end
117
118 AITaskDriveTo:superClass().start(self)
119end

startDriving

Description
Definition
startDriving()
Code
135function AITaskDriveTo:startDriving()
136 local y = getTerrainHeightAtWorldPos(g_currentMission.terrainRootNode, self.x, 0, self.z)
137 local dirY = 0
138
139 self.state = AITaskDriveTo.STATE_DRIVE_TO_FINAL_POS
140 local x = self.x
141 local z = self.z
142
143 if self.offset ~= 0 then
144 self.state = AITaskDriveTo.STATE_DRIVE_TO_OFFSET_POS
145 x = self.x + self.dirX * -self.offset
146 z = self.z + self.dirZ * -self.offset
147 end
148
149--#debug log("AITaskDriveTo:startDriving()", x, y, z, self.dirX, self.dirZ, "Drive to Offset", (self.state == AITaskDriveTo.STATE_DRIVE_TO_OFFSET_POS))
150 self.vehicle:setAITarget(self, x, y, z, self.dirX, dirY, self.dirZ)
151end

stop

Description
Definition
stop()
Code
123function AITaskDriveTo:stop(wasJobStopped)
124 AITaskDriveTo:superClass().stop(self, wasJobStopped)
125
126 if self.isServer then
127 self.vehicle:unsetAITarget()
128
129 self.isActive = false
130 end
131end

update

Description
Definition
update()
Code
88function AITaskDriveTo:update(dt)
89 if self.isServer then
90 if self.state == AITaskDriveTo.STATE_PREPARE_DRIVING then
91 local isReadyToDrive, blockingVehicle = self.vehicle:getIsAIReadyToDrive()
92 if isReadyToDrive then
93 self:startDriving()
94 else
95 if not self.vehicle:getIsAIPreparingToDrive() then
96 self.prepareTimeout = self.prepareTimeout + dt
97 if self.prepareTimeout > AITaskDriveTo.PREPARE_TIMEOUT then
98 self.vehicle:stopCurrentAIJob(AIMessageErrorCouldNotPrepare.new(blockingVehicle or self.vehicle))
99 end
100 end
101 end
102 end
103 end
104end