Working on Character UI flow
This commit is contained in:
parent
22291bf639
commit
c5d9de036e
15 changed files with 115 additions and 106 deletions
|
|
@ -1,9 +1,4 @@
|
|||
extends Node
|
||||
|
||||
## Project Fugue - Zentrale Steuerung
|
||||
## Orchestriert den Übergang zwischen Menü und Spielwelt.
|
||||
|
||||
@onready var main_menu = $MainMenu
|
||||
|
||||
func _ready():
|
||||
print("--- Start: Projekt Weltenauge ---")
|
||||
|
|
|
|||
|
|
@ -1,17 +1,17 @@
|
|||
[gd_scene format=3 uid="uid://cpxxy0664jyjm"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://162cjpb4lac4" path="res://game_root.gd" id="1_xj5yv"]
|
||||
[ext_resource type="PackedScene" uid="uid://bhywhrlwjox6t" path="res://ui/menus/main_menu.tscn" id="2_pjpa4"]
|
||||
[ext_resource type="PackedScene" uid="uid://ca2bhph2k3xpy" path="res://ui/character_select/character_select.tscn" id="3_bxsma"]
|
||||
[ext_resource type="PackedScene" uid="uid://lb6btb6426mi" path="res://ui/account/login.tscn" id="3_lkrbl"]
|
||||
[ext_resource type="PackedScene" uid="uid://cdwkmx452hc4k" path="res://ui/character_create/character_create.tscn" id="4_lkrbl"]
|
||||
|
||||
[node name="Game_root" type="Node2D" unique_id=1336425327]
|
||||
script = ExtResource("1_xj5yv")
|
||||
|
||||
[node name="MainMenu" parent="." unique_id=1731390780 instance=ExtResource("2_pjpa4")]
|
||||
visible = false
|
||||
|
||||
[node name="Login" parent="." unique_id=1694671237 instance=ExtResource("3_lkrbl")]
|
||||
|
||||
[node name="CharacterSelect" parent="." unique_id=2079351175 instance=ExtResource("3_bxsma")]
|
||||
visible = false
|
||||
|
||||
[node name="CharacterCreate" parent="." unique_id=2056198803 instance=ExtResource("4_lkrbl")]
|
||||
visible = false
|
||||
|
|
|
|||
|
|
@ -14,7 +14,15 @@ extends Node
|
|||
# signal server_message_received(message, type)
|
||||
|
||||
# UI-Events
|
||||
signal join_requested(ip: String)
|
||||
signal join_requested(ip: String, username: String, password: String)
|
||||
|
||||
@warning_ignore("unused_signal")
|
||||
signal host_requested()
|
||||
|
||||
signal area_join_requested()
|
||||
|
||||
signal show_characters(characters:Array)
|
||||
|
||||
signal character_created(character: CharacterData)
|
||||
|
||||
signal create_character_screen()
|
||||
|
|
|
|||
|
|
@ -23,4 +23,4 @@ func send_message(message: String):
|
|||
|
||||
@rpc("authority", "call_remote", "reliable")
|
||||
func receive_message(sender_name: String, message: String, channel: String):
|
||||
message_received.emit(sender_name, message, channel)
|
||||
message_received.emit(sender_name, message, channel)
|
||||
|
|
|
|||
|
|
@ -30,15 +30,23 @@ func host_game():
|
|||
multiplayer.peer_disconnected.connect(_on_player_disconnected)
|
||||
print("Server gestartet. id=" + str(multiplayer.get_unique_id()))
|
||||
|
||||
func join_game(ip = "127.0.0.1"):
|
||||
func join_game(ip: String, username: String, password: String):
|
||||
print("NetworkManager.join_game(", ip, "/", username, "/", password)
|
||||
var peer = ENetMultiplayerPeer.new()
|
||||
peer.create_client(ip, PORT)
|
||||
multiplayer.multiplayer_peer = peer
|
||||
|
||||
|
||||
func _on_player_connected(id):
|
||||
print("Player connected with id:", id)
|
||||
# Standardmäßig in Area 1 starten
|
||||
change_player_area(id, "keuwin_grasland")
|
||||
client_show_characters.rpc_id(id, [])
|
||||
|
||||
|
||||
@rpc("authority", "call_remote", "reliable")
|
||||
func client_show_characters(characters):
|
||||
print("Got client_show_characters")
|
||||
GameEvents.show_characters.emit(characters)
|
||||
|
||||
|
||||
func _on_player_disconnected(id):
|
||||
if not multiplayer.is_server(): return
|
||||
|
|
|
|||
|
|
@ -14,5 +14,5 @@ func _on_join_button_pressed():
|
|||
# Hier findet später die Prüfung gegen den Server statt
|
||||
# Im Moment simulieren wir einfach einen erfolgreichen Login
|
||||
#TODO
|
||||
GameEvents.join_requested.emit(ip_input.text)
|
||||
GameEvents.join_requested.emit(ip_input.text, username, password)
|
||||
hide()
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ offset_left = 122.0
|
|||
offset_top = -72.0
|
||||
offset_right = 231.0
|
||||
offset_bottom = -41.0
|
||||
text = "test"
|
||||
text = "test_user"
|
||||
|
||||
[node name="PasswordLineEdit" type="LineEdit" parent="." unique_id=214865529]
|
||||
layout_mode = 0
|
||||
|
|
@ -75,7 +75,7 @@ offset_left = 121.0
|
|||
offset_top = -38.0
|
||||
offset_right = 230.0
|
||||
offset_bottom = -7.0
|
||||
text = "test"
|
||||
text = "test_pw"
|
||||
|
||||
[connection signal="pressed" from="Join_Button" to="." method="_on_join_button_pressed"]
|
||||
[connection signal="button_up" from="Host_Button" to="." method="_on_host_pressed"]
|
||||
|
|
|
|||
21
weltenauge/ui/character_create/character_create.gd
Normal file
21
weltenauge/ui/character_create/character_create.gd
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
extends Control
|
||||
|
||||
@onready var name_line_edit: LineEdit = $NameLineEdit
|
||||
|
||||
func _ready():
|
||||
GameEvents.create_character_screen.connect(show_creation_screen)
|
||||
|
||||
func show_creation_screen():
|
||||
name_line_edit.text = ""
|
||||
show()
|
||||
|
||||
func _on_create_button_pressed() -> void:
|
||||
var new_character = CharacterData.new()
|
||||
new_character.name = name_line_edit.text
|
||||
GameEvents.character_created.emit(new_character)
|
||||
hide()
|
||||
|
||||
|
||||
func _on_cancel_button_pressed() -> void:
|
||||
get_parent().get_node("CharacterSelect").show()
|
||||
hide()
|
||||
1
weltenauge/ui/character_create/character_create.gd.uid
Normal file
1
weltenauge/ui/character_create/character_create.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://dx24rxnsd0eoj
|
||||
42
weltenauge/ui/character_create/character_create.tscn
Normal file
42
weltenauge/ui/character_create/character_create.tscn
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
[gd_scene format=3 uid="uid://cdwkmx452hc4k"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dx24rxnsd0eoj" path="res://ui/character_create/character_create.gd" id="1_mdh5q"]
|
||||
|
||||
[node name="CharacterCreate" type="Control" unique_id=2056198803]
|
||||
layout_mode = 3
|
||||
anchors_preset = 0
|
||||
script = ExtResource("1_mdh5q")
|
||||
|
||||
[node name="NameLabel" type="Label" parent="." unique_id=1413425912]
|
||||
layout_mode = 0
|
||||
offset_left = 24.0
|
||||
offset_top = 32.0
|
||||
offset_right = 82.0
|
||||
offset_bottom = 61.0
|
||||
text = "Name:"
|
||||
|
||||
[node name="CreateButton" type="Button" parent="." unique_id=50672893]
|
||||
layout_mode = 0
|
||||
offset_left = 29.0
|
||||
offset_top = 81.0
|
||||
offset_right = 140.0
|
||||
offset_bottom = 117.0
|
||||
text = "Erstellen"
|
||||
|
||||
[node name="CancelButton" type="Button" parent="." unique_id=861690836]
|
||||
layout_mode = 0
|
||||
offset_left = 175.0
|
||||
offset_top = 80.0
|
||||
offset_right = 286.0
|
||||
offset_bottom = 116.0
|
||||
text = "Abbrechen"
|
||||
|
||||
[node name="NameLineEdit" type="LineEdit" parent="." unique_id=2114380893]
|
||||
layout_mode = 0
|
||||
offset_left = 89.0
|
||||
offset_top = 29.0
|
||||
offset_right = 288.0
|
||||
offset_bottom = 60.0
|
||||
|
||||
[connection signal="pressed" from="CreateButton" to="." method="_on_create_button_pressed"]
|
||||
[connection signal="pressed" from="CancelButton" to="." method="_on_cancel_button_pressed"]
|
||||
|
|
@ -1,33 +1,25 @@
|
|||
extends Control
|
||||
|
||||
@onready var character_list = $ItemList # Oder Tree, je nachdem wie die Liste aussieht
|
||||
@onready var character_item_list: ItemList = $CharacterItemList
|
||||
|
||||
var characters: Array[CharacterData] = []
|
||||
|
||||
func _ready():
|
||||
# Vorhandene Charaktere laden
|
||||
load_characters()
|
||||
update_ui()
|
||||
GameEvents.show_characters.connect(show_list)
|
||||
GameEvents.character_created.connect(character_created)
|
||||
|
||||
func load_characters():
|
||||
# (Hier kommt die Logik zum Durchsuchen des "user://" Ordners nach JSON-Dateien hin)
|
||||
# (Für den Anfang können wir einfach einen Standard-Charakter erstellen)
|
||||
#var data = SaveLoad.load_character()
|
||||
|
||||
var data = null
|
||||
if data == null:
|
||||
data = CharacterData.new()
|
||||
data.id = "000001" # Eindeutige ID generieren (später)
|
||||
characters = [data]
|
||||
SaveLoad.save_character(data)
|
||||
else:
|
||||
characters = [data]
|
||||
func character_created(character):
|
||||
characters.append(character)
|
||||
character_item_list.add_item(character.name)
|
||||
show()
|
||||
|
||||
func show_list(characters: Array):
|
||||
print("show_list triggered")
|
||||
character_item_list.clear()
|
||||
for character: CharacterData in characters:
|
||||
character_item_list.add_item(character.name)
|
||||
show()
|
||||
|
||||
func update_ui():
|
||||
character_list.clear()
|
||||
for char in characters:
|
||||
character_list.add_item(char.name) # Hier später: Icons, Stats etc.
|
||||
|
||||
func _on_character_selected(index):
|
||||
var selected_character = characters[index]
|
||||
|
|
@ -35,15 +27,9 @@ func _on_character_selected(index):
|
|||
# (Am Ende: StartGame.emit(selected_character))
|
||||
pass
|
||||
|
||||
signal StartGame(character: CharacterData) # Ab hier wirds interessant.
|
||||
func _on_start_game_pressed():
|
||||
if characters.size() > 0:
|
||||
StartGame.emit(characters[0]) # Einfachheitshalber: Ersten Charakter nehmen
|
||||
# Aufräumen und die Spielwelt laden (später)
|
||||
|
||||
func _on_create_character_pressed():
|
||||
var new_character = CharacterData.new()
|
||||
new_character.id = characters.size() + 1 # Provisorische ID
|
||||
characters.append(new_character)
|
||||
SaveLoad.save_character(new_character)
|
||||
update_ui()
|
||||
|
||||
|
||||
func _on_create_character_button_pressed() -> void:
|
||||
GameEvents.create_character_screen.emit()
|
||||
hide()
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ layout_mode = 3
|
|||
anchors_preset = 0
|
||||
script = ExtResource("1_o7qwi")
|
||||
|
||||
[node name="ItemList" type="ItemList" parent="." unique_id=1442954519]
|
||||
[node name="CharacterItemList" type="ItemList" parent="." unique_id=1442954519]
|
||||
layout_mode = 0
|
||||
offset_top = 32.0
|
||||
offset_right = 368.0
|
||||
|
|
@ -21,10 +21,12 @@ offset_right = 217.0
|
|||
offset_bottom = 31.0
|
||||
text = "Charaktere:"
|
||||
|
||||
[node name="Button" type="Button" parent="." unique_id=50672893]
|
||||
[node name="CreateCharacterButton" type="Button" parent="." unique_id=50672893]
|
||||
layout_mode = 0
|
||||
offset_left = 113.0
|
||||
offset_top = 585.0
|
||||
offset_right = 224.0
|
||||
offset_bottom = 621.0
|
||||
text = "Start"
|
||||
text = "Neu"
|
||||
|
||||
[connection signal="pressed" from="CreateCharacterButton" to="." method="_on_create_character_button_pressed"]
|
||||
|
|
|
|||
|
|
@ -1,17 +0,0 @@
|
|||
extends Control
|
||||
|
||||
@onready var ip_input: TextEdit = $IPInput
|
||||
|
||||
func _on_host_button_pressed() -> void:
|
||||
print("host pressed")
|
||||
GameEvents.host_requested.emit()
|
||||
hide()
|
||||
|
||||
func _on_join_button_pressed():
|
||||
var username = $UsernameLineEdit.text
|
||||
var password = $PasswordLineEdit.text # TODO: Handle Password
|
||||
|
||||
# Hier findet später die Prüfung gegen den Server statt
|
||||
# Im Moment simulieren wir einfach einen erfolgreichen Login
|
||||
#TODO
|
||||
GameEvents.join_requested.emit(ip_input.text)
|
||||
|
|
@ -1 +0,0 @@
|
|||
uid://bp7b3a25eh6dh
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
[gd_scene format=3 uid="uid://bhywhrlwjox6t"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://bp7b3a25eh6dh" path="res://ui/menus/main_menu.gd" id="1_5oih7"]
|
||||
|
||||
[node name="MainMenu" type="Control" unique_id=1694671237]
|
||||
layout_mode = 3
|
||||
anchors_preset = 0
|
||||
script = ExtResource("1_5oih7")
|
||||
|
||||
[node name="IPInput" type="TextEdit" parent="." unique_id=1340335140]
|
||||
custom_minimum_size = Vector2(150, 40)
|
||||
layout_mode = 0
|
||||
offset_left = 8.0
|
||||
offset_top = 7.0
|
||||
offset_right = 158.0
|
||||
offset_bottom = 47.0
|
||||
text = "127.0.0.1"
|
||||
|
||||
[node name="Join_Button" type="Button" parent="." unique_id=811892478]
|
||||
layout_mode = 0
|
||||
offset_left = 13.0
|
||||
offset_top = 58.0
|
||||
offset_right = 51.0
|
||||
offset_bottom = 89.0
|
||||
text = "Join"
|
||||
|
||||
[node name="Host_Button" type="Button" parent="." unique_id=1465654892]
|
||||
layout_mode = 0
|
||||
offset_left = 111.0
|
||||
offset_top = 58.0
|
||||
offset_right = 155.0
|
||||
offset_bottom = 89.0
|
||||
text = "Host"
|
||||
|
||||
[connection signal="button_up" from="Join_Button" to="." method="_on_join_pressed"]
|
||||
[connection signal="button_up" from="Host_Button" to="." method="_on_host_pressed"]
|
||||
Loading…
Add table
Add a link
Reference in a new issue