diff options
Diffstat (limited to 'scripts/GameBase.gd')
| -rw-r--r-- | scripts/GameBase.gd | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/scripts/GameBase.gd b/scripts/GameBase.gd new file mode 100644 index 0000000..ee26531 --- /dev/null +++ b/scripts/GameBase.gd @@ -0,0 +1,77 @@ +extends Spatial + +var client +var client_id +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) + +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}) |
