LUADOC - Farming Simulator 22

Script v1_7_1_0

Engine v1_7_1_0

Foundation Reference

PlayerStateAnimalRide

Parent
PlayerStateBase
Functions

activate

Description
Activate method.
Definition
activate()
Code
51function PlayerStateAnimalRide:activate()
52 PlayerStateAnimalRide:superClass().activate(self)
53 if self.placeable ~= nil then
54 if self.placeable:getAnimalCanBeRidden(self.cluster.id) then
55 g_currentMission:fadeScreen(1, self.timeFadeToBlack, self.endFadeToBlack, self, {self.placeable, self.cluster, self.player})
56 g_inputBinding:setContext(PlayerStateAnimalRide.INPUT_CONTEXT_EMPTY, true, false)
57 else
58 g_currentMission:addIngameNotification(FSBaseMission.INGAME_NOTIFICATION_CRITICAL, g_i18n:getText("shop_messageAnimalRideableLimitReached"))
59 end
60 end
61
62 self:deactivate()
63end

animalRaycastCallback

Description
Raycast to check if animal husbandry has been detected
Definition
animalRaycastCallback(float dt)
Arguments
floatdtdelta time in ms
Code
75function PlayerStateAnimalRide:animalRaycastCallback(hitObjectId, x, y, z, distance)
76 local husbandryId, animalId = getAnimalFromCollisionNode(hitObjectId)
77
78 if husbandryId ~= nil and husbandryId ~= 0 then
79 local clusterHusbandry = g_currentMission.husbandrySystem:getClusterHusbandyById(husbandryId)
80 if clusterHusbandry ~= nil then
81 local placeable = clusterHusbandry:getPlaceable()
82 local cluster = clusterHusbandry:getClusterByAnimalId(animalId)
83 if cluster ~= nil and g_currentMission.accessHandler:canFarmAccess(self.player.farmId, placeable) then
84 if placeable:getAnimalSupportsRiding(cluster.id) then
85 self.placeable = placeable
86 self.cluster = cluster
87 return true
88 end
89 end
90 end
91 end
92
93 return false
94end

endFadeToBlack

Description
Definition
endFadeToBlack()
Code
67function PlayerStateAnimalRide:endFadeToBlack(arguments)
68 local placeable, cluster, player = arguments[1], arguments[2], arguments[3]
69 placeable:startRiding(cluster.id, player)
70end

getRideableName

Description
Definition
getRideableName()
Code
98function PlayerStateAnimalRide:getRideableName()
99 local rideableName = ""
100 if self.placeable ~= nil and self.cluster.getName ~= nil then
101 rideableName = self.cluster:getName()
102 end
103 return rideableName
104end

isAvailable

Description
Check if we can ride animal.
Definition
isAvailable()
Return Values
boolreturnstrue if player can ride an animal
Code
36function PlayerStateAnimalRide:isAvailable()
37 local cameraX, cameraY, cameraZ = localToWorld(self.player.cameraNode, 0.0, 0.0, 0.0)
38 local dirX, dirY, dirZ = localDirectionToWorld(self.player.cameraNode, 0.0, 0.0, -1.0)
39 local collisionMask = CollisionFlag.ANIMAL
40 self.placeable = nil
41 self.cluster = nil
42 raycastClosest(cameraX, cameraY, cameraZ, dirX, dirY, dirZ, "animalRaycastCallback", self.castDistance, self, collisionMask)
43 if self.placeable ~= nil then
44 return true
45 end
46 return false
47end

new

Description
Creating instance of state.
Definition
new(table player, table stateMachine)
Arguments
tableplayerinstance of player
tablestateMachineinstance of the state machine manager
Return Values
tableinstanceinstance of object
Code
21function PlayerStateAnimalRide.new(player, stateMachine)
22 local self = PlayerStateBase.new(player, stateMachine, PlayerStateAnimalRide_mt)
23
24 self.placeable = nil
25 self.cluster = nil
26
27 self.castDistance = 1.5 -- in m
28 self.timeFadeToBlack = 250
29
30 return self
31end