You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
2.7 KiB
83 lines
2.7 KiB
extends Control
|
|
|
|
func _ready():
|
|
# Called every time the node is added to the scene.
|
|
game_state.connect("connection_failed", self, "_on_connection_failed")
|
|
game_state.connect("connection_succeeded", self, "_on_connection_success")
|
|
game_state.connect("player_list_changed", self, "refresh_lobby")
|
|
game_state.connect("game_ended", self, "_on_game_ended")
|
|
game_state.connect("game_error", self, "_on_game_error")
|
|
|
|
func _on_host_pressed():
|
|
if (get_node("connect/name").text == ""):
|
|
get_node("connect/error_label").text="Invalid name!"
|
|
return
|
|
|
|
get_node("connect").hide()
|
|
get_node("players").show()
|
|
get_node("connect/error_label").text=""
|
|
|
|
var player_name = get_node("connect/name").text
|
|
var player_color = get_node("connect/color").color
|
|
game_state.host_game(player_name, player_color)
|
|
refresh_lobby()
|
|
|
|
func _on_join_pressed():
|
|
if (get_node("connect/name").text == ""):
|
|
get_node("connect/error_label").text="Invalid name!"
|
|
return
|
|
|
|
var ip = get_node("connect/ip").text
|
|
if (not ip.is_valid_ip_address()):
|
|
get_node("connect/error_label").text="Invalid IPv4 address!"
|
|
return
|
|
|
|
get_node("connect/error_label").text=""
|
|
get_node("connect/host").disabled=true
|
|
get_node("connect/join").disabled=true
|
|
|
|
var player_name = get_node("connect/name").text
|
|
var player_color = get_node("connect/color").color
|
|
game_state.join_game(ip, player_name, player_color)
|
|
# refresh_lobby() gets called by the player_list_changed signal
|
|
|
|
func _on_connection_success():
|
|
get_node("connect").hide()
|
|
get_node("players").show()
|
|
|
|
func _on_connection_failed():
|
|
get_node("connect/host").disabled=false
|
|
get_node("connect/join").disabled=false
|
|
get_node("connect/error_label").set_text("Connection failed.")
|
|
|
|
func _on_game_ended():
|
|
show()
|
|
get_node("connect").show()
|
|
get_node("players").hide()
|
|
get_node("connect/host").disabled=false
|
|
get_node("connect/join").disabled=false
|
|
|
|
func _on_game_error(errtxt):
|
|
get_node("error").dialog_text = errtxt
|
|
get_node("error").popup_centered_minsize()
|
|
|
|
func refresh_lobby():
|
|
var players = game_state.get_player_list()
|
|
players.sort()
|
|
get_node("players/list").clear()
|
|
get_node("players/list").add_item(game_state.get_player_name() + " (You)")
|
|
get_node("players/list").set_item_custom_bg_color(get_node("players/list").get_item_count()-1, game_state.get_player_color())
|
|
for p in players:
|
|
get_node("players/list").add_item(p.name)
|
|
get_node("players/list").set_item_custom_bg_color(get_node("players/list").get_item_count()-1, p.color)
|
|
|
|
get_node("players/start").disabled=not get_tree().is_network_server()
|
|
|
|
func _on_start_pressed():
|
|
game_state.begin_game()
|
|
|
|
func _on_quick_pressed():
|
|
var player_name = get_node("connect/name").text
|
|
var player_color = get_node("connect/color").color
|
|
game_state.host_game(player_name, player_color)
|
|
game_state.begin_game()
|