Files
pirate-dice/tests/mp_server.gd
2026-09-16 15:04:02 +02:00

40 lines
1.2 KiB
GDScript

extends "res://tests/basis.gd"
## Spielserver im Zeitraffer. Meldet Ende und Endstand, wartet dann noch,
## damit die Clients ihr Ende selbst sehen.
var game: Node
func _ready() -> void:
var t := 0.0
var runden := 0
var letzte := ""
var zuletzt := "" # letzter gesehener Stand - die Clients gehen sofort,
# dann räumt der Server den Raum ab, bevor wir gucken
while t < 1500.0:
await get_tree().create_timer(0.2).timeout
t += 0.2
if game == null:
game = _find(get_tree().root, "Game")
if game != null:
game.tempo = 0.0
continue
if not is_instance_valid(game):
break
if game.phase != letzte:
letzte = game.phase
if letzte == "roll":
runden += 1
var staende: Array = game.seats.map(func(x): return "%s=%d" % [x.name, x.count])
zuletzt = "%s '%s' Runden=%d %s" % [game.phase, game.banner, runden, staende]
if game.phase == "over":
break
print("SERVER: Ende %s" % zuletzt)
var alt: Node = game
var neu := await _warte(func(): game = _find(get_tree().root, "Game"); return game != null and game != alt, 15.0)
if neu:
game.tempo = 0.0
print("SERVER: Nochmal-Partie aufgebaut=%s" % neu)
await get_tree().create_timer(15.0).timeout
get_tree().quit()