test: self-bootstrap InputMap actions in TestLevelBuilder
This commit is contained in:
@@ -2,11 +2,12 @@ extends Node3D
|
||||
class_name TestLevelBuilder
|
||||
## Builds the test level ONLY from code — no .tscn SubResource references.
|
||||
## One-click playtest: attach to TestLevel root, F5.
|
||||
|
||||
func _ready() -> void:
|
||||
build()
|
||||
|
||||
|
||||
func build() -> void:
|
||||
_build_input_map()
|
||||
_build_floor()
|
||||
_build_walls()
|
||||
_build_lighting()
|
||||
@@ -15,6 +16,41 @@ func build() -> void:
|
||||
|
||||
|
||||
func _box_static(pos: Vector3, size: Vector3, color: Color) -> StaticBody3D:
|
||||
|
||||
|
||||
func _build_input_map() -> void:
|
||||
var bindings := {
|
||||
jump = [KEY_SPACE],
|
||||
sprint = [KEY_SHIFT],
|
||||
crouch = [KEY_CTRL],
|
||||
dash = [KEY_SHIFT],
|
||||
fire = [MOUSE_BUTTON_RIGHT, KEY_F],
|
||||
fire_alt = [MOUSE_BUTTON_LEFT],
|
||||
reload = [KEY_R],
|
||||
interact = [KEY_E],
|
||||
move_forward = [KEY_W],
|
||||
move_back = [KEY_S],
|
||||
move_left = [KEY_A],
|
||||
move_right = [KEY_D],
|
||||
weapon_next = [MOUSE_BUTTON_WHEEL_UP],
|
||||
weapon_prev = [MOUSE_BUTTON_WHEEL_DOWN],
|
||||
}
|
||||
for action in bindings:
|
||||
if not InputMap.has_action(action):
|
||||
InputMap.add_action(action)
|
||||
InputMap.action_erase_events(action)
|
||||
var events: Array[InputEvent] = []
|
||||
for code in bindings[action]:
|
||||
if code in [KEY_SPACE, KEY_SHIFT, KEY_CTRL, KEY_R, KEY_F, KEY_E, KEY_W, KEY_S, KEY_A, KEY_D]:
|
||||
var ev := InputEventKey.new()
|
||||
ev.keycode = code
|
||||
events.append(ev)
|
||||
else:
|
||||
var ev := InputEventMouseButton.new()
|
||||
ev.button_index = code
|
||||
events.append(ev)
|
||||
for ev in events:
|
||||
InputMap.action_add_event(action, ev)
|
||||
var body := StaticBody3D.new()
|
||||
body.name = "Static_" + str(pos)
|
||||
body.position = pos
|
||||
|
||||
Reference in New Issue
Block a user