Browse Source

[WIP] Add spectator button

master
Luna 7 years ago
parent
commit
1868d03be0
3 changed files with 96 additions and 91 deletions
  1. +81
    -58
      scenes/lobby.tscn
  2. +6
    -26
      scripts/lobby.gd
  3. +9
    -7
      scripts/networking.gd

+ 81
- 58
scenes/lobby.tscn View File

@ -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"]

+ 6
- 26
scripts/lobby.gd View File

@ -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


+ 9
- 7
scripts/networking.gd View File

@ -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)


Loading…
Cancel
Save