MP sync working, redoing all menus now

This commit is contained in:
2023-02-05 12:41:03 -05:00
parent d3dcbc153a
commit d7572b48cc
16 changed files with 330 additions and 73 deletions

View File

@@ -1,22 +1,81 @@
extends Node
@onready var manager = get_node(".")
@onready var main_menu = $CanvasLayer/MainMenu
@onready var start_game_menu = $CanvasLayer/StartGameMenu
@onready var address_entry = $CanvasLayer/MainMenu/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer2/AddressEntry
@onready var notifications = $CanvasLayer/notifications
@onready var spawner = $MultiplayerSpawner
var PORT = 9999
var enet_peer = ENetMultiplayerPeer.new()
const Level1 = preload("res://Levels/Level1/Level1.tscn")
const Player = preload("res://Characters/test_player/test_player.tscn")
var spawn_location: Vector2 = Vector2.ZERO
# Called when the node enters the scene tree for the first time.
func _ready():
#get_tree().paused = true
var level_1 = Level1.instantiate()
var spawn_location = level_1.get_node("PlayerSpawnLocation")
spawn_location.set_visible(false)
manager.add_child(level_1)
var new_player = Player.instantiate()
manager.add_child(new_player)
new_player.set_position(spawn_location.get_position())
var spawn_location_in_level = level_1.get_node("PlayerSpawnLocation")
spawn_location = spawn_location_in_level.get_position()
spawn_location_in_level.set_visible(false)
add_child(level_1)
func add_player(peer_id):
var player = Player.instantiate()
player.name = str(peer_id)
add_child(player) # Adds to current scene under root node
if peer_id == 1:
player.set_position(spawn_location)
else:
spawn_location = spawn_location + Vector2(50, 0)
player.set_spawn_location.rpc(spawn_location)
print("SPAWN LOCATION: ", spawn_location, " PEER ID: ", player.name)
# show_notification.rpc("Test Message")
@rpc("call_local")
func show_notification(my_message: String):
notifications.show_new_notification(my_message)
func _on_host_button_pressed(): # When hosting a new game
main_menu.hide()
start_game_menu.show()
enet_peer.create_server(PORT)
multiplayer.multiplayer_peer = enet_peer
multiplayer.peer_connected.connect(add_player)
add_player(multiplayer.get_unique_id())
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
pass
func _on_join_button_pressed():
main_menu.hide()
enet_peer.create_client("localhost", PORT)
multiplayer.multiplayer_peer = enet_peer
func _on_start_game_button_pressed():
start_game_menu.hide()
func _on_play_single_player_button_pressed():
var player = Player.instantiate()
player.name = str(1)
add_child(player)
player.set_position(spawn_location)
main_menu.hide()
notifications.hide()

View File

@@ -2,5 +2,38 @@
[ext_resource type="Script" path="res://Game Manager/game_manager.gd" id="1_bkvdw"]
[node name="game_manager" type="Node2D"]
[node name="game_manager" type="Node"]
script = ExtResource("1_bkvdw")
[node name="CanvasLayer" type="CanvasLayer" parent="."]
[node name="StartGameMenu" type="Control" parent="CanvasLayer"]
process_mode = 3
visible = false
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="PanelContainer" type="PanelContainer" parent="CanvasLayer/StartGameMenu"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="MarginContainer" type="MarginContainer" parent="CanvasLayer/StartGameMenu/PanelContainer"]
layout_mode = 2
[node name="StartGameButton" type="Button" parent="CanvasLayer/StartGameMenu/PanelContainer/MarginContainer"]
layout_mode = 2
text = "Start Game"
[node name="MultiplayerSpawner" type="MultiplayerSpawner" parent="."]
_spawnable_scenes = PackedStringArray("res://Characters/test_player/test_player.tscn", "res://PhysicsObjects/HandStatue/HandStatue.tscn")
spawn_path = NodePath("..")
[connection signal="pressed" from="CanvasLayer/StartGameMenu/PanelContainer/MarginContainer/StartGameButton" to="." method="_on_start_game_button_pressed"]