Browse Source

Add level select functionality; remove dead code

master
Luna 7 years ago
parent
commit
dc095e66fc
4 changed files with 35 additions and 53 deletions
  1. +25
    -20
      scripts/lobby.gd
  2. +0
    -2
      scripts/menu.gd
  3. +9
    -30
      scripts/networking.gd
  4. +1
    -1
      util/start-multiple.sh

+ 25
- 20
scripts/lobby.gd View File

@ -3,34 +3,45 @@ extends Control
var port = null # Defined by command-line argument with default
onready var hero_select = get_node("HeroSelect/Hero")
onready var level_select = get_node("LevelSelect")
func _ready():
if get_tree().is_network_server():
get_node("LevelSelect").show()
else:
get_node("LevelSelect").hide()
get_node("Username").connect("text_changed", self, "_send_name")
get_node("StartGame").connect("pressed", self, "_start_game")
get_node("StartGame").connect("pressed", networking, "start_game")
var spectating = util.args.get_value("-silent")
get_node("Spectating").pressed = spectating
#
get_node("Spectating").connect("toggled", networking, "set_spectating") # TODO
# get_node("CustomGame/LevelSelect").connect("item_selected", self, "select_level") TODO
# _send_name()
# hero_select.set_hero(0)
get_node("Spectating").connect("toggled", networking, "set_spectating")
if get_tree().is_network_server():
# We put level in our players dict because it's automatically broadcast to other players
var level = util.args.get_value("-level")
if level == "r":
level = randi() % level_select.get_item_count()
_set_level(level)
level_select.show()
level_select.select(level)
level_select.connect("item_selected", self, "_set_level")
else:
level_select.hide()
networking.connect("info_updated", self, "render_player_list")
get_tree().connect("connected_to_server", self, "_send_settings")
get_tree().connect("connected_to_server", self, "_connected")
if get_tree().is_network_server():
_send_settings()
_connected()
func _send_settings():
print("sending")
func _connected():
_send_name()
hero_select.random_hero()
if util.args.get_value("-start-game"):
networking.start_game()
func _set_level(level):
networking.set_info("level", level)
sync func set_hero(peer, hero):
networking.players[peer].hero = hero
render_player_list()
@ -40,7 +51,6 @@ func _send_name():
networking.set_info("username", name)
func render_player_list():
print(JSON.print(networking.players))
var list = ""
var hero_names = hero_select.hero_names
for p in networking.players:
@ -53,8 +63,3 @@ func render_player_list():
list += "\n"
get_node("PlayerList").set_text(list)
func _start_game():
_collect_info()
var level = 2 # TODO
networking.rpc_id(1, "start_game", level)

+ 0
- 2
scripts/menu.gd View File

@ -56,8 +56,6 @@ func _arg_actions():
if o.get_value("-client"):
networking.start_client()
get_tree().change_scene("res://scenes/lobby.tscn")
if o.get_value("-start-game"):
networking.call_deferred("start_game")
# if o.get_value("-singleplayer"):
# networking.call_deferred("start_singleplayer")
if o.get_value('-h'):


+ 9
- 30
scripts/networking.gd View File

@ -4,10 +4,8 @@ onready var matchmaking = preload("res://scripts/matchmaking.gd").new()
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 global_server_ip = "nv.cosinegaming.com"
var matchmaker_tcp
@ -27,7 +25,6 @@ func _ready():
# _client_init()
func start_client(ip="", port=0):
# collect_info() TODO
if not ip:
ip = util.args.get_value("-ip")
if not port:
@ -36,7 +33,6 @@ func start_client(ip="", port=0):
print("Connecting to " + ip + ":" + str(port))
peer.create_client(ip, port)
get_tree().set_network_peer(peer)
# get_node("CustomGame/Client").set_text("Clienting!") TODO
# func singleplayer_init(): TODO
# # collect_info() TODO
@ -55,7 +51,6 @@ func _connect_to_matchmaker(game_port):
matchmaker_tcp.put_var(game_port)
func start_server(port=0):
# collect_info() TODO
if not port:
port = util.args.get_value("-port")
var peer = NetworkedMultiplayerENet.new()
@ -66,26 +61,15 @@ func start_server(port=0):
_connect_to_matchmaker(port)
if not util.args.get_value("-silent"):
register_player(get_tree().get_network_unique_id())
# is_connected = true TODO
# get_node("CustomGame/Server").set_text("Serving!")
# get_node("JoinedGameLobby").show()
if util.args.get_value("-start-game"):
start_game()
sync func start_game(level):
master func _start_game():
var level = players[1].level # TODO: Can we guarantee this will have level?
rpc("_pre_configure_game", level)
# 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 _set_players(json):
# print(json)
# players = JSON.parse(json).result
# print("setted")
# print(JSON.print(players))
func start_game():
rpc_id(1, "_start_game")
func send_all_info(new_peer):
for p in players:
@ -102,22 +86,18 @@ remote func register_player(new_peer):
if get_tree().is_network_server():
# I tell new player about all the existing people
send_all_info(new_peer)
# rset_id(new_peer, "players", players)
emit_signal("info_updated")
# render_player_list() TODO
# var right_team_count = 0
# Send current players' info to new player
# Send new player, old player's info
# rpc_id(new_peer, "_register_player", old_peer, players[old_peer])
# if old_peer != new_peer:
# # We need to assign team later, so count current
# if players[old_peer].is_right_team:
# right_team_count += 1
# if begun: TODO this should belong to lobby
# if begun: TODO this should belong to lobby?
# rpc_id(old_peer, "_spawn_player", new_peer)
# rpc_id(old_peer, "_begin_player_deferred", new_peer) # Spawning is deferred
# var assign_right_team = right_team_count * 2 < players.size()
# rpc("assign_team", new_peer, assign_right_team)
# set_info("is_right_team", assign_right_team, new_peer)
# if not begun and players.size() == matchmaking.GAME_SIZE:
# start_game()
# if begun:
@ -166,7 +146,6 @@ sync func _spawn_player(p):
get_node("/root/Level/Players").call_deferred("add_child", player)
sync func _pre_configure_game(level):
level = 2 # TODO: Remove this!!
begun = true
# my_info.level = level # Remember the level for future player registration
@ -174,12 +153,12 @@ sync func _pre_configure_game(level):
# Remove the interface so as to not fuck with things
# But we still need the lobby alive to deal with networking!
for element in get_node("/root/Lobby").get_children():
element.queue_free()
# for element in get_node("/root/Lobby").get_children():
# element.queue_free()
get_node("/root/Lobby").hide()
var world = load("res://scenes/levels/%d.tscn" % level).instance()
get_node("/root").add_child(world)
print("added level!")
# Load all players (including self)
for p in players:


+ 1
- 1
util/start-multiple.sh View File

@ -10,5 +10,5 @@ fi
util/open-multiple.sh $count "$@"
sleep 1
godot -start-game "$@" &
godot -client -start-game "$@" &

Loading…
Cancel
Save