From 725b6166577bfe69a7c8155ea6afef8501ea0486 Mon Sep 17 00:00:00 2001 From: Luna Date: Sat, 26 May 2018 16:11:36 -0400 Subject: [PATCH] Fix player's color not getting set --- scripts/networking.gd | 16 ++++++++++------ scripts/player.gd | 10 ++++++---- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/scripts/networking.gd b/scripts/networking.gd index a53fba3..a1c12e8 100644 --- a/scripts/networking.gd +++ b/scripts/networking.gd @@ -141,6 +141,10 @@ sync func _spawn_player(p): player.player_info = players[p] get_node("/root/Level/Players").add_child(player) +func _begin_player(p): + var player = util.get_player(p) + player.begin() + sync func _pre_configure_game(level): var self_peer_id = get_tree().get_network_unique_id() @@ -158,6 +162,10 @@ sync func _pre_configure_game(level): var existing_player = util.get_player(p) if not self_begun or not existing_player: _spawn_player(p) + for p in players: + if not players[p].spectating: + # Begin requires all players + _begin_player(p) # Why do we check first? Weird error. It's because set_info triggers a # start_game if everyone is ready @@ -176,12 +184,8 @@ sync func _done_preconfiguring(who): sync func _post_configure_game(): # Begin all players (including self) - for p in players: - if not players[p].spectating: - _begin_player(p) - -func _begin_player(peer): - util.get_player(peer).begin() + # TODO: What do? Maybe, unpause game? + pass sync func reset_state(): players_done = [] diff --git a/scripts/player.gd b/scripts/player.gd index 887a7cb..4d0d66b 100644 --- a/scripts/player.gd +++ b/scripts/player.gd @@ -52,6 +52,7 @@ func _ready(): set_process_input(true) debug_node = get_node("/root/Level/Debug") + _set_color() if is_network_master(): get_node("TPCamera/Camera/Ray").add_exception(self) get_node(tp_camera).set_enabled(true) @@ -59,6 +60,7 @@ func _ready(): if "is_ai" in player_info and player_info.is_ai and not ai_instanced: add_child(preload("res://scenes/ai.tscn").instance()) ai_instanced = true + spawn() else: get_node("PlayerName").set_text(player_info.username) # Remove HUD @@ -175,10 +177,13 @@ func event_to_obj(event): return d func begin(): + _set_color() + +func _set_color(): master_player = util.get_master_player() # Set color to blue (teammate) or red (enemy) var color - if master_player and master_player.player_info.is_right_team == player_info.is_right_team: + if master_player.player_info.is_right_team == player_info.is_right_team: color = friend_color else: color = enemy_color @@ -192,8 +197,6 @@ func begin(): for mesh in colored_meshes: get_node(mesh).set_surface_material(0, mat) - spawn() - func toggle_mouse_capture(): if (Input.get_mouse_mode() == Input.MOUSE_MODE_CAPTURED): Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) @@ -305,7 +308,6 @@ sync func switch_hero(hero): get_node("/root/Level/Players").call_deferred("add_child", new_hero) # We must wait until after _ready is called, so that we don't end up at spawn new_hero.call_deferred("set_status", get_status()) - new_hero.call_deferred("begin") queue_free() func write_recording():