Created a scene manager

This commit is contained in:
Chris Bell 2025-01-11 21:04:13 -06:00
parent 0ff0445442
commit ebab517863
6 changed files with 23 additions and 9 deletions

View File

@ -255,6 +255,5 @@ func _on_start_btn_pressed():
if NetworkManager.STEAM_ID == Steam.getLobbyOwner(NetworkManager.LOBBY_ID): if NetworkManager.STEAM_ID == Steam.getLobbyOwner(NetworkManager.LOBBY_ID):
var result = NetworkManager.IS_READY.values().all(func(number): return number == true) var result = NetworkManager.IS_READY.values().all(func(number): return number == true)
if result: if result:
pass SceneManager.change_scene("res://godotsteam_sync_example/Test.tscn")
#SceneManager.change_scene("res://godotsteam_sync_example/Test.tscn")

View File

@ -77,10 +77,9 @@ scroll_smooth = true
[node name="LobbyVisibilityBtn" type="OptionButton" parent="CreateLobbyCont"] [node name="LobbyVisibilityBtn" type="OptionButton" parent="CreateLobbyCont"]
custom_minimum_size = Vector2(300, 35) custom_minimum_size = Vector2(300, 35)
layout_mode = 2 layout_mode = 2
item_count = 4
selected = 2 selected = 2
item_count = 4
popup/item_0/text = "PRIVATE" popup/item_0/text = "PRIVATE"
popup/item_0/id = 0
popup/item_1/text = "FRIENDS ONLY" popup/item_1/text = "FRIENDS ONLY"
popup/item_1/id = 1 popup/item_1/id = 1
popup/item_2/text = "PUBLIC" popup/item_2/text = "PUBLIC"
@ -91,10 +90,9 @@ popup/item_3/id = 3
[node name="MaxMembersBtn" type="OptionButton" parent="CreateLobbyCont"] [node name="MaxMembersBtn" type="OptionButton" parent="CreateLobbyCont"]
custom_minimum_size = Vector2(300, 35) custom_minimum_size = Vector2(300, 35)
layout_mode = 2 layout_mode = 2
item_count = 4
selected = 1 selected = 1
item_count = 4
popup/item_0/text = "2" popup/item_0/text = "2"
popup/item_0/id = 0
popup/item_1/text = "4" popup/item_1/text = "4"
popup/item_1/id = 1 popup/item_1/id = 1
popup/item_2/text = "8" popup/item_2/text = "8"

View File

@ -13,7 +13,7 @@ var LOBBY_MAX_MEMBERS: int = 4
var GAME_STARTED : bool = false var GAME_STARTED : bool = false
var IS_READY : Dictionary = {} var IS_READY : Dictionary = {}
enum TYPES {START,READY,START_SCENE,TRANFORM_SYNC,PROPERTY,EVENT,RIGIDBODY_SYNC,SCENE_LOADED,COMMAND,VOICE,RAGDOLL} enum TYPES {START,READY,START_SCENE,TRANFORM_SYNC,PROPERTY,EVENT,RIGIDBODY_SYNC,SCENE_LOADED,COMMAND,VOICE,RAGDOLL,CHANGE_SCENE}
@onready var player = preload("res://godotsteam_sync_example/fpc/character.tscn") @onready var player = preload("res://godotsteam_sync_example/fpc/character.tscn")

View File

@ -10,7 +10,6 @@ func _process(_delta: float) -> void:
func _read_P2P_Packet() -> void: func _read_P2P_Packet() -> void:
var packet_size0 : int = Steam.getAvailableP2PPacketSize(0) var packet_size0 : int = Steam.getAvailableP2PPacketSize(0)
#region Channel0 #region Channel0
if packet_size0 > 0: if packet_size0 > 0:
@ -42,6 +41,8 @@ func _read_All_P2P_Packets(read_count: int = 0) -> void:
_read_P2P_Packet() _read_P2P_Packet()
_read_All_P2P_Packets(read_count + 1) _read_All_P2P_Packets(read_count + 1)
var packet_size : float var packet_size : float
func _send_P2P_Packet(channel: int,target: int, packet_data: Dictionary,send_type: int) -> bool: func _send_P2P_Packet(channel: int,target: int, packet_data: Dictionary,send_type: int) -> bool:
# Create a data array to send the data through # Create a data array to send the data through
var this_data: PackedByteArray var this_data: PackedByteArray
@ -61,6 +62,8 @@ func _send_P2P_Packet(channel: int,target: int, packet_data: Dictionary,send_typ
else: else:
return Steam.sendP2PPacket(target, this_data, send_type, channel) return Steam.sendP2PPacket(target, this_data, send_type, channel)
return false return false
func handle_start_packet(READABLE): func handle_start_packet(READABLE):
# This packet reading when someone ready # This packet reading when someone ready
if READABLE["TYPE"] == NetworkManager.TYPES.READY: if READABLE["TYPE"] == NetworkManager.TYPES.READY:
@ -108,7 +111,6 @@ func handle_property_packets(READABLE):
else: else:
var DATA :Array = [READABLE["property"],READABLE["value"]] var DATA :Array = [READABLE["property"],READABLE["value"]]
get_tree().root.get_node(READABLE["node_path"]).DATA = DATA get_tree().root.get_node(READABLE["node_path"]).DATA = DATA
##
func handle_voice(READABLE): func handle_voice(READABLE):
@ -116,6 +118,12 @@ func handle_voice(READABLE):
get_tree().root.get_node(READABLE["node_path"]).process_voice_data(READABLE["voice_data"]) get_tree().root.get_node(READABLE["node_path"]).process_voice_data(READABLE["voice_data"])
#await get_tree().create_timer(0.1).timeout #await get_tree().create_timer(0.1).timeout
func handle_scene_change(READABLE):
if READABLE["TYPE"] == NetworkManager.TYPES.CHANGE_SCENE:
get_tree().change_scene_to_file(READABLE["scene"])
func handle_packets(READABLE): func handle_packets(READABLE):
handle_start_packet(READABLE) handle_start_packet(READABLE)
handle_event_packets(READABLE) handle_event_packets(READABLE)

View File

@ -0,0 +1,7 @@
extends Node
func change_scene(path: String):
var packet: Dictionary = {'TYPE': NetworkManager.TYPES.CHANGE_SCENE,'scene': path}
P2P._send_P2P_Packet(0, 0, packet, Steam.P2P_SEND_RELIABLE)
get_tree().change_scene_to_file(path)

View File

@ -11,6 +11,7 @@ config_version=5
[application] [application]
config/name="Steamforged Skies" config/name="Steamforged Skies"
run/main_scene="res://addons/godot_steam_sync/Lobby/main_menu.tscn"
config/features=PackedStringArray("4.3", "Forward Plus") config/features=PackedStringArray("4.3", "Forward Plus")
config/icon="res://assets/icon.png" config/icon="res://assets/icon.png"
@ -19,6 +20,7 @@ config/icon="res://assets/icon.png"
GameConsole="*res://addons/ingameconsole/GameConsole.tscn" GameConsole="*res://addons/ingameconsole/GameConsole.tscn"
NetworkManager="*res://addons/godot_steam_sync/Network/RadomeSteamSync/NetworkManager.gd" NetworkManager="*res://addons/godot_steam_sync/Network/RadomeSteamSync/NetworkManager.gd"
P2P="*res://addons/godot_steam_sync/Network/RadomeSteamSync/P2P.gd" P2P="*res://addons/godot_steam_sync/Network/RadomeSteamSync/P2P.gd"
SceneManager="*res://assets/core/networking/scripts/SceneManager.gd"
[debug] [debug]