40 lines
1.2 KiB
GDScript
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()
|