LUADOC - Farming Simulator 22

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
63function PlayerStateCrouch:deactivate()
64 PlayerStateCrouch:superClass().deactivate(self)
65
66 setTranslation(self.player.cameraNode, 0.0, self.cameraY, 0.0)
67end

isAvailable

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

moveCamera

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

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
38 return self
39end

processInput

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

update

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