Created a scene manager
This commit is contained in:
parent
0ff0445442
commit
ebab517863
@ -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")
|
|
||||||
|
|
||||||
|
@ -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"
|
||||||
|
@ -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")
|
||||||
|
|
||||||
|
@ -11,7 +11,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:
|
||||||
var this_packet0 : Dictionary = Steam.readP2PPacket(packet_size0, 0)
|
var this_packet0 : Dictionary = Steam.readP2PPacket(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)
|
||||||
|
7
assets/core/networking/scripts/SceneManager.gd
Normal file
7
assets/core/networking/scripts/SceneManager.gd
Normal 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)
|
||||||
|
|
@ -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]
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user