Script v1_7_1_0
- AI
- Animals
- Collections
- Contracts
- Debug
- Economy
- Elements
- EnvironmentalScore
- Errors
- Events
- GUI
- AnimalScreen
- AnimationElement
- BitmapElement
- BoxLayoutElement
- BreadcrumbsElement
- ButtonElement
- ButtonOverlay
- ChatWindow
- CheckedOptionElement
- ClearElement
- ColorPickButtonElement
- ConstructionScreen
- ContextActionDisplay
- ControlBarDisplay
- DialogElement
- DynamicFadedBitmapElement
- FillLevelsDisplay
- FlowLayoutElement
- FocusManager
- FrameElement
- FrameReferenceElement
- GameInfoDisplay
- GameInfoDisplayMobile
- GamePausedDisplay
- Gui
- GuiDataSource
- GuiElement
- GuiMixin
- GuiOverlay
- GuiProfile
- GuiSoundPlayer
- GuiTopDownCamera
- GuiTopDownCursor
- GuiUtils
- HUDDisplayElement
- HUDElement
- HUDFrameElement
- HUDPopupMessage
- HUDSliderElement
- HUDTextDisplay
- IndexChangeSubjectMixin
- IndexStateElement
- InfoDisplay
- InfoHUDBox
- InGameIcon
- IngameMap
- IngameMapElement
- InputGlyphElement
- InputGlyphElementUI
- InputHelpDisplay
- KeyValueInfoHUDBox
- ListElement
- ListItemElement
- MapOverlayGenerator
- MixerWagonHUDExtension
- MultiTextOptionElement
- MultiValueTween
- Overlay
- PagingElement
- PictureElement
- PlatformIconElement
- PlayerControlPadDisplay
- PlaySampleMixin
- RenderElement
- RoundStatusBar
- ScreenElement
- ScrollingLayoutElement
- SettingsModel
- SideNotification
- SideNotificationMobile
- SliderElement
- SpeakerDisplay
- SpeedMeterDisplay
- SpeedSliderDisplay
- StatusBar
- SteeringSliderDisplay
- TabbedMenu
- TabbedMenuFrameElement
- TabbedMenuWithDetails
- TableElement
- TableHeaderElement
- TerrainLayerElement
- TextBackdropElement
- TextElement
- TextInputElement
- ThreePartBitmapElement
- TimerElement
- ToggleButtonElement
- TopNotification
- Tween
- TweenSequence
- VariableWorkWidthHUDExten...
- VehicleHUDExtension
- VehicleSchemaDisplay
- VideoElement
- WardrobeScreen
- Handtools
- Hud
- I3d
- Input
- Jobs
- Maps
- Materials
- Misc
- Objects
- Parameters
- Placeables
- Placement
- Player
- Shop
- Sounds
- Specialization
- Specializations
- StateMachine
- Statistics
- Tasks
- Triggers
- Utils
- Vehicles
Engine v1_7_1_0
- AI
- Animation
- Camera
- Entity
- Fillplanes
- general
- General
- I3D
- Input
- Lighting
- Math
- Network
- Node
- NoteNode
- Overlays
- Particle System
- Physics
- Rendering
- Scenegraph
- Shape
- Sound
- Spline
- String
- Terrain Detail
- Text Rendering
- Tire Track
- VoiceChat
- XML
Foundation Reference
PlayerControlPadDisplay
DescriptionVehicle Steering Slider for Mobile VersionParent
HUDDisplayElementFunctions
- createBackground
- createComponents
- getBackgroundPosition
- new
- onAnimateVisibilityFinished
- onInputHelpModeChange
- onSliderPositionChangedX
- onSliderPositionChangedY
- setPlayer
- setScale
- setVisible
- update
- updateJoystickPosition
createBackground
DescriptionCreate an empty background overlay as a base frame for this element.Definition
createBackground()Code
217 | function PlayerControlPadDisplay.createBackground() |
218 | local width, height = getNormalizedScreenValues(unpack(PlayerControlPadDisplay.SIZE.BACKGROUND)) |
219 | local posX, posY = PlayerControlPadDisplay.getBackgroundPosition(1, width) |
220 | |
221 | return Overlay.new(nil, posX, posY, width, height) -- empty overlay, only used as a positioning frame |
222 | end |
createComponents
DescriptionDefinitioncreateComponents()Code
51 | function PlayerControlPadDisplay:createComponents() |
52 | local baseX, baseY = self:getPosition() |
53 | |
54 | --background |
55 | local bgSizeX, bgSizeY = getNormalizedScreenValues(unpack(PlayerControlPadDisplay.SIZE.BACKGROUND)) |
56 | local backgroundOverlay = Overlay.new(self.hudAtlasPath, baseX, baseY, bgSizeX, bgSizeY) |
57 | backgroundOverlay:setUVs(GuiUtils.getUVs(PlayerControlPadDisplay.UV.BACKGROUND)) |
58 | self.backgroundHudElement = HUDElement.new(backgroundOverlay) |
59 | |
60 | self:addChild(self.backgroundHudElement) |
61 | |
62 | -- joystick |
63 | local joySizeX, joySizeY = getNormalizedScreenValues(unpack(PlayerControlPadDisplay.SIZE.JOYSTICK)) |
64 | local joystickOverlay = Overlay.new(self.hudAtlasPath, baseX + joySizeX / 2, baseY + joySizeY / 2, joySizeX, joySizeY) |
65 | joystickOverlay:setUVs(GuiUtils.getUVs(PlayerControlPadDisplay.UV.JOYSTICK)) |
66 | |
67 | self.joystickXHudElement = HUDSliderElement.new(joystickOverlay, backgroundOverlay, 1, 1, 2.5, 1, - joySizeX / 2, bgSizeX / 2 - joySizeX / 2, bgSizeX - joySizeX / 2) |
68 | self.joystickXHudElement:setCallback(self.onSliderPositionChangedX, self) |
69 | |
70 | self.joystickYHudElement = HUDSliderElement.new(joystickOverlay, backgroundOverlay, 1, 1, 2.5, 2, - joySizeY / 2, bgSizeY / 2 - joySizeY / 2, bgSizeY - joySizeY / 2) |
71 | self.joystickYHudElement:setCallback(self.onSliderPositionChangedY, self) |
72 | |
73 | self.joystickXHudElement.radius = bgSizeX / 2 |
74 | self.joystickYHudElement.radius = bgSizeY / 2 |
75 | |
76 | self:addChild(self.joystickXHudElement) |
77 | self:addChild(self.joystickYHudElement) |
78 | self.joystickXHudElement:setAxisPosition(self.joystickXHudElement.centerTrans) |
79 | self.joystickYHudElement:setAxisPosition(self.joystickYHudElement.centerTrans) |
80 | end |
getBackgroundPosition
DescriptionGet the position of the background element, which provides this element's absolute position.Definition
getBackgroundPosition(scale Current, float width)Arguments
scale | Current | UI scale |
float | width | Scaled background width in pixels |
float | X | position in screen space |
float | Y | position in screen space |
206 | function PlayerControlPadDisplay.getBackgroundPosition(scale, width) |
207 | local offX, offY = getNormalizedScreenValues(unpack(PlayerControlPadDisplay.POSITION.BACKGROUND)) |
208 | return g_safeFrameOffsetX + offX * scale, g_safeFrameOffsetY - offY * scale |
209 | end |
new
DescriptionCreates a new PlayerControlPadDisplay instance.Definition
new(string hudAtlasPath)Arguments
string | hudAtlasPath | Path to the HUD texture atlas. |
16 | function PlayerControlPadDisplay.new(hud, hudAtlasPath) |
17 | local backgroundOverlay = PlayerControlPadDisplay.createBackground() |
18 | local self = PlayerControlPadDisplay:superClass().new(backgroundOverlay, nil, PlayerControlPadDisplay_mt) |
19 | |
20 | self.hud = hud |
21 | self.uiScale = 1.0 |
22 | self.hudAtlasPath = hudAtlasPath |
23 | |
24 | self.player = nil |
25 | |
26 | self.joystickPosX = 0.5 |
27 | self.joystickPosY = 0.5 |
28 | |
29 | self.lastInputHelpMode = GS_INPUT_HELP_MODE_KEYBOARD |
30 | |
31 | self:createComponents() |
32 | |
33 | return self |
34 | end |
onAnimateVisibilityFinished
DescriptionDefinitiononAnimateVisibilityFinished()Code
171 | function PlayerControlPadDisplay:onAnimateVisibilityFinished(isVisible) |
172 | PlayerControlPadDisplay:superClass().onAnimateVisibilityFinished(self, isVisible) |
173 | |
174 | if isVisible then |
175 | self.joystickXHudElement:resetSlider() |
176 | self.joystickYHudElement:resetSlider() |
177 | end |
178 | end |
onInputHelpModeChange
DescriptionDefinitiononInputHelpModeChange()Code
133 | function PlayerControlPadDisplay:onInputHelpModeChange(inputHelpMode) |
134 | self.lastInputHelpMode = inputHelpMode |
135 | |
136 | local state = self.player ~= nil and inputHelpMode ~= GS_INPUT_HELP_MODE_GAMEPAD |
137 | if state ~= self.animationState then |
138 | self:setVisible(state, true) |
139 | end |
140 | end |
onSliderPositionChangedX
DescriptionDefinitiononSliderPositionChangedX()Code
94 | function PlayerControlPadDisplay:onSliderPositionChangedX(position) |
95 | self.joystickPosX = position * 2 - 1 |
96 | |
97 | local posX, _ = self:updateJoystickPosition() |
98 | if posX ~= nil then |
99 | return posX |
100 | end |
101 | end |
onSliderPositionChangedY
DescriptionDefinitiononSliderPositionChangedY()Code
105 | function PlayerControlPadDisplay:onSliderPositionChangedY(position) |
106 | self.joystickPosY = position * 2 - 1 |
107 | |
108 | local _, posY = self:updateJoystickPosition() |
109 | if posY ~= nil then |
110 | return posY |
111 | end |
112 | end |
setPlayer
DescriptionSet the reference to the current player.Definition
setPlayer()Code
38 | function PlayerControlPadDisplay:setPlayer(player) |
39 | self.player = player |
40 | |
41 | local state = self.player ~= nil and self.lastInputHelpMode ~= GS_INPUT_HELP_MODE_GAMEPAD |
42 | if state ~= self.animationState then |
43 | self:setVisible(state, true) |
44 | self.joystickXHudElement:setTouchIsActive(state) |
45 | self.joystickYHudElement:setTouchIsActive(state) |
46 | end |
47 | end |
setScale
DescriptionSet this element's scale.Definition
setScale()Code
186 | function PlayerControlPadDisplay:setScale(uiScale) |
187 | PlayerControlPadDisplay:superClass().setScale(self, uiScale, uiScale) |
188 | |
189 | local currentVisibility = self:getVisible() |
190 | self:setVisible(true, false) |
191 | |
192 | self.uiScale = uiScale |
193 | local posX, posY = PlayerControlPadDisplay.getBackgroundPosition(uiScale, self:getWidth()) |
194 | self:setPosition(posX, posY) |
195 | |
196 | self:storeOriginalPosition() |
197 | self:setVisible(currentVisibility, false) |
198 | end |
setVisible
DescriptionSet this element's visibility with optional animation.Definition
setVisible(bool isVisible, bool animate)Arguments
bool | isVisible | True is visible, false is not. |
bool | animate | If true, the element will play an animation before applying the visibility change. |
86 | function PlayerControlPadDisplay:setVisible(isVisible, animate) |
87 | if not isVisible or g_inputBinding:getInputHelpMode() ~= GS_INPUT_HELP_MODE_GAMEPAD then |
88 | PlayerControlPadDisplay:superClass().setVisible(self, isVisible, animate) |
89 | end |
90 | end |
update
DescriptionUpdate the fill levels state.Definition
update()Code
149 | function PlayerControlPadDisplay:update(dt) |
150 | PlayerControlPadDisplay:superClass().update(self, dt) |
151 | |
152 | if self.player ~= nil then |
153 | if self.joystickXHudElement ~= nil and self.joystickYHudElement ~= nil then |
154 | self.joystickXHudElement:update(dt) |
155 | self.joystickYHudElement:update(dt) |
156 | end |
157 | |
158 | self.player:onInputMoveSide(nil, self.joystickPosX, nil, nil, false) |
159 | self.player:onInputMoveForward(nil, -self.joystickPosY, nil, nil, false) |
160 | |
161 | -- debug enable mouse |
162 | if not g_gui:getIsGuiVisible() then |
163 | local show = Utils.getNoNil(Input.isKeyPressed(Input.KEY_lctrl), false) |
164 | g_inputBinding:setShowMouseCursor(show, false) |
165 | end |
166 | end |
167 | end |
updateJoystickPosition
DescriptionDefinitionupdateJoystickPosition()Code
116 | function PlayerControlPadDisplay:updateJoystickPosition() |
117 | local distance = math.sqrt(self.joystickPosX ^ 2 + self.joystickPosY ^ 2) |
118 | if distance > 1 then |
119 | self.joystickPosX = self.joystickPosX / distance |
120 | local posX = self.joystickXHudElement.minTrans + (self.joystickXHudElement.maxTrans - self.joystickXHudElement.minTrans) * (self.joystickPosX / 2 + 0.5) |
121 | self.joystickXHudElement:setAxisPosition(posX, true) |
122 | |
123 | self.joystickPosY = self.joystickPosY / distance |
124 | local posY = self.joystickYHudElement.minTrans + (self.joystickYHudElement.maxTrans - self.joystickYHudElement.minTrans) * (self.joystickPosY / 2 + 0.5) |
125 | self.joystickYHudElement:setAxisPosition(posY, true) |
126 | |
127 | return posX, posY |
128 | end |
129 | end |