mirror of
https://github.com/JHDev2006/Super-Mario-Bros.-Remastered-Public.git
synced 2025-10-21 15:08:12 +00:00
[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:
@@ -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()
|
||||||
|
@@ -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:
|
||||||
|
@@ -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
|
||||||
|
@@ -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
|
||||||
|
Reference in New Issue
Block a user