online multiplayer chess game (note server currently down)
Diffstat (limited to 'ui/virtual_keyboard/KeyUtils.gd')
| -rw-r--r-- | ui/virtual_keyboard/KeyUtils.gd | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/ui/virtual_keyboard/KeyUtils.gd b/ui/virtual_keyboard/KeyUtils.gd new file mode 100644 index 0000000..0b06d43 --- /dev/null +++ b/ui/virtual_keyboard/KeyUtils.gd @@ -0,0 +1,44 @@ +extends Button +class_name KeyUtils + +var is_pressed = false + + +func simulate_key_input_event(scancode: int, unicode := 0, pressed := true): + var i = InputEventKey.new() + i.pressed = pressed + i.scancode = scancode + i.unicode = unicode + Input.parse_input_event(i) + + +func is_mouse(event) -> bool: + return event is InputEventMouseButton and event.button_index == BUTTON_LEFT + + +func _input(event: InputEvent) -> void: + if is_mouse(event): + if !event.pressed and is_pressed: + _release() + elif event is InputEventMouseMotion: + if !get_global_rect().has_point(event.position): + _release() + + +func _release(): + if is_pressed != false: + is_pressed = false + released() + + +func _pressed(): + is_pressed = true + pressed() + + +func pressed() -> void: + pass + + +func released() -> void: + pass |