Networking and menu cleanup, added nosteam window flag
This commit is contained in:
@@ -34,17 +34,8 @@ func _connect_multiplayer_signals(is_server: bool):
|
||||
multiplayer.connected_to_server.connect(_on_connected_to_server)
|
||||
|
||||
|
||||
func start_server(username: String, avatar: ImageTexture):
|
||||
is_steam_lobby = false
|
||||
ip_username = username
|
||||
ip_avatar = avatar
|
||||
enet_peer.create_server(port)
|
||||
multiplayer.multiplayer_peer = enet_peer
|
||||
_connect_multiplayer_signals(true)
|
||||
add_player(1)
|
||||
|
||||
|
||||
func start_steam_lobby():
|
||||
create_loading_screen("Creating lobby...")
|
||||
Steam.lobby_created.connect(_on_steam_lobby_created)
|
||||
Steam.createLobby(Steam.LOBBY_TYPE_PUBLIC, 10)
|
||||
is_host_steam = true
|
||||
@@ -63,18 +54,7 @@ func _on_steam_lobby_created(result: int, lobby_id: int) -> void:
|
||||
is_steam_lobby = true
|
||||
add_player(1)
|
||||
print("Lobby created. ID: " + str(lobby_id))
|
||||
print("Steam ID for host: " + str(steam_peer.get_steam_id_for_peer_id(1)))
|
||||
print("Steam ID for host (from autoload): " + str(Steamworks.steam_id))
|
||||
|
||||
|
||||
func join_server(ip: String, username: String, avatar: ImageTexture):
|
||||
is_steam_lobby = false
|
||||
ip_username = username
|
||||
ip_avatar = avatar
|
||||
enet_peer.create_client(ip, port)
|
||||
multiplayer.multiplayer_peer = enet_peer
|
||||
_connect_multiplayer_signals(false)
|
||||
create_loading_screen()
|
||||
loading_screen.queue_free()
|
||||
|
||||
|
||||
func join_steam_lobby(lobby_id: int):
|
||||
@@ -118,12 +98,6 @@ func set_player_details_steam(peer_id: int, steam_id: int):
|
||||
await player_list[peer_id].set_player_info_steam(steam_id)
|
||||
|
||||
|
||||
@rpc("any_peer", "call_local")
|
||||
func set_player_details_ip(peer_id: int, username: String, avatar_bytes: PackedByteArray):
|
||||
if player_list.has(peer_id):
|
||||
await player_list[peer_id].set_player_info_ip(username, avatar_bytes)
|
||||
|
||||
|
||||
func add_player(peer_id: int):
|
||||
var new_player: Player = PLAYER.instantiate()
|
||||
new_player.name = str(peer_id)
|
||||
@@ -173,3 +147,32 @@ func _cleanup_steam_signals():
|
||||
Steam.lobby_created.disconnect(_on_steam_lobby_created)
|
||||
if Steam.lobby_joined.is_connected(_on_join_steam_lobby):
|
||||
Steam.lobby_joined.disconnect(_on_join_steam_lobby)
|
||||
|
||||
|
||||
#region Non-steam
|
||||
func start_server(username: String, avatar: ImageTexture):
|
||||
is_steam_lobby = false
|
||||
ip_username = username
|
||||
ip_avatar = avatar
|
||||
enet_peer.create_server(port)
|
||||
multiplayer.multiplayer_peer = enet_peer
|
||||
_connect_multiplayer_signals(true)
|
||||
add_player(1)
|
||||
|
||||
|
||||
func join_server(ip: String, username: String, avatar: ImageTexture):
|
||||
is_steam_lobby = false
|
||||
ip_username = username
|
||||
ip_avatar = avatar
|
||||
enet_peer.create_client(ip, port)
|
||||
multiplayer.multiplayer_peer = enet_peer
|
||||
_connect_multiplayer_signals(false)
|
||||
create_loading_screen()
|
||||
|
||||
|
||||
@rpc("any_peer", "call_local")
|
||||
func set_player_details_ip(peer_id: int, username: String, avatar_bytes: PackedByteArray):
|
||||
if player_list.has(peer_id):
|
||||
await player_list[peer_id].set_player_info_ip(username, avatar_bytes)
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -1,30 +1,38 @@
|
||||
extends Node
|
||||
|
||||
var use_steam := true
|
||||
var is_initalized: bool = false
|
||||
|
||||
var steam_id: int
|
||||
var steam_username: String
|
||||
var steam_id: int = 0
|
||||
var steam_username: String = "None"
|
||||
var steam_avatar: ImageTexture
|
||||
|
||||
var tmp_avatar_image_texture: ImageTexture
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
if is_initalized: return
|
||||
if OS.has_feature("nosteam"):
|
||||
print("[Steamworks] Window has flag 'nosteam', skipping steam initalization")
|
||||
use_steam = false
|
||||
return
|
||||
|
||||
var response := Steam.steamInitEx()
|
||||
if response["status"] != 0:
|
||||
push_warning("Steam failed to initalize: " + str(response))
|
||||
push_error("Steam failed to initalize: " + str(response))
|
||||
print("Steam failed to initalize. Error code: " + str(response))
|
||||
await get_tree().create_timer(1).timeout
|
||||
get_tree().quit()
|
||||
return
|
||||
|
||||
print("Steam initalized successfully")
|
||||
is_initalized = true
|
||||
|
||||
steam_id = Steam.getSteamID()
|
||||
steam_username = Steam.getPersonaName()
|
||||
steam_avatar = await get_player_avatar(steam_id)
|
||||
|
||||
print("Steam initalized successfully")
|
||||
is_initalized = true
|
||||
|
||||
|
||||
func get_player_avatar(steam_id: int) -> ImageTexture:
|
||||
if !is_initalized or !use_steam: return
|
||||
Steam.getPlayerAvatar(Steam.AVATAR_LARGE, steam_id)
|
||||
var result = await Steam.avatar_loaded # returns (avatar_id, width, avatar_data)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user