-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMain.gd
68 lines (51 loc) · 1.47 KB
/
Main.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
extends Node
# Only used in HTML5 mode
var _on_window_resize_callback_ref = null
onready var current_level = $Menu
func _ready():
if OS.get_name() == "HTML5":
_on_window_resize_callback_ref = JavaScript.create_callback(self, "_on_window_resize")
var window = JavaScript.get_interface("window")
window.onresize = _on_window_resize_callback_ref
_web_resize_window()
_connect_change_level(current_level)
func _on_window_resize(_args):
_web_resize_window()
func _web_resize_window():
if OS.window_fullscreen:
return
var width = JavaScript.eval(
"""
var wrapper = document.getElementById(window.JamJar.CanvasWrapperID);
wrapper.clientWidth;
"""
)
var height = JavaScript.eval(
"""
var wrapper = document.getElementById(window.JamJar.CanvasWrapperID);
wrapper.clientHeight;
"""
)
OS.set_window_size(Vector2(width, height))
func _on_level_changed(level_name, args):
var next_level
match level_name:
"play_singleplayer":
next_level = _load_level("Singleplayer")
"play_multiplayer":
next_level = _load_level("Multiplayer")
"menu":
next_level = _load_level("Menu")
"game_over":
next_level = _load_level("GameOver")
next_level.init(args[0])
_:
return
add_child(next_level)
_connect_change_level(next_level)
current_level.queue_free()
current_level = next_level
func _load_level(name):
return load("res://levels/" + name + ".tscn").instance()
func _connect_change_level(level):
level.connect("level_changed", self, "_on_level_changed")