update
This commit is contained in:
62
tests/genau.gd
Normal file
62
tests/genau.gd
Normal file
@@ -0,0 +1,62 @@
|
||||
extends "res://tests/basis.gd"
|
||||
## Genau und Aufdecken in Etappen. Eigene Szene, damit der Ablauf innerhalb
|
||||
## der 30 s Zugzeit bleibt - danach spielt der Host den Platz automatisch.
|
||||
|
||||
var game: Node
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
add_child(preload("res://scenes/main.tscn").instantiate())
|
||||
await get_tree().process_frame
|
||||
Net.start_singleplayer("Tester", 3, 1)
|
||||
_lauf()
|
||||
|
||||
|
||||
func _menschen() -> void:
|
||||
for i in [1, 2, 3]:
|
||||
game.seats[i].ai = false
|
||||
|
||||
|
||||
func _lauf() -> void:
|
||||
await _warte(func(): game = _find(get_tree().root, "Game"); return game != null, 20.0)
|
||||
game.tempo = 0.3
|
||||
await _warte(func(): return game.phase == "bid", 40.0)
|
||||
var me: int = game.local_seat
|
||||
_menschen()
|
||||
game.must_bid.clear()
|
||||
# --- Genau-Treffer: Ansager verliert, Rufer bekommt einen
|
||||
game.must_bid.clear()
|
||||
var n3: int = game._count_face(3)
|
||||
if n3 == 0:
|
||||
game._set_die(me, 0, 3)
|
||||
n3 = 1
|
||||
var vorher: Array = []
|
||||
for i in 4:
|
||||
vorher.append(int(game.seats[i].count))
|
||||
game._do_bid(me, n3, 3)
|
||||
await _warte(func(): return game.turn == 1, 5.0)
|
||||
game._do_exact(1)
|
||||
await _warte(func(): return game.phase == "reveal", 5.0)
|
||||
_pruef("Etappe 1: noch nicht gezählt", int(game.reveal_total) == -1)
|
||||
await _warte(func(): return int(game.reveal_total) >= 0, 3.0)
|
||||
_pruef("Etappe 2: gezählt", int(game.reveal_total) == n3)
|
||||
await _warte(func(): return game.banner.begins_with("Genau!"), 3.0)
|
||||
await _warte(func(): return game.phase != "reveal", 8.0)
|
||||
_pruef("Genau: Ansager -1, Rufer +1, Rest gleich",
|
||||
int(game.seats[me].count) == vorher[0] - 1 and int(game.seats[1].count) == vorher[1] + 1
|
||||
and int(game.seats[2].count) == vorher[2] and int(game.seats[3].count) == vorher[3])
|
||||
_pruef("Rufer beginnt", game.starter == 1)
|
||||
|
||||
# --- Genau daneben
|
||||
# Erst wenn die neue Ansagerunde wirklich läuft: Platz 1 ist dran und
|
||||
# noch unbeantwortet. Ein "turn == 1" allein gilt schon beim Würfeln.
|
||||
await _warte(func(): return game.phase == "bid" and game.turn == 1 and game._answered.is_empty(), 30.0)
|
||||
var n5: int = game._count_face(5)
|
||||
game._do_bid(1, mini(n5 + 2, game._total_dice()), 5)
|
||||
await _warte(func(): return game.turn == 2 and game._answered.is_empty(), 5.0)
|
||||
var c2: int = game.seats[2].count
|
||||
game._do_exact(2)
|
||||
await _warte(func(): return game.banner.begins_with("Daneben"), 8.0)
|
||||
await _warte(func(): return game.phase != "reveal", 8.0)
|
||||
_pruef("Genau daneben: nur der Rufer verliert", int(game.seats[2].count) == c2 - 1)
|
||||
_fertig()
|
||||
Reference in New Issue
Block a user