Browse Source

Move level select to lobby, [WIP] fix start_game

master
Luna 7 years ago
parent
commit
8d7e4e2352
4 changed files with 83 additions and 54 deletions
  1. +7
    -34
      scenes/custom_game.tscn
  2. +56
    -8
      scenes/lobby.tscn
  3. +10
    -1
      scripts/lobby.gd
  4. +10
    -11
      scripts/networking.gd

+ 7
- 34
scenes/custom_game.tscn View File

@ -71,9 +71,9 @@ anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_left = 73.0
margin_top = 253.0
margin_top = 195.0
margin_right = 366.0
margin_bottom = 310.0
margin_bottom = 252.0
rect_pivot_offset = Vector2( 0, 0 )
focus_mode = 2
mouse_filter = 0
@ -88,34 +88,7 @@ text = "Host Game"
flat = false
align = 1
[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 = 74.0
margin_top = 197.0
margin_right = 364.0
margin_bottom = 232.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="Client" type="Button" parent="." index="4"]
[node name="Client" type="Button" parent="." index="3"]
anchor_left = 0.0
anchor_top = 0.0
@ -139,7 +112,7 @@ text = "Join Game"
flat = false
align = 1
[node name="IPLabel" type="Label" parent="." index="5"]
[node name="IPLabel" type="Label" parent="." index="4"]
anchor_left = 0.0
anchor_top = 0.0
@ -159,7 +132,7 @@ percent_visible = 1.0
lines_skipped = 0
max_lines_visible = -1
[node name="IP" type="TextEdit" parent="." index="6"]
[node name="IP" type="TextEdit" parent="." index="5"]
anchor_left = 0.0
anchor_top = 0.0
@ -192,7 +165,7 @@ caret_blink = false
caret_blink_speed = 0.65
caret_moving_by_right_click = true
[node name="Label2" type="Label" parent="." index="7"]
[node name="Label2" type="Label" parent="." index="6"]
anchor_left = 0.0
anchor_top = 0.0
@ -212,7 +185,7 @@ percent_visible = 1.0
lines_skipped = 0
max_lines_visible = -1
[node name="Label3" type="Label" parent="." index="8"]
[node name="Label3" type="Label" parent="." index="7"]
anchor_left = 0.0
anchor_top = 0.0


+ 56
- 8
scenes/lobby.tscn View File

@ -42,10 +42,10 @@ script = ExtResource( 2 )
[node name="HeroSelect" parent="." index="0" instance=ExtResource( 3 )]
editor/display_folded = true
margin_left = 28.0
margin_top = 98.0
margin_right = 28.0
margin_bottom = 98.0
margin_left = 30.0
margin_top = 69.0
margin_right = 30.0
margin_bottom = 69.0
color = Color( 0.097229, 0.104696, 0.105469, 0 )
[node name="Hero" parent="HeroSelect" index="0"]
@ -94,10 +94,10 @@ anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_left = 42.0
margin_top = 423.0
margin_right = 383.0
margin_bottom = 456.0
margin_left = 44.0
margin_top = 394.0
margin_right = 385.0
margin_bottom = 427.0
rect_pivot_offset = Vector2( 0, 0 )
focus_mode = 2
mouse_filter = 0
@ -221,5 +221,53 @@ 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"]

+ 10
- 1
scripts/lobby.gd View File

@ -11,15 +11,20 @@ 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()
onready var networking = preload("res://scripts/networking.gd").new()
var matchmaker_tcp
func _ready():
add_child(matchmaking)
add_child(networking)
if get_tree().is_network_server():
get_node("LevelSelect").show()
get_node("Username").connect("text_changed", self, "resend_name")
get_node("StartGame").connect("pressed", self, "start_game")
get_node("StartGame").connect("pressed", self, "_start_game")
# get_node("CustomGame/LevelSelect").connect("item_selected", self, "select_level") TODO
func collect_info():
@ -72,3 +77,7 @@ sync func assign_team(peer, is_right_team):
get_node("PlayerSettings/Team").set_text("Left Team")
render_player_list()
func _start_game():
var level = 2 # TODO
networking.rpc_id(1, "start_game", level)

+ 10
- 11
scripts/networking.gd View File

@ -2,7 +2,7 @@ extends Node
onready var matchmaking = preload("res://scripts/matchmaking.gd").new()
var players = []
var players = {}
# TODO: Should we abstract server so variables like this aren't cluttering everything up?
var players_done = []
var begun = false
@ -13,9 +13,9 @@ var my_info = {}
func _ready():
add_child(matchmaking)
get_tree().connect("network_peer_connected", self, "_player_connected")
get_tree().connect("network_peer_disconnected", self, "_player_disconnected")
get_tree().connect("connected_to_server", self, "_connected_ok")
# get_tree().connect("network_peer_connected", self, "connect_player")
get_tree().connect("network_peer_disconnected", self, "disconnect_player")
get_tree().connect("connected_to_server", self, "_on_connect")
# func connect_global_server(): TODO
# ip = global_server_ip
@ -61,24 +61,23 @@ func start_server(port):
# if "start_game" in my_info and my_info.start_game: TODO
# start_game()
# sync func start_game(): TODO
# my_info.level = get_node("CustomGame/LevelSelect").get_selected_id() TODO
# rpc("_pre_configure_game", my_info.level)
sync func start_game(level):
rpc("_pre_configure_game", level)
func disconnect_player(id):
if get_tree().is_network_server():
rpc("unregister_player", id)
# call_deferred("render_player_list") TODO
func connect_player():
rpc("_register_player", get_tree().get_network_unique_id(), {})
func _on_connect():
rpc("_register_player", get_tree().get_network_unique_id(), my_info)
if util.args.get_value("-start-game"):
rpc_id(1, "start_game")
# is_connected = true TODO
remote func _register_player(new_peer, info):
players[new_peer] = info
render_player_list()
# render_player_list() TODO
if (get_tree().is_network_server()):
var right_team_count = 0
# Send current players' info to new player
@ -138,7 +137,7 @@ sync func _pre_configure_game(level):
# Load all players (including self)
for p in players:
players[p].level = level
spawn_player(p)
_spawn_player(p)
rpc_id(1, "done_preconfiguring", self_peer_id)


Loading…
Cancel
Save