From 116a5da6998a6ca2638343cfbae635d2ba0bfb99 Mon Sep 17 00:00:00 2001 From: Luna Date: Sun, 25 Feb 2018 02:11:06 -0500 Subject: [PATCH] Only get_master_player when not headless --- scripts/heroes/1_wall.gd | 6 +++++- scripts/lobby.gd | 35 +++++++++++++++++++++-------------- scripts/objective.gd | 15 +++++++++------ scripts/player.gd | 6 +----- scripts/player_name.gd | 21 ++++++++++++--------- scripts/util.gd | 12 ++++++++++-- 6 files changed, 58 insertions(+), 37 deletions(-) diff --git a/scripts/heroes/1_wall.gd b/scripts/heroes/1_wall.gd index c8f7475..f359e33 100644 --- a/scripts/heroes/1_wall.gd +++ b/scripts/heroes/1_wall.gd @@ -14,7 +14,11 @@ func init(maker): player.connect("body_exited", self, "count_bodies", [player, -1]) var master_player = util.get_master_player() - var friendly = maker.player_info.is_right_team == master_player.player_info.is_right_team + var friendly + if master_player: + friendly = maker.player_info.is_right_team == master_player.player_info.is_right_team + else: + friendly = true # Doesn't matter, we're headless var color = maker.friend_color if friendly else maker.enemy_color var mat = SpatialMaterial.new() diff --git a/scripts/lobby.gd b/scripts/lobby.gd index e715538..cb6fd6f 100644 --- a/scripts/lobby.gd +++ b/scripts/lobby.gd @@ -10,6 +10,7 @@ var player_info = {} var my_info = {} var begun = false var server_playing = true +var global_server_ip = "216.195.175.190" func setup_options(): var opts = Options.new() @@ -40,6 +41,7 @@ func _ready(): randomize() + get_node("GameBrowser/Play").connect("pressed", self, "connect_global_server") get_node("PlayerSettings/HeroSelect").connect("item_selected", self, "select_hero") get_node("PlayerSettings/Username").connect("text_changed", self, "resend_name") get_node("JoinedGameLobby/StartGame").connect("pressed", self, "start_game") @@ -81,11 +83,15 @@ func _ready(): get_tree().connect("network_peer_disconnected", self, "_player_disconnected") get_tree().connect("connected_to_server", self, "_connected_ok") -func _client_init(): +func connect_global_server(): + _client_init(global_server_ip) + +func _client_init(ip=null): collect_info() var peer = NetworkedMultiplayerENet.new() - var server_ip = get_node("CustomGame/IP").get_text() - peer.create_client(server_ip, SERVER_PORT) + if not ip: + ip = get_node("CustomGame/IP").get_text() + peer.create_client(ip, SERVER_PORT) get_tree().set_network_peer(peer) get_node("CustomGame/Client").set_text("Clienting!") @@ -186,17 +192,18 @@ sync func assign_team(peer, is_right_team): render_player_list() func render_player_list(): - var list = "" - var hero_names = get_node("PlayerSettings/HeroSelect").hero_names - for p in player_info: - list += "%-15s" % player_info[p].username - list += "%-20s" % hero_names[player_info[p].hero] - if player_info[p].is_right_team: - list += "Right Team" - else: - list += "Left Team" - list += "\n" - get_node("JoinedGameLobby/PlayerList").set_text(list) + if has_node("PlayerSettings"): + var list = "" + var hero_names = get_node("PlayerSettings/HeroSelect").hero_names + for p in player_info: + list += "%-15s" % player_info[p].username + list += "%-20s" % hero_names[player_info[p].hero] + if player_info[p].is_right_team: + list += "Right Team" + else: + list += "Left Team" + list += "\n" + get_node("JoinedGameLobby/PlayerList").set_text(list) sync func start_game(): begun = true diff --git a/scripts/objective.gd b/scripts/objective.gd index 9a82243..eba755d 100644 --- a/scripts/objective.gd +++ b/scripts/objective.gd @@ -42,12 +42,15 @@ func _process(delta): # We have to do this here because we never know when the master player will actually be added if master_team_right == null: var master_player = util.get_master_player() - master_team_right = master_player.player_info.is_right_team - friend_color = master_player.friend_color - enemy_color = master_player.enemy_color - var name = "right" if master_team_right else "left" - var full_name = "res://assets/objective-%s.png" % name - get_node("MeshInstance").get_surface_material(0).albedo_texture = load(full_name) + if master_player: + master_team_right = master_player.player_info.is_right_team + friend_color = master_player.friend_color + enemy_color = master_player.enemy_color + var name = "right" if master_team_right else "left" + var full_name = "res://assets/objective-%s.png" % name + get_node("MeshInstance").get_surface_material(0).albedo_texture = load(full_name) + else: + master_team_right = true # Doesn't matter, it's all graphical and we're headless # Count the percents if active: diff --git a/scripts/player.gd b/scripts/player.gd index 494a35d..faba321 100644 --- a/scripts/player.gd +++ b/scripts/player.gd @@ -3,8 +3,6 @@ extends RigidBody -var view_sensitivity = 0.25 - # Walking speed and jumping height are defined later. var walk_speed = 0.8 # Actually acceleration; m/s/s var jump_speed = 5 # m/s @@ -157,7 +155,7 @@ func begin(): master_player = util.get_master_player() # Set color to blue (teammate) or red (enemy) var color - if master_player.player_info.is_right_team == player_info.is_right_team: + if master_player and master_player.player_info.is_right_team == player_info.is_right_team: color = friend_color else: color = enemy_color @@ -174,10 +172,8 @@ func begin(): func toggle_mouse_capture(): if (Input.get_mouse_mode() == Input.MOUSE_MODE_CAPTURED): Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) - view_sensitivity = 0 else: Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) - view_sensitivity = 0.25 # Update visual yaw + pitch components to match camera func set_rotation(): diff --git a/scripts/player_name.gd b/scripts/player_name.gd index 387fabe..9c68133 100644 --- a/scripts/player_name.gd +++ b/scripts/player_name.gd @@ -9,13 +9,16 @@ func _ready(): func _process(delta): # This needs to happen here because players are added later # Plus, the camera changes when a player switches hero - camera = util.get_master_player().get_node("TPCamera/Camera") - var pos3d = pos.get_global_transform().origin - if camera.is_position_behind(pos3d): - hide() - else: - show() - var size = get_size() - var offset = Vector2(size.x/2, size.y) # Origin at bottom - set_position(camera.unproject_position(pos3d) - offset) + var master_player = util.get_master_player() + # We need to check in case we're a silent server + if master_player: + camera = util.get_master_player().get_node("TPCamera/Camera") + var pos3d = pos.get_global_transform().origin + if camera.is_position_behind(pos3d): + hide() + else: + show() + var size = get_size() + var offset = Vector2(size.x/2, size.y) # Origin at bottom + set_position(camera.unproject_position(pos3d) - offset) diff --git a/scripts/util.gd b/scripts/util.gd index 70b6263..3f49fa8 100644 --- a/scripts/util.gd +++ b/scripts/util.gd @@ -1,8 +1,16 @@ extends Node func get_master_player(): - return get_node("/root/Level/Players/%d" % get_tree().get_network_unique_id()) + var path = "/root/Level/Players/%d" % get_tree().get_network_unique_id() + if has_node(path): + return get_node(path) + else: + return null func is_friendly(player): - return player.player_info.is_right_team == get_master_player().player_info.is_right_team + var mp = get_master_player() + if mp: + return player.player_info.is_right_team == get_master_player().player_info.is_right_team + else: + return true # Doesn't matter, we're headless