init
This commit is contained in:
50
rougelikeaboutmechs/autoloads/input_manager.gd
Normal file
50
rougelikeaboutmechs/autoloads/input_manager.gd
Normal file
@@ -0,0 +1,50 @@
|
||||
extends Node
|
||||
|
||||
#region Showing new Screens
|
||||
signal game_pause
|
||||
signal game_unpause
|
||||
signal game_debug_show
|
||||
signal game_debug_hide
|
||||
#endregion
|
||||
|
||||
#region Game State Management
|
||||
var _is_in_game: bool = false
|
||||
var _is_paused: bool = false
|
||||
var is_debug_label_visible: bool = false
|
||||
var capture_mouse_ingame: bool = true
|
||||
#endregion
|
||||
|
||||
enum InputType {MOUSE, JOYPAD}
|
||||
|
||||
func _ready():
|
||||
set_process_mode(Node.PROCESS_MODE_ALWAYS)
|
||||
|
||||
func _input(event: InputEvent) -> void:
|
||||
|
||||
if event.is_action_pressed("pause"):
|
||||
if (_is_in_game and not _is_paused):
|
||||
game_pause.emit()
|
||||
elif (_is_in_game and _is_paused):
|
||||
game_unpause.emit()
|
||||
elif event.is_action_pressed("toggle_debug_label"):
|
||||
if is_debug_label_visible:
|
||||
game_debug_hide.emit()
|
||||
else:
|
||||
game_debug_show.emit()
|
||||
elif not _is_in_game:
|
||||
pass
|
||||
|
||||
func set_is_in_game(b: bool) -> void:
|
||||
_is_in_game = b
|
||||
_update_mouse_capture()
|
||||
|
||||
func _update_mouse_capture() -> void:
|
||||
if capture_mouse_ingame:
|
||||
if (not _is_in_game) || _is_paused:
|
||||
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
|
||||
else:
|
||||
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
|
||||
|
||||
func set_is_paused(b: bool) -> void:
|
||||
_is_paused = b
|
||||
_update_mouse_capture()
|
||||
Reference in New Issue
Block a user