# Copyright (C) 2022-2023 John Pennycook # SPDX-License-Identifier: MIT @tool @icon("res://addons/input_prompts/joypad_button_prompt/icon.svg") class_name JoypadButtonPrompt extends "res://addons/input_prompts/input_prompt.gd" ## Displays a prompt based on a joypad button index. ## ## Displays a prompt based on a joypad button index. ## 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 [JoypadButtonPrompt] will never show keyboard or mouse ## prompts. To automatically reflect the most recent input device, use ## [ActionPrompt] instead. ## A joypad button index, such as [constant @GlobalScope.JOY_BUTTON_A]. var button := 0: set = _set_button ## 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_button(index: int): button = index var event := InputEventJoypadButton.new() event.button_index = button events = [event] _update_icon() func _set_icon(new_icon): icon = new_icon _update_icon() func _update_icon(): var textures := PromptManager.get_joypad_button_textures(icon) texture = textures.get_texture(events[0]) queue_redraw() func _get_property_list(): var properties = [] properties.append( { name = "JoypadButtonPrompt", type = TYPE_NIL, usage = PROPERTY_USAGE_CATEGORY | PROPERTY_USAGE_SCRIPT_VARIABLE } ) properties.append( {name = "button", type = TYPE_INT, hint = PROPERTY_HINT_RANGE, hint_string = "0,22"} ) properties.append( { name = "icon", type = TYPE_INT, hint = PROPERTY_HINT_ENUM, hint_string = "Automatic,Xbox,Sony,Nintendo" } ) return properties