123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- extends Control
- func _ready():
- # Called every time the node is added to the scene.
- gamestate.connect("connection_failed", self, "_on_connection_failed")
- gamestate.connect("connection_succeeded", self, "_on_connection_success")
- gamestate.connect("player_list_changed", self, "refresh_lobby")
- gamestate.connect("game_ended", self, "_on_game_ended")
- gamestate.connect("game_error", self, "_on_game_error")
- # Set the player name according to the system username. Fallback to the path.
- if OS.has_environment("USERNAME"):
- $Connect/Name.text = OS.get_environment("USERNAME")
- else:
- var desktop_path = OS.get_system_dir(0).replace("\\", "/").split("/")
- $Connect/Name.text = desktop_path[desktop_path.size() - 2]
- func _on_host_pressed():
- if $Connect/Name.text == "":
- $Connect/ErrorLabel.text = "Invalid name!"
- return
- $Connect.hide()
- $Players.show()
- $Connect/ErrorLabel.text = ""
- var player_name = $Connect/Name.text
- gamestate.host_game(player_name)
- refresh_lobby()
- func _on_join_pressed():
- if $Connect/Name.text == "":
- $Connect/ErrorLabel.text = "Invalid name!"
- return
- var ip = $Connect/IPAddress.text
- if not ip.is_valid_ip_address():
- $Connect/ErrorLabel.text = "Invalid IP address!"
- return
- $Connect/ErrorLabel.text = ""
- $Connect/Host.disabled = true
- $Connect/Join.disabled = true
- var player_name = $Connect/Name.text
- gamestate.join_game(ip, player_name)
- func _on_connection_success():
- $Connect.hide()
- $Players.show()
- func _on_connection_failed():
- $Connect/Host.disabled = false
- $Connect/Join.disabled = false
- $Connect/ErrorLabel.set_text("Connection failed.")
- func _on_game_ended():
- show()
- $Connect.show()
- $Players.hide()
- $Connect/Host.disabled = false
- $Connect/Join.disabled = false
- func _on_game_error(errtxt):
- $ErrorDialog.dialog_text = errtxt
- $ErrorDialog.popup_centered_minsize()
- $Connect/Host.disabled = false
- $Connect/Join.disabled = false
- func refresh_lobby():
- var players = gamestate.get_player_list()
- players.sort()
- $Players/List.clear()
- $Players/List.add_item(gamestate.get_player_name() + " (You)")
- for p in players:
- $Players/List.add_item(p)
- $Players/Start.disabled = not get_tree().is_network_server()
- func _on_start_pressed():
- gamestate.begin_game()
- func _on_find_public_ip_pressed():
- OS.shell_open("https://icanhazip.com/")
|