LUADOC - Farming Simulator 19

Script v1.7.1.0

Engine v1.7.1.0

Foundation Reference

PlayerStateCrouch

Parent
PlayerStateBase
Functions

deactivate

Description
Deactivate method. Player camera node translation is set.
Definition
deactivate()
Code
62function PlayerStateCrouch:deactivate()
63 PlayerStateCrouch:superClass().deactivate(self)
64
65 setTranslation(self.player.cameraNode, 0.0, self.cameraY, 0.0)
66end

isAvailable

Description
Check if state is available. Player cannot crouch while in water
Definition
isAvailable()
Return Values
booltrueif player can crouch
Code
49function PlayerStateCrouch:isAvailable()
50 if self.player.baseInformation.isInWater then
51 return false
52 end
53
54 if self.player:hasHandtoolEquipped() and self.player.baseInformation.currentHandtool:isBeingUsed() then
55 return false
56 end
57 return true
58end

moveCamera

Description
Definition
moveCamera()
Code
112function PlayerStateCrouch:moveCamera(dt)
113 if self.progress == PlayerStateCrouch.PROGRESS_STATES.CROUCHING then
114 local dtInSec = dt * 0.001
115 self.crouchFactor = math.min(1.0, self.crouchFactor + dtInSec / self.crouchTime)
116 elseif self.progress == PlayerStateCrouch.PROGRESS_STATES.CROUCH then
117 elseif self.progress == PlayerStateCrouch.PROGRESS_STATES.STANDING then
118 local dtInSec = dt * 0.001
119 self.crouchFactor = math.max(0.0, self.crouchFactor - dtInSec / self.crouchTime)
120 elseif self.progress == PlayerStateCrouch.PROGRESS_STATES.UP then
121 self:deactivate()
122 end
123 self.crouchCameraY = self.cameraY - self.crouchYOffset * self.crouchFactor
124 setTranslation(self.player.cameraNode, 0.0, self.crouchCameraY, 0.0)
125end

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
27function PlayerStateCrouch:new(player, stateMachine)
28 local self = PlayerStateBase:new(player, stateMachine, PlayerStateCrouch_mt)
29
30 self.crouchTime = 0.25 -- in sec
31 self.crouchFactor = 0
32 self.crouchYOffset = 0.8
33 self.cameraY = 0.0
34 self.crouchCameraY = 0.0
35 self.progress = PlayerStateCrouch.PROGRESS_STATES.UP
36 self.toggleMode = false
37 return self
38end

processInput

Description
Definition
processInput()
Code
84function PlayerStateCrouch:processInput()
85 if self.player.baseInformation.currentHandtool == nil or self.player:hasHandtoolEquipped() and not self.player.baseInformation.currentHandtool:isBeingUsed() then
86 local crouchState = self.progress
87 local inputState = self.player.inputInformation.crouchState
88
89 local isCrouching = crouchState == PlayerStateCrouch.PROGRESS_STATES.CROUCHING or crouchState == PlayerStateCrouch.PROGRESS_STATES.CROUCH
90 local isStanding = crouchState == PlayerStateCrouch.PROGRESS_STATES.STANDING or crouchState == PlayerStateCrouch.PROGRESS_STATES.UP
91
92 if self.toggleMode then
93 if inputState == Player.BUTTONSTATES.PRESSED then
94 if isCrouching then
95 self.progress = PlayerStateCrouch.PROGRESS_STATES.STANDING
96 elseif isStanding then
97 self.progress = PlayerStateCrouch.PROGRESS_STATES.CROUCHING
98 end
99 end
100 else
101 if inputState == Player.BUTTONSTATES.PRESSED and isStanding then
102 self.progress = PlayerStateCrouch.PROGRESS_STATES.CROUCHING
103 elseif inputState == Player.BUTTONSTATES.RELEASED and isCrouching then
104 self.progress = PlayerStateCrouch.PROGRESS_STATES.STANDING
105 end
106 end
107 end
108end

update

Description
Update method. Slowly update camera Y position.
Definition
update()
Code
70function PlayerStateCrouch:update(dt)
71 -- print(string.format("-- [PlayerStateCrouch:update] toggle(%s) progress(%d) inputState(%d) factor(%.3f)", tostring(self.toggleMode), self.progress, self.player.inputInformation.crouchState, self.crouchFactor))
72 self:processInput()
73 self:moveCamera(dt)
74
75 if self.crouchFactor == 1.0 then
76 self.progress = PlayerStateCrouch.PROGRESS_STATES.CROUCH
77 elseif self.crouchFactor == 0.0 then
78 self.progress = PlayerStateCrouch.PROGRESS_STATES.UP
79 end
80end