Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
88 changes: 88 additions & 0 deletions multiplayer_menu.gd
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
extends Control

var SERVER_PORT = 11111
var MAX_PLAYERS = 5

const ChatMessage = preload("res://mods-unpacked/Pasha-Brotatogether/ui/chat/chat_message.tscn")
const LobbyEntry = preload("res://mods-unpacked/Pasha-Brotatogether/ui/lobby_entry.tscn")

const DirectConnection = preload("res://mods-unpacked/Pasha-Brotatogether/networking/direct_connection.gd")

var GameController = load("res://mods-unpacked/Pasha-Brotatogether/networking/game_controller.gd")

var direct_connection
var game_controller

var DEBUG = false

onready var chat_messages = $"%ChatMessages"
onready var lobbies_list = $"%Lobbies"
onready var chat_input : LineEdit = $"%ChatInput"
onready var create_lobby_button : Button = $"%CreateLobbyButton"

var steam_connection
var brotatogether_options

func _ready():
steam_connection = $"/root/SteamConnection"
steam_connection.connect("global_chat_received", self, "_received_global_chat")
steam_connection.connect("game_lobby_found", self, "_game_lobby_found")

brotatogether_options = $"/root/BrotogetherOptions"

for message in steam_connection.pending_system_messages:
var new_message_node = ChatMessage.instance()
new_message_node.message = message
new_message_node.username = "SYSTEM"
chat_messages.add_child(new_message_node)
steam_connection.pending_system_messages.clear()
create_lobby_button.grab_focus()
CoopService.clear_coop_players()

func _input(event:InputEvent)->void :
manage_back(event)

func manage_back(event:InputEvent)->void :
if event.is_action_pressed("ui_cancel"):
RunData.current_zone = 0
RunData.reload_music = false
var _error = get_tree().change_scene(MenuData.title_screen_scene)

func _on_back_button_pressed():
RunData.reload_music = false
var _error = get_tree().change_scene(MenuData.title_screen_scene)

func _on_chat_input_text_entered(message):
if message.length() > 0:
steam_connection.send_global_chat_message(message)
chat_input.clear()

func _received_global_chat(user, message) -> void:
if chat_messages.get_child_count() > 50: # Prevent lag
var oldest = chat_messages.get_child(0)
chat_messages.remove_child(oldest)
oldest.queue_free()
var new_message_node = ChatMessage.instance()
new_message_node.message = message
new_message_node.username = user
chat_messages.add_child(new_message_node)

func _on_create_lobby_button_pressed():
var result = steam_connection.create_new_game_lobby()
if result != Steam.RESULT_OK:
var new_message_node = ChatMessage.instance()
new_message_node.message = "Failed to create lobby"
new_message_node.username = "SYSTEM"
chat_messages.add_child(new_message_node)

func _on_refresh_lobbies_button_pressed():
for child in lobbies_list.get_children():
lobbies_list.remove_child(child)
child.queue_free()
steam_connection.request_lobby_search()

func _game_lobby_found(lobby_id, lobby_name) -> void:
var new_lobby_entry = LobbyEntry.instance()
new_lobby_entry.lobby_id = lobby_id
new_lobby_entry.lobby_name = lobby_name
lobbies_list.add_child(new_lobby_entry)