renaming Events and RPCs
This commit is contained in:
parent
2d85376d91
commit
04f9b570d8
7 changed files with 50 additions and 29 deletions
|
|
@ -124,3 +124,31 @@ Die Konfiguration des `MultiplayerSynchronizer` für wiederverwendbare Szenen (w
|
|||
|
||||
- Handhabt nicht nur originäre Objekterzeugung in den Levels, sondern auch Objektaktualisierungen für "Late Joiner"
|
||||
- Generischer MultiplayerSpawner in Basis Level, von dem alle Level erben, so dass die Spawnliste nur 1x bearbeitet werden muss
|
||||
|
||||
## Namenskonventionen
|
||||
Signale:
|
||||
Verwenden Sie einheitliche Präfixe, um die Quelle des Signals anzugeben (z.B. player_, ui_, network_).
|
||||
Verwenden Sie Verben in der Vergangenheitsform, um anzuzeigen, dass ein Ereignis stattgefunden hat (z.B. player_moved, ui_buttonPressed, network_connected).
|
||||
|
||||
RPCs:
|
||||
An den Server gerichtet RPCs beginnen mit src_ und an den Client gerictete RPCs beginnen mit cl_
|
||||
|
||||
Variablen:
|
||||
- snake_case für lokale Variablen und Funktionsnamen (z.B. player_health, calculate_damage).
|
||||
- PascalCase für Klassennamen und Ressourcen (z.B. CharacterData, MyCustomShader).
|
||||
- Konstanten in GROSSBUCHSTABEN (z.B. MAX_HEALTH, DEFAULT_SPEED).
|
||||
|
||||
## 9. Reihenfolge rpc Methoden
|
||||
- Programmstart: Autoload Singletons: NetworkManager, GameEvents und ChatManager werden instanziert.
|
||||
-- Wenn der NetworkManager erkennt, dass er headless ist, startet er automatisch den Server
|
||||
- Die Haupt Szene startet: game_root.tscn - in ihr sind alle UI Scenen eingebettet. Bis auf eine ( Login ) sind alle hidden.
|
||||
-- Login beinhaltet eine UI, in der man Host oder Join anwählen kann. Zu join gehört auch noch Username und Passwort
|
||||
- Es wird Join geklickt:
|
||||
* GameEvents.ui_join_requested.emit(ip_input.text, username, password)
|
||||
* Der NetworkManager des Clients hat das Signal abonniert und startet join_game, das den MultiplayerPeer instanziert.
|
||||
* Der NetworkManager des Servers empfängt das Signal _on_player_connected aktiviert auf dem Client
|
||||
=> client_show_characters.rpc_id(id, []) , was auf dem Client die Charakterliste anzeigt( die aktuell leer ist).
|
||||
In der Charakterliste kann über einen Button ein neuer Charakter angelegt werden. Der Button
|
||||
löst aus: GameEvents.create_character_screen.emit() , der von CharacterCreate abonniert ist, und dort die
|
||||
Methode show_creation_screen auslöst.
|
||||
** Wird das Formular ausgefüllt und Create angeklickt, löst dies die an den Server gerichtete rpc store_player_charakter aus.
|
||||
|
|
|
|||
|
|
@ -1,28 +1,18 @@
|
|||
extends Node
|
||||
|
||||
@warning_ignore("unused_signal")
|
||||
|
||||
# Spieler-bezogene Events
|
||||
# signal player_health_changed(new_health, max_health)
|
||||
# signal player_xp_gained(amount)
|
||||
|
||||
# Welt-bezogene Events
|
||||
# signal area_transition_started(area_name)
|
||||
# signal area_loading_finished
|
||||
|
||||
# Netzwerk-Events
|
||||
# signal server_message_received(message, type)
|
||||
|
||||
# UI-Events
|
||||
signal join_requested(ip: String, username: String, password: String)
|
||||
signal ui_join_requested(ip: String, username: String, password: String)
|
||||
|
||||
@warning_ignore("unused_signal")
|
||||
signal host_requested()
|
||||
signal ui_host_requested()
|
||||
|
||||
signal area_join_requested()
|
||||
signal player_area_join_requested(area_key: String)
|
||||
signal ui_area_join_requested(area_key: String)
|
||||
|
||||
signal show_characters(characters:Array)
|
||||
signal ui_show_characters(characters:Array)
|
||||
|
||||
signal character_created(character: CharacterData)
|
||||
signal ui_show_character_create()
|
||||
|
||||
signal create_character_screen()
|
||||
signal ui_character_created(character: CharacterData)
|
||||
|
||||
signal ui_character_select()
|
||||
|
|
|
|||
|
|
@ -16,8 +16,8 @@ var area_paths = {
|
|||
var player_worlds = {}
|
||||
|
||||
func _ready():
|
||||
GameEvents.host_requested.connect(host_game)
|
||||
GameEvents.join_requested.connect(join_game)
|
||||
GameEvents.ui_host_requested.connect(host_game)
|
||||
GameEvents.ui_join_requested.connect(join_game)
|
||||
|
||||
if DisplayServer.get_name() == "headless" or OS.get_cmdline_args().has("--server"):
|
||||
host_game()
|
||||
|
|
|
|||
|
|
@ -4,12 +4,12 @@ extends Control
|
|||
|
||||
func _on_host_button_pressed() -> void:
|
||||
print("host pressed")
|
||||
GameEvents.host_requested.emit()
|
||||
GameEvents.ui_host_requested.emit()
|
||||
hide()
|
||||
|
||||
func _on_join_button_pressed():
|
||||
var username = $UsernameLineEdit.text
|
||||
var password = $PasswordLineEdit.text # TODO: Handle Password
|
||||
|
||||
GameEvents.join_requested.emit(ip_input.text, username, password)
|
||||
GameEvents.ui_join_requested.emit(ip_input.text, username, password)
|
||||
hide()
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ extends Control
|
|||
@onready var name_line_edit: LineEdit = $NameLineEdit
|
||||
|
||||
func _ready():
|
||||
GameEvents.create_character_screen.connect(show_creation_screen)
|
||||
GameEvents.ui_show_character_create.connect(show_creation_screen)
|
||||
|
||||
func show_creation_screen():
|
||||
name_line_edit.text = ""
|
||||
|
|
@ -12,7 +12,7 @@ func show_creation_screen():
|
|||
func _on_create_button_pressed() -> void:
|
||||
var new_character = CharacterData.new()
|
||||
new_character.name = name_line_edit.text
|
||||
GameEvents.character_created.emit(new_character)
|
||||
GameEvents.ui_character_created.emit(new_character)
|
||||
hide()
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@ extends Control
|
|||
var characters: Array[CharacterData] = []
|
||||
|
||||
func _ready():
|
||||
GameEvents.show_characters.connect(show_list)
|
||||
GameEvents.character_created.connect(character_created)
|
||||
GameEvents.ui_show_characters.connect(show_list)
|
||||
GameEvents.ui_character_created.connect(character_created)
|
||||
|
||||
func character_created(character):
|
||||
characters.append(character)
|
||||
|
|
@ -28,8 +28,10 @@ func _on_character_selected(index):
|
|||
pass
|
||||
|
||||
|
||||
|
||||
|
||||
func _on_create_character_button_pressed() -> void:
|
||||
GameEvents.create_character_screen.emit()
|
||||
hide()
|
||||
|
||||
# Doubleclick on Character should start area transition
|
||||
func _on_character_item_list_item_activated(index: int) -> void:
|
||||
pass # Replace with function body.
|
||||
|
|
|
|||
|
|
@ -29,4 +29,5 @@ offset_right = 224.0
|
|||
offset_bottom = 621.0
|
||||
text = "Neu"
|
||||
|
||||
[connection signal="item_activated" from="CharacterItemList" to="." method="_on_character_item_list_item_activated"]
|
||||
[connection signal="pressed" from="CreateCharacterButton" to="." method="_on_create_character_button_pressed"]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue