diff --git a/scenes/lobby.tscn b/scenes/lobby.tscn index 1399c46..9eb171b 100644 --- a/scenes/lobby.tscn +++ b/scenes/lobby.tscn @@ -23,7 +23,7 @@ use_mipmaps = false use_filter = false font_data = SubResource( 2 ) -[node name="Lobby" type="Control"] +[node name="Lobby" type="Control" index="0"] anchor_left = 0.0 anchor_top = 0.0 @@ -94,10 +94,10 @@ anchor_left = 0.0 anchor_top = 0.0 anchor_right = 0.0 anchor_bottom = 0.0 -margin_left = 44.0 -margin_top = 394.0 -margin_right = 385.0 -margin_bottom = 427.0 +margin_left = 43.0 +margin_top = 348.0 +margin_right = 384.0 +margin_bottom = 381.0 rect_pivot_offset = Vector2( 0, 0 ) focus_mode = 2 mouse_filter = 0 @@ -121,7 +121,78 @@ caret_blink = false caret_blink_speed = 0.65 caret_moving_by_right_click = true -[node name="TeamLabel" type="Label" parent="." index="2"] +[node name="Spectating" type="CheckButton" parent="." index="2"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_left = 36.0 +margin_top = 396.0 +margin_right = 226.0 +margin_bottom = 436.0 +rect_pivot_offset = Vector2( 0, 0 ) +focus_mode = 2 +mouse_filter = 0 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 1 +toggle_mode = true +enabled_focus_mode = 2 +shortcut = null +group = null +text = "Spectating" +flat = false +align = 0 + +[node name="LevelSelect" type="OptionButton" parent="." index="3"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_left = 45.0 +margin_top = 486.0 +margin_right = 411.0 +margin_bottom = 527.0 +rect_pivot_offset = Vector2( 0, 0 ) +focus_mode = 2 +mouse_filter = 0 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 1 +toggle_mode = false +action_mode = 0 +enabled_focus_mode = 2 +shortcut = null +group = null +text = "Platform map" +flat = false +align = 0 +selected = 0 +items = [ "Platform map", null, false, 0, null, "City-like thing", null, false, 1, null, "Slide", null, false, 2, null ] + +[node name="Label" type="Label" parent="LevelSelect" index="1"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_left = -5.0 +margin_top = -37.0 +margin_right = 39.0 +margin_bottom = -15.0 +rect_pivot_offset = Vector2( 0, 0 ) +mouse_filter = 2 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 4 +text = "Map:" +percent_visible = 1.0 +lines_skipped = 0 +max_lines_visible = -1 + +[node name="TeamLabel" type="Label" parent="." index="4"] anchor_left = 0.0 anchor_top = 0.0 @@ -141,7 +212,7 @@ percent_visible = 1.0 lines_skipped = 0 max_lines_visible = -1 -[node name="Team" type="Label" parent="." index="3"] +[node name="Team" type="Label" parent="." index="5"] anchor_left = 0.0 anchor_top = 0.0 @@ -160,7 +231,7 @@ percent_visible = 1.0 lines_skipped = 0 max_lines_visible = -1 -[node name="PlayerList" type="Label" parent="." index="4"] +[node name="PlayerList" type="Label" parent="." index="6"] anchor_left = 0.5 anchor_top = 0.5 @@ -181,7 +252,7 @@ percent_visible = 1.0 lines_skipped = 0 max_lines_visible = -1 -[node name="StartGame" type="Button" parent="." index="5"] +[node name="StartGame" type="Button" parent="." index="7"] anchor_left = 0.0 anchor_top = 0.0 @@ -205,7 +276,7 @@ text = "Ready!" flat = false align = 1 -[node name="VSeparator" type="VSeparator" parent="." index="6"] +[node name="VSeparator" type="VSeparator" parent="." index="8"] anchor_left = 0.0 anchor_top = 0.0 @@ -221,53 +292,5 @@ mouse_default_cursor_shape = 0 size_flags_horizontal = 1 size_flags_vertical = 1 -[node name="LevelSelect" type="OptionButton" parent="." index="7"] - -visible = false -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_left = 45.0 -margin_top = 486.0 -margin_right = 411.0 -margin_bottom = 527.0 -rect_pivot_offset = Vector2( 0, 0 ) -focus_mode = 2 -mouse_filter = 0 -mouse_default_cursor_shape = 0 -size_flags_horizontal = 1 -size_flags_vertical = 1 -toggle_mode = false -action_mode = 0 -enabled_focus_mode = 2 -shortcut = null -group = null -text = "Platform map" -flat = false -align = 0 -selected = 0 -items = [ "Platform map", null, false, 0, null, "City-like thing", null, false, 1, null, "Slide", null, false, 2, null ] - -[node name="Label" type="Label" parent="LevelSelect" index="1"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_left = -5.0 -margin_top = -37.0 -margin_right = 39.0 -margin_bottom = -15.0 -rect_pivot_offset = Vector2( 0, 0 ) -mouse_filter = 2 -mouse_default_cursor_shape = 0 -size_flags_horizontal = 1 -size_flags_vertical = 4 -text = "Map:" -percent_visible = 1.0 -lines_skipped = 0 -max_lines_visible = -1 - [editable path="HeroSelect"] diff --git a/scripts/lobby.gd b/scripts/lobby.gd index 906b5f4..f183605 100644 --- a/scripts/lobby.gd +++ b/scripts/lobby.gd @@ -2,36 +2,17 @@ extends Control var port = null # Defined by command-line argument with default -# var my_info = {} -remote var players = {} -var global_server_ip = "nv.cosinegaming.com" -var ip = null -var players_done = [] -var is_connected = false # Technically this can be done with ENetcetera but it's easier this way - -onready var matchmaking = preload("res://scripts/matchmaking.gd").new() - -var matchmaker_tcp - -var right_team_next = false - func _ready(): - add_child(matchmaking) - if get_tree().is_network_server(): get_node("LevelSelect").show() - get_tree().connect("network_peer_connected", self, "_register_player") - get_node("Username").connect("text_changed", self, "_send_name") get_node("StartGame").connect("pressed", self, "_start_game") - # get_node("CustomGame/LevelSelect").connect("item_selected", self, "select_level") TODO - _send_name() -func _register_player(peer): - players[peer] = {} - if is_network_server(): - rset(peer, "players", players) + get_node("Spectating").pressed = util.args.get_value("-silent") + get_node("Spectating").connect("pressed", self, "_change_spectating") # TODO + # get_node("CustomGame/LevelSelect").connect("item_selected", self, "select_level") TODO + # _send_name() func _collect_info(): var my_id = get_tree().get_network_unique_id() @@ -55,9 +36,8 @@ sync func set_hero(peer, hero): render_player_list() func _send_name(): - if is_connected: - var name = get_node("Username").text - rpc("_set_name", get_tree().get_network_unique_id(), name) + var name = get_node("Username").text + rpc("_set_name", get_tree().get_network_unique_id(), name) sync func _set_name(peer, name): networking.players[peer].username = name diff --git a/scripts/networking.gd b/scripts/networking.gd index 28bf2a8..068e596 100644 --- a/scripts/networking.gd +++ b/scripts/networking.gd @@ -2,16 +2,20 @@ extends Node onready var matchmaking = preload("res://scripts/matchmaking.gd").new() -remote var players = [] -# TODO: Should we abstract server so variables like this aren't cluttering everything up? +remote var players = {} var players_done = [] +var is_connected = false # Technically this can be done with ENetcetera but it's easier this way +# TODO: Should we abstract server so variables like this aren't cluttering everything up? var begun = false # TODO: This needs to go. It carries nothing of value # ALL server negotiation should happen before ANY data is investigated (in lobby) var my_info = { - hero: 0, - username: "Nickname", + "hero": 0, + "username": "Nickname", } +var global_server_ip = "nv.cosinegaming.com" +var matchmaker_tcp +var right_team_next = false func _ready(): add_child(matchmaking) @@ -56,8 +60,6 @@ func start_server(port, server_playing=false): get_tree().set_network_peer(peer) # As soon as we're listening, let the matchmaker know _connect_to_matchmaker(port) - if server_playing: - players[1] = my_info # is_connected = true TODO # get_node("CustomGame/Server").set_text("Serving!") # get_node("JoinedGameLobby").show() @@ -80,7 +82,7 @@ func disconnect_player(id): # is_connected = true TODO remote func _register_player(new_peer): - players.push(new_peer) + players[new_peer] = {} if get_tree().is_network_server(): # I tell new player about all the existing people rset_id(new_peer, "players", players)