Browse Source

[WIP] Add back matchmaking!

One problem remains: start_game behaves the same whether a game has
started or not.
master
Luna 7 years ago
parent
commit
996e4e24cc
5 changed files with 19 additions and 16 deletions
  1. +0
    -5
      scripts/custom_game.gd
  2. +1
    -1
      scripts/lobby.gd
  3. +1
    -1
      scripts/matchmaking.gd
  4. +4
    -5
      scripts/menu.gd
  5. +13
    -4
      scripts/networking.gd

+ 0
- 5
scripts/custom_game.gd View File

@ -7,13 +7,8 @@ func _ready():
func _start_server():
# Custom Game can assume we're playing as well
networking.start_server()
_show_lobby()
func _start_client():
var ip = get_node("IP").text
networking.start_client(ip)
_show_lobby()
func _show_lobby():
get_tree().change_scene("res://scenes/lobby.tscn")

+ 1
- 1
scripts/lobby.gd View File

@ -45,7 +45,7 @@ func _connected():
networking.start_game()
func _set_level(level):
networking.set_info("level", level)
networking.level = level
func _set_spectating(is_spectating):
networking.set_info("spectating", is_spectating)


+ 1
- 1
scripts/matchmaking.gd View File

@ -80,7 +80,7 @@ func queue(netid):
# #
func add_to_game(netid, port):
lobby.rpc_id(netid, "_client_init", port)
networking.rpc_id(netid, "reconnect", port)
func skirmish_to_game(port, count=1):
for i in range(count):


+ 4
- 5
scripts/menu.gd View File

@ -13,7 +13,8 @@ func _gui_setup():
get_node("Center/Singleplayer").connect("pressed", self, "_singleplayer")
func _find_game():
var ip = networking.global_server_ip
# var ip = networking.global_server_ip
var ip = util.args.get_value("-ip")
var port = networking.matchmaking.MATCHMAKING_PORT
networking.start_client(ip, port)
@ -42,12 +43,10 @@ func _arg_actions():
# my_info.record = true
if o.get_value("-server"):
networking.start_server()
get_tree().change_scene("res://scenes/lobby.tscn")
# if o.get_value("-matchmaker"):
# call_deferred("_matchmaker_init")
if o.get_value("-matchmaker"):
networking.matchmaking.start_matchmaker()
if o.get_value("-client"):
networking.start_client()
get_tree().change_scene("res://scenes/lobby.tscn")
if o.get_value("-singleplayer"):
_singleplayer()
if o.get_value('-h'):


+ 13
- 4
scripts/networking.gd View File

@ -11,6 +11,8 @@ var global_server_ip = "nv.cosinegaming.com"
var matchmaker_tcp
var right_team_next = false
var level
signal info_updated
func _ready():
@ -34,6 +36,12 @@ func start_client(ip="", port=0):
print("Connecting to " + ip + ":" + str(port))
peer.create_client(ip, port)
get_tree().set_network_peer(peer)
get_tree().change_scene("res://scenes/lobby.tscn")
remote func reconnect(port):
# Reset previously known players
players = {}
start_client("", port)
func _connect_to_matchmaker(game_port):
var matchmaker_peer = StreamPeerTCP.new()
@ -55,9 +63,9 @@ func start_server(port=0):
register_player(get_tree().get_network_unique_id())
if util.args.get_value("-silent"):
set_info("spectating", true)
get_tree().change_scene("res://scenes/lobby.tscn")
master func _start_game():
var level = players[1].level # TODO: Can we guarantee this will have level?
rpc("_pre_configure_game", level)
func start_game():
@ -108,8 +116,9 @@ sync func _set_info(key, value, peer=0):
if peer == 0:
# Was self. See https://github.com/godotengine/godot/issues/19026
peer = get_tree().get_network_unique_id()
players[peer][key] = value
emit_signal("info_updated")
if players.has(peer):
players[peer][key] = value
emit_signal("info_updated")
func set_info(key, value, peer=0):
rpc("_set_info", str(key), value, peer)
@ -140,7 +149,6 @@ sync func _pre_configure_game(level):
# Load all players (including self)
for p in players:
players[p].level = level
if not (players[p].has("spectating") and players[p].spectating):
_spawn_player(p)
@ -149,6 +157,7 @@ sync func _pre_configure_game(level):
sync func _done_preconfiguring(who):
players_done.append(who)
if players_done.size() == players.size():
print("done")
# We call deferred in case singleplayer has placing the player in queue still
call_deferred("rpc", "_post_configure_game")


Loading…
Cancel
Save