init
This commit is contained in:
21
rougelikeaboutmechs/core/default_bus_layout.tres
Normal file
21
rougelikeaboutmechs/core/default_bus_layout.tres
Normal file
@@ -0,0 +1,21 @@
|
||||
[gd_resource type="AudioBusLayout" format=3 uid="uid://cxjrus2g7oh0t"]
|
||||
|
||||
[resource]
|
||||
bus/1/name = &"Music"
|
||||
bus/1/solo = false
|
||||
bus/1/mute = false
|
||||
bus/1/bypass_fx = false
|
||||
bus/1/volume_db = 0.0
|
||||
bus/1/send = &"Master"
|
||||
bus/2/name = &"SFX"
|
||||
bus/2/solo = false
|
||||
bus/2/mute = false
|
||||
bus/2/bypass_fx = false
|
||||
bus/2/volume_db = 0.0
|
||||
bus/2/send = &"Master"
|
||||
bus/3/name = &"Voice"
|
||||
bus/3/solo = false
|
||||
bus/3/mute = false
|
||||
bus/3/bypass_fx = false
|
||||
bus/3/volume_db = 0.0
|
||||
bus/3/send = &"Master"
|
||||
184
rougelikeaboutmechs/core/gamemanager.gd
Normal file
184
rougelikeaboutmechs/core/gamemanager.gd
Normal file
@@ -0,0 +1,184 @@
|
||||
extends Node
|
||||
class_name GameManager
|
||||
|
||||
## Use this when you have only one level
|
||||
@export var main_level: PackedScene
|
||||
## Whether the mouse should be captured while in a level
|
||||
@export var is_mouse_captured_in_level: bool = true
|
||||
|
||||
@export_subgroup("Level Loading")
|
||||
## Whether your game contains multiple levels.
|
||||
## Uncheck if you only have one "Level" in your game
|
||||
## If disabled, no level select option will be given in the title screen
|
||||
@export var has_multiple_levels: bool = true
|
||||
## The number of the highest level. For 1 Level this is 1
|
||||
@export var max_level: int = 0
|
||||
## Formatable Strig pointing to
|
||||
@export var level_location = "res://levels/level_%s.tscn"
|
||||
|
||||
@onready var pause_menu: Control = %PauseMenu
|
||||
@onready var menu_layer: CanvasLayer = %MenuLayer
|
||||
|
||||
var level = 0
|
||||
var completed_levels: Array[bool] = []
|
||||
var current_level_node: Node
|
||||
|
||||
func _ready() -> void:
|
||||
Global.set_game_manager(self)
|
||||
DebugGlobal.debug_label = %DebugLabel
|
||||
for i in range(max_level):
|
||||
completed_levels.append(false)
|
||||
|
||||
# Settings
|
||||
var user_settings = UserDefinedSettings.new()
|
||||
user_settings._register_settings()
|
||||
Settings.load_config()
|
||||
|
||||
# Connect to InputManager
|
||||
InputManager.game_pause.connect(pause)
|
||||
InputManager.game_unpause.connect(resume)
|
||||
InputManager.capture_mouse_ingame = is_mouse_captured_in_level
|
||||
InputManager.set_is_in_game(false)
|
||||
InputManager.set_is_paused(false)
|
||||
|
||||
_show_title_screen()
|
||||
|
||||
func _start_game() -> void:
|
||||
level = 0
|
||||
_show_controls()
|
||||
|
||||
#region Pausing
|
||||
|
||||
func pause():
|
||||
InputManager.set_is_paused(true)
|
||||
move_child(menu_layer, -1)
|
||||
pause_menu.move_to_front()
|
||||
pause_menu.show()
|
||||
get_tree().paused = true
|
||||
|
||||
func resume():
|
||||
InputManager.set_is_paused(false)
|
||||
print("resume")
|
||||
pause_menu.hide()
|
||||
pause_menu.reset()
|
||||
get_tree().paused = false
|
||||
#endregion
|
||||
|
||||
#region Level Loading
|
||||
|
||||
func _unload_current_level() -> void:
|
||||
if current_level_node != null:
|
||||
current_level_node.queue_free()
|
||||
current_level_node = null
|
||||
|
||||
func _show_main_level() -> void:
|
||||
if main_level == null:
|
||||
push_error("main_level is not set in GameManager")
|
||||
return
|
||||
|
||||
InputManager.set_is_in_game(true)
|
||||
var next_level: Node = main_level.instantiate()
|
||||
if next_level.has_signal("win"):
|
||||
next_level.win.connect(_next_level)
|
||||
if next_level.has_signal("reset"):
|
||||
next_level.reset.connect(_reload_current_level)
|
||||
add_child(next_level)
|
||||
current_level_node = next_level
|
||||
|
||||
|
||||
func _next_level() -> void:
|
||||
_unload_current_level()
|
||||
|
||||
if level < max_level and max_level > 0:
|
||||
InputManager.set_is_in_game(true)
|
||||
level += 1
|
||||
_show_level(level)
|
||||
completed_levels[level - 1] = true
|
||||
else:
|
||||
_show_win_screen()
|
||||
|
||||
func _show_level(level_nr: int) -> void:
|
||||
# Clean up previous level if it exists (when coming from level select)
|
||||
_unload_current_level()
|
||||
|
||||
InputManager.set_is_in_game(true)
|
||||
level = level_nr
|
||||
var next_level = load(level_location % str(level)).instantiate()
|
||||
if next_level.has_signal("win"):
|
||||
next_level.win.connect(_next_level)
|
||||
if next_level.has_signal("reset"):
|
||||
next_level.reset.connect(_reload_current_level)
|
||||
add_child(next_level)
|
||||
current_level_node = next_level
|
||||
|
||||
func _reload_current_level() -> void:
|
||||
_unload_current_level()
|
||||
|
||||
if has_multiple_levels:
|
||||
_show_level(level)
|
||||
else:
|
||||
_show_main_level()
|
||||
#endregion
|
||||
|
||||
#region Showing Different GUI views
|
||||
|
||||
|
||||
func _show_win_screen() -> void:
|
||||
InputManager.set_is_in_game(false)
|
||||
var win_screen: Control = load("res://ui/screens/win-screen/win_screen.tscn").instantiate()
|
||||
win_screen.tree_exited.connect(_show_title_screen)
|
||||
add_child(win_screen)
|
||||
|
||||
func _show_credits() -> void:
|
||||
var credits: Node = load("res://ui/screens/credit-screen/credit_screen.tscn").instantiate()
|
||||
credits.tree_exited.connect(_show_title_screen)
|
||||
menu_layer.add_child(credits)
|
||||
|
||||
func _show_title_screen() -> void:
|
||||
InputManager.set_is_in_game(false)
|
||||
var title_screen: Node = load("res://ui/screens/title-screen/title_screen.tscn").instantiate()
|
||||
title_screen.start_game.connect(_start_game)
|
||||
title_screen.show_credits.connect(_show_credits)
|
||||
title_screen.show_level_select.connect(_show_level_select)
|
||||
title_screen.show_settings_screen.connect(_show_settings_screen)
|
||||
title_screen.quit.connect(_quit_game)
|
||||
title_screen.show_levels(has_multiple_levels)
|
||||
menu_layer.add_child(title_screen)
|
||||
|
||||
func _show_level_select() -> void:
|
||||
var level_select: Node = load("res://ui/screens/level-select-screen/level_select.tscn").instantiate()
|
||||
level_select.start_level.connect(_show_level)
|
||||
level_select.exit.connect(_show_title_screen)
|
||||
level_select.init_buttons(max_level, completed_levels)
|
||||
menu_layer.add_child(level_select)
|
||||
|
||||
func _show_settings_screen() -> void:
|
||||
var settings_screen: Node = load("res://ui/screens/settings-screen/settings_screen.tscn").instantiate()
|
||||
settings_screen.exit.connect(_show_title_screen)
|
||||
menu_layer.add_child(settings_screen)
|
||||
|
||||
func _show_controls() -> void:
|
||||
var controls: Node = load("res://ui/screens/control-screen/control_screen.tscn").instantiate()
|
||||
if not main_level:
|
||||
controls.tree_exited.connect(_next_level)
|
||||
else:
|
||||
controls.tree_exited.connect(_show_main_level)
|
||||
menu_layer.add_child(controls)
|
||||
|
||||
func _return_to_title_screen() -> void:
|
||||
get_tree().paused = false
|
||||
InputManager.set_is_paused(false)
|
||||
InputManager.set_is_in_game(false)
|
||||
# Destroy level
|
||||
if current_level_node != null:
|
||||
current_level_node.queue_free()
|
||||
current_level_node = null
|
||||
_show_title_screen()
|
||||
#endregion
|
||||
|
||||
func _quit_game() -> void:
|
||||
get_tree().paused = false
|
||||
get_tree().quit()
|
||||
|
||||
func set_world_environment(env: Environment):
|
||||
$WorldEnvironment.environment = env
|
||||
1
rougelikeaboutmechs/core/gamemanager.gd.uid
Normal file
1
rougelikeaboutmechs/core/gamemanager.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://cluu0cgltsenj
|
||||
36
rougelikeaboutmechs/core/gamemanager.tscn
Normal file
36
rougelikeaboutmechs/core/gamemanager.tscn
Normal file
@@ -0,0 +1,36 @@
|
||||
[gd_scene format=3 uid="uid://cgu0vbr50x7di"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cluu0cgltsenj" path="res://core/gamemanager.gd" id="1_htktm"]
|
||||
[ext_resource type="PackedScene" uid="uid://bilai15byqef2" path="res://ui/screens/pause-menu/pause_menu.tscn" id="2_b2lg8"]
|
||||
[ext_resource type="Environment" uid="uid://bhb4ckqipjvu3" path="res://core/main_environment.tres" id="2_v1n10"]
|
||||
[ext_resource type="PackedScene" uid="uid://cyfvcuxi210mg" path="res://levels/main_level.tscn" id="2_xueuq"]
|
||||
[ext_resource type="Theme" uid="uid://hheneshfv1b2" path="res://ui/themes/your_theme.tres" id="3_8qpx4"]
|
||||
|
||||
[node name="Gamemanager" type="Node" unique_id=1050225795]
|
||||
process_mode = 3
|
||||
script = ExtResource("1_htktm")
|
||||
main_level = ExtResource("2_xueuq")
|
||||
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=224925465]
|
||||
environment = ExtResource("2_v1n10")
|
||||
|
||||
[node name="MenuLayer" type="CanvasLayer" parent="." unique_id=1393391734]
|
||||
unique_name_in_owner = true
|
||||
|
||||
[node name="DebugLabel" type="Label" parent="MenuLayer" unique_id=2133776147]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
offset_left = 23.0
|
||||
offset_top = 16.0
|
||||
offset_right = 600.0
|
||||
offset_bottom = 308.0
|
||||
theme = ExtResource("3_8qpx4")
|
||||
|
||||
[node name="PauseMenu" parent="MenuLayer" unique_id=912678162 instance=ExtResource("2_b2lg8")]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
theme = ExtResource("3_8qpx4")
|
||||
|
||||
[connection signal="continue_btn_pressed" from="MenuLayer/PauseMenu" to="." method="resume"]
|
||||
[connection signal="exit_game_btn_pressed" from="MenuLayer/PauseMenu" to="." method="_quit_game"]
|
||||
[connection signal="exit_to_main_menu_btn_pressed" from="MenuLayer/PauseMenu" to="." method="_return_to_title_screen"]
|
||||
15
rougelikeaboutmechs/core/main_environment.tres
Normal file
15
rougelikeaboutmechs/core/main_environment.tres
Normal file
@@ -0,0 +1,15 @@
|
||||
[gd_resource type="Environment" format=3 uid="uid://bhb4ckqipjvu3"]
|
||||
|
||||
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_e3rlx"]
|
||||
sky_top_color = Color(0.218052, 0.202335, 0.225589, 1)
|
||||
sky_horizon_color = Color(0.227003, 0.231896, 0.228184, 1)
|
||||
ground_bottom_color = Color(0.167509, 0.160179, 0.160062, 1)
|
||||
ground_horizon_color = Color(0.175353, 0.180521, 0.188678, 1)
|
||||
|
||||
[sub_resource type="Sky" id="Sky_n0kbt"]
|
||||
sky_material = SubResource("ProceduralSkyMaterial_e3rlx")
|
||||
|
||||
[resource]
|
||||
sky = SubResource("Sky_n0kbt")
|
||||
tonemap_mode = 3
|
||||
glow_enabled = true
|
||||
Reference in New Issue
Block a user