[QoL] Noclip can be toggled, works w/o debug in leveltesting, some convenience functions. (#621)

* Some state machine functions to make code tidier in the future

* Added a function to Global to check if we're playtesting, for convenience

* Only allow noclip w/o debug in leveltesting, toggling added, kept jump key to exit
This commit is contained in:
guzlad
2025-10-18 01:24:50 +02:00
committed by GitHub
parent 75b293040e
commit e48b7c2c0f
4 changed files with 24 additions and 6 deletions

View File

@@ -280,9 +280,16 @@ func editor_level_start() -> void:
func _physics_process(delta: float) -> void: func _physics_process(delta: float) -> void:
if Input.is_action_just_pressed("debug_reload"): if Input.is_action_just_pressed("debug_reload"):
set_power_state_frame() set_power_state_frame()
if Input.is_action_just_pressed("debug_noclip") and Global.debug_mode:
state_machine.transition_to("NoClip") # guzlad: noclip without dev only works while playtesting.
Global.log_comment("NOCLIP Enabled") if (Input.is_action_just_pressed("debug_noclip") or Input.is_action_just_pressed("jump_0")) and ((Global.debug_mode) or (Global.level_editor_is_playtesting())):
if state_machine.is_state("NoClip"):
state_machine.transition_to("Normal")
Global.log_comment("NOCLIP Disabled")
elif !Input.is_action_just_pressed("jump_0") and !state_machine.is_state("NoClip"):
state_machine.transition_to("NoClip")
Global.log_comment("NOCLIP Enabled")
up_direction = -gravity_vector up_direction = -gravity_vector
handle_directions() handle_directions()
handle_block_collision_detection() handle_block_collision_detection()

View File

@@ -454,6 +454,12 @@ func log_comment(msg := "") -> void:
await get_tree().create_timer(2, false).timeout await get_tree().create_timer(2, false).timeout
error_message.queue_free() error_message.queue_free()
func level_editor_is_playtesting() -> bool:
if Global.current_game_mode == Global.GameMode.LEVEL_EDITOR:
if Global.level_editor.current_state == LevelEditor.EditorState.PLAYTESTING:
return true
return false
func unlock_achievement(achievement_id := AchievementID.SMB1_CLEAR) -> void: func unlock_achievement(achievement_id := AchievementID.SMB1_CLEAR) -> void:
achievements[achievement_id] = "1" achievements[achievement_id] = "1"
if achievement_id != AchievementID.COMPLETIONIST: if achievement_id != AchievementID.COMPLETIONIST:

View File

@@ -13,9 +13,6 @@ func enter(_msg := {}) -> void:
func physics_update(_delta: float) -> void: func physics_update(_delta: float) -> void:
player.velocity = Input.get_vector("move_left_0", "move_right_0", "move_up_0", "move_down_0") * (FAST_SPEED if Input.is_action_pressed("run_0") else SLOW_SPEED) player.velocity = Input.get_vector("move_left_0", "move_right_0", "move_up_0", "move_down_0") * (FAST_SPEED if Input.is_action_pressed("run_0") else SLOW_SPEED)
player.move_and_slide() player.move_and_slide()
if Input.is_action_just_pressed("jump_0"):
state_machine.transition_to("Normal")
Global.log_comment("NOCLIP Disabled")
func exit() -> void: func exit() -> void:
player.can_hurt = false player.can_hurt = false

View File

@@ -15,3 +15,11 @@ func _physics_process(delta: float) -> void:
func _process(delta: float) -> void: func _process(delta: float) -> void:
state.update(delta) state.update(delta)
func get_state() -> String:
if (state != null):
return state.name
return ""
func is_state(state_to_check := "") -> bool:
return get_state() == state_to_check