summaryrefslogtreecommitdiff
path: root/scripts/GameBase.gd
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/GameBase.gd')
-rw-r--r--scripts/GameBase.gd77
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})