extends Spatial var client var client_id var is_local = false var local_server_tree = null var player_name : String var player_team : String var player_char = null var players_info = {} #dictionary of id : name, team, ping, etc. var is_chatting = false var winddir = Vector3(1,0,0) func _process(delta): if is_local: local_server_tree.idle(delta) func _physics_process(delta): if is_local: local_server_tree.iteration(delta) remote func set_up_server_info(info): $HUD/ServerJoinMenu/MOTD.text = info["MOTD"] $HUD/ServerJoinMenu/ServerName.text = info["server_name"] $DEFAULTCAM.transform = info["cam_pos"] rpc_id(1, "_call_on_server", "_client_connection_confirmed", {"id" : client_id, "username" : player_name}) remote func load_map(geo_info): for geo in geo_info: var prop = load(geo["filename"]).instance() $WORLDGEO.add_child(prop) prop.transform = geo["transform"] remote func load_entities(entity_info): #machines, players, and projectiles for entity in entity_info: var parent_section = get_node(entity["type"]) var ent = load(entity["filename"]).instance() ent.name = entity["name"] ent.set_network_master(entity["net_master"]) parent_section.add_child(ent, true) ent.transform = entity["transform"] ent.mp_init(entity["init_info"]) remote func update_players_info(info): $HUD/ServerJoinMenu/Team1Players.text = "" $HUD/ServerJoinMenu/Team2Players.text = "" $HUD/ServerJoinMenu/Spectators.text = "" players_info = info for player in players_info.keys(): var p_team = players_info[player][1] var p_name = players_info[player][0] if p_team == "RED": $HUD/ServerJoinMenu/Team1Players.text += p_name + ", " elif p_team == "BLUE": $HUD/ServerJoinMenu/Team2Players.text += p_name + ", " elif p_team == "SPEC": $HUD/ServerJoinMenu/Spectators.text += p_name + ", " remote func game_update_chars(): $HUD.update_characters() remote func game_chat_msg(msg): $HUD.ui_chat_msg(msg) func select_character(dest): print(dest) if player_char == null: rpc_id(1, "_call_on_server", "_client_request_change_character", {"id" : client_id, "current_char_name" : "NULL", "char_name" : dest}) else: rpc_id(1, "_call_on_server", "_client_request_change_character", {"id" : client_id, "current_char_name" : player_char.name, "char_name" : dest}) func client_disconnect(): if player_char != null: player_char.deselect_character() client.close_connection() get_tree().quit() func join_team(team): if player_char != null: player_char.deselect_character() $DEFAULTCAM.current = true player_team = team rpc_id(1, "_call_on_server", "_client_change_teams", {"id" : client_id, "team" : team})