diff --git a/Graphics/Menu.tscn b/Graphics/Menu.tscn new file mode 100644 index 0000000..bd41ee5 --- /dev/null +++ b/Graphics/Menu.tscn @@ -0,0 +1,8 @@ +[gd_scene format=2] + +[node name="Control" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +__meta__ = { +"_edit_use_anchors_": false +} diff --git a/Scenes/Game.gd b/Scenes/Game.gd index e4fa257..532f944 100644 --- a/Scenes/Game.gd +++ b/Scenes/Game.gd @@ -7,7 +7,6 @@ onready var world = $world onready var systems = $systems func _ready(): - randomize() ui.connect("command", world, "process_command") func process_command(cmd: UICommand): diff --git a/Scenes/Game.tscn b/Scenes/Game.tscn index 8db167d..6646141 100644 --- a/Scenes/Game.tscn +++ b/Scenes/Game.tscn @@ -12,6 +12,8 @@ scale = Vector2( 2, 2 ) script = ExtResource( 4 ) mapToLoad = 1 +[node name="players" type="Node2D" parent="world"] + [node name="CanvasLayer" type="CanvasLayer" parent="."] [node name="ui" parent="CanvasLayer" instance=ExtResource( 3 )] diff --git a/Scenes/Global/Multiplayer.gd b/Scenes/Global/Multiplayer.gd new file mode 100644 index 0000000..8c7340c --- /dev/null +++ b/Scenes/Global/Multiplayer.gd @@ -0,0 +1,70 @@ +extends Node + +const SERVER_PORT = 5513 +const MAX_PLAYERS = 30 + +export var player_name = "" +var player_info = {} + +func _ready(): + player_name = "tider-" + str(randi() % 1000) + get_tree().connect("network_peer_connected", self, "_player_connected") + get_tree().connect("network_peer_disconnected", self, "_player_disconnected") + get_tree().connect("connected_to_server", self, "_connected_ok") + get_tree().connect("connection_failed", self, "_connected_fail") + get_tree().connect("server_disconnected", self, "_server_disconnected") + +func host(): + var peer = NetworkedMultiplayerENet.new() + peer.create_server(SERVER_PORT, MAX_PLAYERS) + get_tree().set_network_peer(peer) + print("Hosting") + player_info[1] = { name=player_name } + #mapLoader.map.spawn_player(peer.get_unique_id()) + +func join(addr: String): + var peer = NetworkedMultiplayerENet.new() + peer.create_client(addr, SERVER_PORT) + get_tree().network_peer = peer + print("Connecting to", addr) + +func leave(): + var peer = get_tree().network_peer + if get_tree().is_network_server(): + #TODO Do something if server + pass + elif peer != null: + #TODO Send leave message + pass + get_tree().network_peer = null + +func _player_connected(id): + rpc_id(id, "register_player", player_name) + if get_tree().is_network_server(): + pass + #rpc_id(id, "spawn_players", mapLoader.map.all_players()) + +func _player_disconnected(id): + print(player_info[id].name, " (", id, ") disconnected") + player_info.erase(id) + +func _connected_ok(): + print("Connected to server") + +func _server_disconnected(): + print("Disconnected from server") + +func _connected_fail(): + print("Connection failed") + +remote func register_player(username: String): + var id = get_tree().get_rpc_sender_id() + player_info[id] = { name=username } + print(player_info[id].name, " (", id, ") connected") + +remote func spawn_players(players): + for player_id in players: + pass + #mapLoader.map.spawn_player(player_id) + # Spawn myself as well + #mapLoader.map.rpc("spawn_player", get_tree().network_peer.get_unique_id()) diff --git a/Scenes/Global/Music.tscn b/Scenes/Global/Music.tscn new file mode 100644 index 0000000..266b08d --- /dev/null +++ b/Scenes/Global/Music.tscn @@ -0,0 +1,14 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://Sounds/BGM/Bluemillenium_-_Je_suis_un_Phoenix_1.ogg" type="AudioStream" id=1] + +[node name="Music" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="BGM" type="AudioStreamPlayer" parent="."] +stream = ExtResource( 1 ) +bus = "BGM" diff --git a/Scenes/Menu.gd b/Scenes/Menu.gd new file mode 100644 index 0000000..c26ad1e --- /dev/null +++ b/Scenes/Menu.gd @@ -0,0 +1,4 @@ +extends Control + +func _ready(): + $"/root/Music/BGM".play() diff --git a/Scenes/Menu.tscn b/Scenes/Menu.tscn new file mode 100644 index 0000000..dca8215 --- /dev/null +++ b/Scenes/Menu.tscn @@ -0,0 +1,11 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://Scenes/Menu.gd" type="Script" id=1] + +[node name="Control" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} diff --git a/Scenes/Test.tscn b/Scenes/Test.tscn deleted file mode 100644 index d15c495..0000000 --- a/Scenes/Test.tscn +++ /dev/null @@ -1,41 +0,0 @@ -[gd_scene load_steps=8 format=2] - -[ext_resource path="res://Scenes/Maps/odyssey.tscn" type="PackedScene" id=1] -[ext_resource path="res://Actors/Player/Player.tscn" type="PackedScene" id=2] -[ext_resource path="res://Scenes/UI.tscn" type="PackedScene" id=3] -[ext_resource path="res://Scenes/World.gd" type="Script" id=4] -[ext_resource path="res://Scenes/Game.gd" type="Script" id=5] -[ext_resource path="res://Scenes/UI.gd" type="Script" id=6] -[ext_resource path="res://Scenes/Maps/runtime.tscn" type="PackedScene" id=7] - - -[node name="scene" type="Node"] -script = ExtResource( 5 ) - -[node name="world" type="Node2D" parent="."] -scale = Vector2( 2, 2 ) -script = ExtResource( 4 ) -player_path = NodePath("player") -map_path = NodePath("odyssey") - -[node name="runtime" parent="world" instance=ExtResource( 7 )] -visible = false - -[node name="odyssey" parent="world" instance=ExtResource( 1 )] - -[node name="player" parent="world" instance=ExtResource( 2 )] -position = Vector2( 206.017, 250.966 ) -z_index = 1 -is_controlled = true - -[node name="CanvasLayer" type="CanvasLayer" parent="."] - -[node name="ui" parent="CanvasLayer" instance=ExtResource( 3 )] -anchor_right = 1.0 -anchor_bottom = 1.0 -margin_right = 0.0 -margin_bottom = 0.0 -mouse_filter = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 -script = ExtResource( 6 ) diff --git a/Scenes/UI.gd b/Scenes/UI.gd index bf6dd16..d46a033 100644 --- a/Scenes/UI.gd +++ b/Scenes/UI.gd @@ -3,24 +3,16 @@ extends Control signal command(command) enum ServerMenuItem { - HOST_SERVER, - JOIN_SERVER, SERVER_INFO } func _ready() -> void: # Add options to menu buttons var serverMenu = $Menu/Margins/Grid/Server.get_popup() - serverMenu.add_item("Start hosting", ServerMenuItem.HOST_SERVER) - serverMenu.add_item("Join instance", ServerMenuItem.JOIN_SERVER) serverMenu.connect("id_pressed", self, "_server_option_chosen") + serverMenu.add_item("Server info", ServerMenuItem.SERVER_INFO) func _server_option_chosen(id) -> void: match id: - ServerMenuItem.HOST_SERVER: - # TODO HOST + ServerMenuItem.SERVER_INFO: $ServerInfoPopup.popup_centered() - pass - ServerMenuItem.JOIN_SERVER: - # TODO JOIN - pass diff --git a/Scenes/UI.tscn b/Scenes/UI.tscn index 5d88ea6..92f1e94 100644 --- a/Scenes/UI.tscn +++ b/Scenes/UI.tscn @@ -59,12 +59,8 @@ size_flags_horizontal = 3 size_flags_vertical = 3 [node name="Grid" type="GridContainer" parent="Menu/Margins"] -anchor_right = 1.0 -anchor_bottom = 1.0 -margin_left = 4.0 -margin_top = 4.0 -margin_right = 4.0 -margin_bottom = 4.0 +margin_right = 144.0 +margin_bottom = 20.0 size_flags_horizontal = 3 size_flags_vertical = 3 custom_constants/vseparation = 4 diff --git a/Scenes/UI/Widgets/ResizablePanel.tscn b/Scenes/UI/Widgets/ResizablePanel.tscn index 739ec64..433a991 100644 --- a/Scenes/UI/Widgets/ResizablePanel.tscn +++ b/Scenes/UI/Widgets/ResizablePanel.tscn @@ -22,6 +22,9 @@ margin_right = 376.0 margin_bottom = 336.0 custom_styles/panel = SubResource( 1 ) script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} [node name="DragHandle" type="Panel" parent="."] anchor_right = 1.0 diff --git a/Scenes/World.gd b/Scenes/World.gd index cd90031..5e16c32 100644 --- a/Scenes/World.gd +++ b/Scenes/World.gd @@ -27,7 +27,7 @@ func _ready(): player.transform.origin = (spawnpoints[0] as Node2D).transform.origin else: print("Map does not have Player spawnpoint POI! Spawning at origin (very bad)") - add_child(player) + $players.add_child(player) for tilemap in map.tilemaps: if tilemap is MapTiles: tilemap.set_occluder_origin(player) diff --git a/Sounds/BGM/Bluemillenium_-_Je_suis_un_Phoenix_1.ogg b/Sounds/BGM/Bluemillenium_-_Je_suis_un_Phoenix_1.ogg new file mode 100644 index 0000000..6bd5001 Binary files /dev/null and b/Sounds/BGM/Bluemillenium_-_Je_suis_un_Phoenix_1.ogg differ diff --git a/Sounds/BGM/Bluemillenium_-_Je_suis_un_Phoenix_1.ogg.import b/Sounds/BGM/Bluemillenium_-_Je_suis_un_Phoenix_1.ogg.import new file mode 100644 index 0000000..ea6e2b3 --- /dev/null +++ b/Sounds/BGM/Bluemillenium_-_Je_suis_un_Phoenix_1.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/Bluemillenium_-_Je_suis_un_Phoenix_1.ogg-c4c618afdcccb82197d6f44edbf07e3d.oggstr" + +[deps] + +source_file="res://Sounds/BGM/Bluemillenium_-_Je_suis_un_Phoenix_1.ogg" +dest_files=[ "res://.import/Bluemillenium_-_Je_suis_un_Phoenix_1.ogg-c4c618afdcccb82197d6f44edbf07e3d.oggstr" ] + +[params] + +loop=true +loop_offset=0 diff --git a/default_bus_layout.tres b/default_bus_layout.tres new file mode 100644 index 0000000..666596a --- /dev/null +++ b/default_bus_layout.tres @@ -0,0 +1,9 @@ +[gd_resource type="AudioBusLayout" format=2] + +[resource] +bus/1/name = "BGM" +bus/1/solo = false +bus/1/mute = false +bus/1/bypass_fx = false +bus/1/volume_db = -4.00569 +bus/1/send = "Master" diff --git a/project.godot b/project.godot index 7780b6d..2e29fd9 100644 --- a/project.godot +++ b/project.godot @@ -132,6 +132,10 @@ config/name="odyssey" run/main_scene="res://Scenes/Game.tscn" config/icon="res://icon.png" +[autoload] + +Music="*res://Scenes/Global/Music.tscn" + [display] window/size/width=1280