Browse Source

Start work on menus and add music (?)

sslo
Hamcha 1 year ago
parent
commit
f06526825d
Signed by: Hamcha GPG Key ID: 477AFB9A47CD4B7F
  1. 8
      Graphics/Menu.tscn
  2. 1
      Scenes/Game.gd
  3. 2
      Scenes/Game.tscn
  4. 70
      Scenes/Global/Multiplayer.gd
  5. 14
      Scenes/Global/Music.tscn
  6. 4
      Scenes/Menu.gd
  7. 11
      Scenes/Menu.tscn
  8. 41
      Scenes/Test.tscn
  9. 12
      Scenes/UI.gd
  10. 8
      Scenes/UI.tscn
  11. 3
      Scenes/UI/Widgets/ResizablePanel.tscn
  12. 2
      Scenes/World.gd
  13. BIN
      Sounds/BGM/Bluemillenium_-_Je_suis_un_Phoenix_1.ogg
  14. 15
      Sounds/BGM/Bluemillenium_-_Je_suis_un_Phoenix_1.ogg.import
  15. 9
      default_bus_layout.tres
  16. 4
      project.godot

8
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
}

1
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):

2
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 )]

70
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())

14
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"

4
Scenes/Menu.gd

@ -0,0 +1,4 @@
extends Control
func _ready():
$"/root/Music/BGM".play()

11
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
}

41
Scenes/Test.tscn

@ -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 )

12
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

8
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

3
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

2
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)

BIN
Sounds/BGM/Bluemillenium_-_Je_suis_un_Phoenix_1.ogg

Binary file not shown.

15
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

9
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"

4
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