56 lines
1.4 KiB
GDScript
56 lines
1.4 KiB
GDScript
class_name PawnInput extends Node
|
|
|
|
|
|
@export var dir : Vector3
|
|
@export var pressed : Dictionary[String, bool]
|
|
@export var just_pressed : Dictionary[String, bool]
|
|
@export var just_released : Dictionary[String, bool]
|
|
|
|
func _ready() -> void:
|
|
pressed = {
|
|
"left cycle trap":false,
|
|
"right cycle trap":false,
|
|
"detonate":false,
|
|
"detect":false,
|
|
"lay trap":false,
|
|
"attack":false
|
|
}
|
|
just_pressed = {
|
|
"left cycle trap":false,
|
|
"right cycle trap":false,
|
|
"detonate":false,
|
|
"detect":false,
|
|
"lay trap":false,
|
|
"attack":false
|
|
}
|
|
just_released = {
|
|
"left cycle trap":false,
|
|
"right cycle trap":false,
|
|
"detonate":false,
|
|
"detect":false,
|
|
"lay trap":false,
|
|
"attack":false
|
|
}
|
|
|
|
func _physics_process(delta: float) -> void:
|
|
var d = Input.get_vector("west", "east", "north", "south")
|
|
dir = Vector3(d.x, 0, d.y)
|
|
for key : String in pressed:
|
|
if Input.is_action_pressed(key):
|
|
just_pressed[key] = !pressed[key]
|
|
just_released[key] = false
|
|
pressed[key] = true
|
|
else:
|
|
just_released[key] = pressed[key]
|
|
just_pressed[key] = false
|
|
pressed[key] = false
|
|
|
|
func is_action_pressed(action : String) -> bool:
|
|
return pressed.has(action) && pressed[action]
|
|
|
|
func is_action_just_pressed(action : String) -> bool:
|
|
return just_pressed.has(action) && just_pressed[action]
|
|
|
|
func is_action_just_released(action : String) -> bool:
|
|
return just_released.has(action) && just_released[action]
|