lobby.gd 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. extends Control
  2. func _ready():
  3. # Called every time the node is added to the scene.
  4. gamestate.connect("connection_failed", self, "_on_connection_failed")
  5. gamestate.connect("connection_succeeded", self, "_on_connection_success")
  6. gamestate.connect("player_list_changed", self, "refresh_lobby")
  7. gamestate.connect("game_ended", self, "_on_game_ended")
  8. gamestate.connect("game_error", self, "_on_game_error")
  9. func _on_host_pressed():
  10. if get_node("connect/name").text == "":
  11. get_node("connect/error_label").text = "Invalid name!"
  12. return
  13. get_node("connect").hide()
  14. get_node("players").show()
  15. get_node("connect/error_label").text = ""
  16. var player_name = get_node("connect/name").text
  17. gamestate.host_game(player_name)
  18. refresh_lobby()
  19. func _on_join_pressed():
  20. if get_node("connect/name").text == "":
  21. get_node("connect/error_label").text = "Invalid name!"
  22. return
  23. var ip = get_node("connect/ip").text
  24. if not ip.is_valid_ip_address():
  25. get_node("connect/error_label").text = "Invalid IPv4 address!"
  26. return
  27. get_node("connect/error_label").text=""
  28. get_node("connect/host").disabled = true
  29. get_node("connect/join").disabled = true
  30. var player_name = get_node("connect/name").text
  31. gamestate.join_game(ip, player_name)
  32. # refresh_lobby() gets called by the player_list_changed signal
  33. func _on_connection_success():
  34. get_node("connect").hide()
  35. get_node("players").show()
  36. func _on_connection_failed():
  37. get_node("connect/host").disabled = false
  38. get_node("connect/join").disabled = false
  39. get_node("connect/error_label").set_text("Connection failed.")
  40. func _on_game_ended():
  41. show()
  42. get_node("connect").show()
  43. get_node("players").hide()
  44. get_node("connect/host").disabled = false
  45. get_node("connect/join").disabled
  46. func _on_game_error(errtxt):
  47. get_node("error").dialog_text = errtxt
  48. get_node("error").popup_centered_minsize()
  49. func refresh_lobby():
  50. var players = gamestate.get_player_list()
  51. players.sort()
  52. get_node("players/list").clear()
  53. get_node("players/list").add_item(gamestate.get_player_name() + " (You)")
  54. for p in players:
  55. get_node("players/list").add_item(p)
  56. get_node("players/start").disabled = not get_tree().is_network_server()
  57. func _on_start_pressed():
  58. gamestate.begin_game()