diff --git a/demo/demo/agents/player/player.gd b/demo/demo/agents/player/player.gd index f429e78..1e98b4a 100644 --- a/demo/demo/agents/player/player.gd +++ b/demo/demo/agents/player/player.gd @@ -27,6 +27,7 @@ var attack_pressed: bool = false func _ready() -> void: super._ready() can_dodge = true + _init_input_events() _init_state_machine() death.connect(func(): remove_from_group(&"player")) @@ -69,6 +70,28 @@ func _init_state_machine() -> void: hsm.set_guard(_can_dodge) +func _init_input_events() -> void: + # Note: Ensures that input events are present even if project.godot wasn't imported. + _add_action(&"move_left", KEY_A) + _add_action(&"move_right", KEY_D) + _add_action(&"move_up", KEY_W) + _add_action(&"move_down", KEY_S) + _add_action(&"dodge", KEY_SPACE) + _add_action(&"attack", KEY_ENTER, KEY_F) + + +func _add_action(p_action: StringName, p_key: Key, p_alt: Key = KEY_NONE) -> void: + if not InputMap.has_action(p_action): + InputMap.add_action(p_action) + var event := InputEventKey.new() + event.keycode = p_key + InputMap.action_add_event(p_action, event) + if p_alt != KEY_NONE: + var alt := InputEventKey.new() + alt.keycode = p_alt + InputMap.action_add_event(p_action, alt) + + func set_victorious() -> void: idle_state.idle_animation = &"dance" diff --git a/demo/demo/scenes/game.tscn b/demo/demo/scenes/game.tscn index ec1e026..25a1f35 100644 --- a/demo/demo/scenes/game.tscn +++ b/demo/demo/scenes/game.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=14 format=3 uid="uid://clyhgbpfpmtw7"] +[gd_scene load_steps=15 format=3 uid="uid://clyhgbpfpmtw7"] [ext_resource type="Script" path="res://demo/scenes/game.gd" id="1_qw71e"] [ext_resource type="Theme" uid="uid://boqtjf88xcpu4" path="res://demo/assets/ui.theme" id="2_r21q3"] @@ -25,6 +25,12 @@ font_color = Color(1, 1, 0.239216, 1) outline_size = 20 outline_color = Color(0.211521, 0.23888, 0.290166, 1) +[sub_resource type="LabelSettings" id="LabelSettings_grcwx"] +font = ExtResource("4_w0vii") +font_size = 37 +outline_size = 12 +outline_color = Color(0.317525, 0.344884, 0.388373, 1) + [node name="Game" type="Node2D"] y_sort_enabled = true script = ExtResource("1_qw71e") @@ -116,6 +122,25 @@ label_settings = SubResource("LabelSettings_628x3") horizontal_alignment = 2 vertical_alignment = 1 +[node name="Keys" type="Label" parent="UI Layer/Control"] +layout_mode = 1 +anchors_preset = 3 +anchor_left = 1.0 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = -336.0 +offset_top = -208.0 +offset_right = -18.0 +offset_bottom = -25.0 +grow_horizontal = 0 +grow_vertical = 0 +text = "Move WASD +Dodge SPACE +Attack ENTER / F +" +label_settings = SubResource("LabelSettings_grcwx") + [node name="Arena" parent="." instance=ExtResource("9_k3uu1")] metadata/_edit_lock_ = true diff --git a/demo/project.godot b/demo/project.godot index 0a4c086..32ef28a 100644 --- a/demo/project.godot +++ b/demo/project.godot @@ -24,41 +24,6 @@ window/size/window_width_override=1280 window/size/window_height_override=720 window/stretch/mode="canvas_items" -[input] - -move_left={ -"deadzone": 0.5, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"echo":false,"script":null) -] -} -move_right={ -"deadzone": 0.5, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"echo":false,"script":null) -] -} -move_up={ -"deadzone": 0.5, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"echo":false,"script":null) -] -} -move_down={ -"deadzone": 0.5, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"echo":false,"script":null) -] -} -attack={ -"deadzone": 0.5, -"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":1,"canceled":false,"pressed":false,"double_click":false,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194309,"key_label":0,"unicode":0,"echo":false,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":70,"key_label":0,"unicode":102,"echo":false,"script":null) -] -} -dodge={ -"deadzone": 0.5, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"echo":false,"script":null) -] -} - [layer_names] 2d_physics/layer_1="Obstacle"