# Copyright (C) 2022-2023 John Pennycook # SPDX-License-Identifier: MIT @tool @icon("res://addons/input_prompts/joypad_motion_prompt/icon.svg") class_name JoypadMotionPrompt extends "res://addons/input_prompts/input_prompt.gd" ## Displays a prompt based on a joypad axis and value. ## ## Displays a prompt based on a joypad axis and value. ## The texture used for the prompt is determined by an icon preference. When ## the icon preference is set to "Automatic", the prompt automatically adjusts ## to match the most recent joypad device. ## [br][br] ## [b]Note[/b]: A [JoypadMotionPrompt] will never show keyboard or mouse ## prompts. To automatically reflect the most recent input device, use ## [ActionPrompt] instead. ## A joypad axis index, such as [constant @GlobalScope.JOY_AXIS_LEFT_X]. var axis := 0: set = _set_axis ## A joypad axis value (positive or negative). var axis_value := -1: set = _set_axis_value ## The icon preference for this prompt: ## Automatic (0), Xbox (1), Sony (2), Nintendo (3). ## When set to "Automatic", the prompt automatically adjusts to match the most ## recent joypad device. var icon: int = Icons.AUTOMATIC: set = _set_icon func _ready(): _update_icon() func _set_axis(new_axis: int): axis = new_axis var event := InputEventJoypadMotion.new() event.axis = axis event.axis_value = axis_value events = [event] _update_icon() func _set_axis_value(new_value: int): axis_value = new_value var event := InputEventJoypadMotion.new() event.axis = axis event.axis_value = axis_value events = [event] _update_icon() func _set_icon(new_icon): icon = new_icon _update_icon() func _update_icon(): var textures := PromptManager.get_joypad_motion_textures(icon) texture = textures.get_texture(events[0]) queue_redraw() func _get_property_list(): var properties = [] properties.append( { name = "JoypadMotionPrompt", type = TYPE_NIL, usage = PROPERTY_USAGE_CATEGORY | PROPERTY_USAGE_SCRIPT_VARIABLE } ) const AXIS_HINT := ( "Left Horizontal:0," + "Left Vertical:1," + "Right Horizontal:2," + "Right Vertical:3," + "Left Trigger:4," + "Right Trigger:5" ) properties.append( {name = "axis", type = TYPE_INT, hint = PROPERTY_HINT_ENUM, hint_string = AXIS_HINT} ) properties.append( { name = "axis_value", type = TYPE_INT, hint = PROPERTY_HINT_ENUM, hint_string = "Negative:-1,Positive:1" } ) properties.append( { name = "icon", type = TYPE_INT, hint = PROPERTY_HINT_ENUM, hint_string = "Automatic,Xbox,Sony,Nintendo" } ) return properties