1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- # Copyright (C) 2022-2023 John Pennycook
- # SPDX-License-Identifier: MIT
- @tool
- class_name KeyboardTextures
- extends Resource
- ## Textures used by a [KeyPrompt] or [ActionPrompt].
- ##
- ## Textures used by a [KeyPrompt] or [ActionPrompt]. Stores a texture for each
- ## keyboard scancode.
- ## A mapping from keyboard strings (as returned by
- ## [method OS.get_keycode_string]) to textures.
- var textures: Dictionary = {}
- func _init():
- for k in KeyPrompt._KEYS:
- textures[OS.get_keycode_string(k)] = null
- ## Return the [Texture2D] associated with the specified [InputEvent], or null.
- func get_texture(event: InputEvent) -> Texture2D:
- if not event is InputEventKey:
- return null
- var key_event := event as InputEventKey
- var scancode := key_event.keycode
- if scancode == 0:
- scancode = key_event.physical_keycode
- return textures[OS.get_keycode_string(scancode)]
- func _get(property):
- if property in textures.keys():
- return textures[property]
- return null
- func _set(property, value):
- if property in textures.keys():
- textures[property] = value
- return true
- return false
- func _get_property_list():
- var properties = []
- for k in KeyPrompt._KEYS:
- properties.append(
- {
- name = OS.get_keycode_string(k),
- type = TYPE_OBJECT,
- hint = PROPERTY_HINT_RESOURCE_TYPE,
- hint_string = "Texture2D"
- }
- )
- return properties
|