diff --git a/scripts/lobby.gd b/scripts/lobby.gd index 33b258b..66282a3 100644 --- a/scripts/lobby.gd +++ b/scripts/lobby.gd @@ -38,8 +38,6 @@ func option_sel(button_name, option): func _ready(): - my_info.version = [0,0,0] # Semantic versioning: [0].[1].[2] - randomize() get_node("GameBrowser/Play").connect("pressed", self, "connect_global_server") @@ -136,8 +134,14 @@ func collect_info(): my_info.hero = get_node("PlayerSettings/HeroSelect").get_selected_id() if not "is_right_team" in my_info: my_info.is_right_team = false # Server assigns team, wait for that + my_info.version = version remote func register_player(new_peer, info): + var p_version = info.version.split(".") + var version_split = util.version.split(".") + if p_version[0] != version_split[0]: + # TODO: Fail gracefully + return player_info[new_peer] = info render_player_list() if (get_tree().is_network_server()): diff --git a/scripts/util.gd b/scripts/util.gd index 3f49fa8..bd547fe 100644 --- a/scripts/util.gd +++ b/scripts/util.gd @@ -1,5 +1,15 @@ extends Node +# Semantic versioning, more or less +# Major: Server cannot accept requests (i.e. new hero, or network protocol change) +# Minor: Gameplay was significantly changed, but these can still technically play together (i.e. master-only scope added) + # These are things a server admin might choose to reject if it was decided to be significant +# Patch: Anything else: Bugfixes, UI changes, etc +# Currently 0.0.0 which means API, gameplay, etc can change suddenly and frequently +# Don't rely on it for anything +# 1.0.0 will be the reddit release +var version = "0.0.0" + func get_master_player(): var path = "/root/Level/Players/%d" % get_tree().get_network_unique_id() if has_node(path): @@ -10,7 +20,7 @@ func get_master_player(): func is_friendly(player): var mp = get_master_player() if mp: - return player.player_info.is_right_team == get_master_player().player_info.is_right_team + return player.player_info.is_right_team == mp.player_info.is_right_team else: return true # Doesn't matter, we're headless