update
This commit is contained in:
78
tests/kampagne.gd
Normal file
78
tests/kampagne.gd
Normal file
@@ -0,0 +1,78 @@
|
||||
extends "res://tests/basis.gd"
|
||||
## Kampagne: Wertung, Rang, Verschwinden und Rückkehr der Kapitäne,
|
||||
## Speichern und Laden, und eine echte Partie gegen einen Kapitän im
|
||||
## Simulationsmodus.
|
||||
|
||||
var game: Node
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
Kampagne.datei = "user://kampagne_test.json"
|
||||
Kampagne.zuruecksetzen()
|
||||
add_child(preload("res://scenes/main.tscn").instantiate())
|
||||
await get_tree().process_frame
|
||||
_lauf()
|
||||
|
||||
|
||||
func _seats(alive: Array, namen: Array) -> Array:
|
||||
var out: Array = []
|
||||
for i in namen.size():
|
||||
out.append({"name": namen[i], "alive": alive[i]})
|
||||
return out
|
||||
|
||||
|
||||
func _lauf() -> void:
|
||||
# --- Wertung und Rang
|
||||
_pruef("Start: 1000, Matrose", int(Kampagne.elo) == 1000 and Kampagne.mein_rang() == "Matrose")
|
||||
_pruef("Rang steigt mit der Wertung", Kampagne.rang(1300) == "Kapitän" and Kampagne.rang(800) == "Schiffsjunge")
|
||||
|
||||
# --- Sieg: Kapitän verschwindet, Wertung steigt
|
||||
Kampagne.aktiv = "Roter Jack"
|
||||
Kampagne.ergebnis(_seats([true, false], ["Spieler", "Roter Jack"]), [1])
|
||||
var jack: Dictionary = Kampagne.kapitaen("Roter Jack")
|
||||
_pruef("Sieg: Wertung steigt", Kampagne.elo > 1000.0)
|
||||
_pruef("Sieg: Kapitän geht auf See", int(jack.weg) == Kampagne.AUF_SEE and int(jack.geschlagen) == 1)
|
||||
_pruef("Ergebnistext steht", Kampagne.letztes.begins_with("Sieg gegen Roter Jack"))
|
||||
Kampagne.starten("Roter Jack")
|
||||
_pruef("Kein Start gegen einen auf See", Kampagne.aktiv == "" and _find(get_tree().root, "Game") == null)
|
||||
var vorher := Kampagne.elo
|
||||
|
||||
# --- Niederlage: Spieler fliegt vor dem Kapitän
|
||||
Kampagne.aktiv = "Salz-Marie"
|
||||
Kampagne.ergebnis(_seats([false, false, true], ["Spieler", "Salz-Marie", "Maat 1"]), [0, 1])
|
||||
_pruef("Niederlage: Wertung sinkt", Kampagne.elo < vorher)
|
||||
_pruef("Niederlage: Kapitänin bleibt", int(Kampagne.kapitaen("Salz-Marie").weg) == 0)
|
||||
_pruef("Jack rückt näher", int(Kampagne.kapitaen("Roter Jack").weg) == Kampagne.AUF_SEE - 1)
|
||||
|
||||
# --- Sieg, weil der Kapitän vor dem Spieler ging, obwohl ein Maat gewann
|
||||
Kampagne.aktiv = "Salz-Marie"
|
||||
Kampagne.ergebnis(_seats([false, false, true], ["Spieler", "Salz-Marie", "Maat 1"]), [1, 0])
|
||||
_pruef("Kapitän vor mir raus zählt als Sieg", int(Kampagne.kapitaen("Salz-Marie").weg) == Kampagne.AUF_SEE)
|
||||
jack = Kampagne.kapitaen("Roter Jack")
|
||||
_pruef("Jack ist zurück, stärker", int(jack.weg) == 0 and int(jack.stufe) == 1 and float(jack.elo) > 900.0)
|
||||
|
||||
# --- Speichern und Laden
|
||||
var elo_alt := Kampagne.elo
|
||||
Kampagne.speichern()
|
||||
Kampagne.elo = 0.0
|
||||
Kampagne.laden()
|
||||
_pruef("Laden stellt Wertung und Kapitäne wieder her",
|
||||
absf(Kampagne.elo - elo_alt) < 0.01 and int(Kampagne.kapitaen("Salz-Marie").weg) == Kampagne.AUF_SEE
|
||||
and int(Kampagne.kapitaen("Roter Jack").stufe) == 1)
|
||||
|
||||
# --- Echte Partie gegen Jack im Simulationsmodus
|
||||
var partien_vorher := Kampagne.partien
|
||||
Kampagne.starten("Roter Jack")
|
||||
await _warte(func(): game = _find(get_tree().root, "Game"); return game != null, 20.0)
|
||||
_pruef("Partie gegen den Kapitän steht", game != null and game.seats.size() == 2
|
||||
and String(game.seats[1].name) == "Roter Jack" and int(game.seats[1].stufe) == 1)
|
||||
game.tempo = 0.0
|
||||
game.simulation = true
|
||||
game.seats[game.local_seat].ai = true
|
||||
await _warte(func(): return game.phase == "over", 120.0)
|
||||
_pruef("Partie endet", game.phase == "over")
|
||||
_pruef("Ergebnis verbucht", Kampagne.partien == partien_vorher + 1 and Kampagne.aktiv == "" and Kampagne.letztes != "")
|
||||
_pruef("Endfeld zeigt Wertung", game.hud.over_slot.visible and Kampagne.letztes in game.hud.over_title.text
|
||||
and game.hud.over_karte.visible)
|
||||
DirAccess.remove_absolute(ProjectSettings.globalize_path(Kampagne.datei))
|
||||
_fertig()
|
||||
6
tests/kampagne.tscn
Normal file
6
tests/kampagne.tscn
Normal file
@@ -0,0 +1,6 @@
|
||||
[gd_scene load_steps=2 format=3]
|
||||
|
||||
[ext_resource type="Script" path="res://tests/kampagne.gd" id="1"]
|
||||
|
||||
[node name="Test" type="Node"]
|
||||
script = ExtResource("1")
|
||||
@@ -22,6 +22,7 @@ starte() { # name, timeout, argumente... -> Hintergrund
|
||||
|
||||
starte logik 90
|
||||
starte genau 90
|
||||
starte kampagne 90
|
||||
starte nochmal 60
|
||||
starte bots 90 2
|
||||
rm -f "$TMP/code.txt" "$TMP/code2.txt"
|
||||
@@ -52,7 +53,7 @@ done
|
||||
wait 2>/dev/null
|
||||
|
||||
ergebnis=0
|
||||
for name in logik genau nochmal bots mp_start:host mp_start:join mp_start:host2 mp_start:join2 mp_start:srv; do
|
||||
for name in logik genau kampagne nochmal bots mp_start:host mp_start:join mp_start:host2 mp_start:join2 mp_start:srv; do
|
||||
log="$TMP/$name.log"
|
||||
echo "=== $name"
|
||||
grep -E "^(OK |FEHL|SERVER:| |TEST:)" "$log"
|
||||
|
||||
@@ -19,6 +19,9 @@ func _ready() -> void:
|
||||
main.menu._show("main")
|
||||
await get_tree().create_timer(0.2).timeout
|
||||
await _bild("menue_start")
|
||||
main.menu._show("kampagne")
|
||||
await get_tree().create_timer(0.2).timeout
|
||||
await _bild("menue_seekarte")
|
||||
Net.start_singleplayer("Tester", 3, 1)
|
||||
_lauf()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user