This repository has been archived by the owner on Sep 22, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 19
/
Copy pathMain_Menu.gd
95 lines (77 loc) · 3.91 KB
/
Main_Menu.gd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
extends Control
# NOTE: The code here is only briefly explained in the tutorial, nor
# does the code have very many comments!
# This is because it does not really relate to making a FPS.
var start_menu
var level_select_menu
var options_menu
export (String, FILE) var testing_area_scene
export (String, FILE) var space_level_scene
export (String, FILE) var ruins_level_scene
func _ready():
start_menu = $Start_Menu
level_select_menu = $Level_Select_Menu
options_menu = $Options_Menu
# Connect all of the start menu buttons
$Start_Menu/Button_Start.connect("pressed", self, "start_menu_button_pressed", ["start"])
$Start_Menu/Button_Open_Godot.connect("pressed", self, "start_menu_button_pressed", ["open_godot"])
$Start_Menu/Button_Options.connect("pressed", self, "start_menu_button_pressed", ["options"])
$Start_Menu/Button_Quit.connect("pressed", self, "start_menu_button_pressed", ["quit"])
# Connect all of the level select menu buttons
$Level_Select_Menu/Button_Back.connect("pressed", self, "level_select_menu_button_pressed", ["back"])
$Level_Select_Menu/Button_Level_Testing_Area.connect("pressed", self, "level_select_menu_button_pressed", ["testing_scene"])
$Level_Select_Menu/Button_Level_Space.connect("pressed", self, "level_select_menu_button_pressed", ["space_level"])
$Level_Select_Menu/Button_Level_Ruins.connect("pressed", self, "level_select_menu_button_pressed", ["ruins_level"])
# Connect all of the options menu buttons
$Options_Menu/Button_Back.connect("pressed", self, "options_menu_button_pressed", ["back"])
$Options_Menu/Button_Fullscreen.connect("pressed", self, "options_menu_button_pressed", ["fullscreen"])
$Options_Menu/Check_Button_VSync.connect("pressed", self, "options_menu_button_pressed", ["vsync"])
$Options_Menu/Check_Button_Debug.connect("pressed", self, "options_menu_button_pressed", ["debug"])
# Some times when returning to the title screen the mouse is still captured even though it shouldn't be.
# To prevent this from breaking the game, we just set it here too
Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
# Get the globals singleton
var globals = get_node("/root/Globals")
# Get the mouse and joypad sensitivity
$Options_Menu/HSlider_Mouse_Sensitivity.value = globals.mouse_sensitivity
$Options_Menu/HSlider_Joypad_Sensitivity.value = globals.joypad_sensitivity
func start_menu_button_pressed(button_name):
if button_name == "start":
level_select_menu.visible = true
start_menu.visible = false
elif button_name == "open_godot":
OS.shell_open("https://godotengine.org/")
elif button_name == "options":
options_menu.visible = true
start_menu.visible = false
elif button_name == "quit":
get_tree().quit()
func level_select_menu_button_pressed(button_name):
if button_name == "back":
start_menu.visible = true
level_select_menu.visible = false
elif button_name == "testing_scene":
set_mouse_and_joypad_sensitivity()
get_node("/root/Globals").load_new_scene(testing_area_scene)
elif button_name == "space_level":
set_mouse_and_joypad_sensitivity()
get_node("/root/Globals").load_new_scene(space_level_scene)
elif button_name == "ruins_level":
set_mouse_and_joypad_sensitivity()
get_node("/root/Globals").load_new_scene(ruins_level_scene)
func options_menu_button_pressed(button_name):
if button_name == "back":
start_menu.visible = true
options_menu.visible = false
elif button_name == "fullscreen":
OS.window_fullscreen = !OS.window_fullscreen
elif button_name == "vsync":
OS.vsync_enabled = $Options_Menu/Check_Button_VSync.pressed
elif button_name == "debug":
get_node("/root/Globals").set_debug_display($Options_Menu/Check_Button_Debug.pressed)
func set_mouse_and_joypad_sensitivity():
# Get the globals singleton
var globals = get_node("/root/Globals")
# Set the mouse and joypad sensitivity
globals.mouse_sensitivity = $Options_Menu/HSlider_Mouse_Sensitivity.value
globals.joypad_sensitivity = $Options_Menu/HSlider_Joypad_Sensitivity.value