Prepare alpha 11 with online diagnostics

This commit is contained in:
Emporex committed 2026-10-10 20:17:39 +02:00
1 parent d53467baf2
commit 4d9e6d9185
14 files changed
+550 -77

No files matched your search

+25
View File
@@ -22,6 +22,8 @@ func _run() -> void:
game.multiplayer_manager.matchmaking_state = "hosting"
game.multiplayer_manager.private_room_code = "ABC123"
assert(game._can_invite_friends())
game.multiplayer_manager.matchmaking_state = "lobby"
assert(game._can_invite_friends(), "Im privaten Warteraum muss EINLADEN sichtbar bleiben.")
game.multiplayer_manager.matchmaking_state = "offline"
assert(not game._can_invite_friends(), "Ein alter Raumcode darf keine Einladung mehr ermöglichen.")
game.coop_online_mode = true
@@ -66,6 +68,15 @@ func _run() -> void:
online_manager._flush_pending_snapshots()
assert(received.size() == 1 and received[0].tick == 7)
assert(received[0].shots.size() == online_manager.MAX_PENDING_SNAPSHOTS)
var diagnostic_bundle: String = online_manager.get_diagnostic_bundle()
assert(diagnostic_bundle.contains("\"event\":\"window\""), "Die Online-Diagnose muss einen kopierbaren Messbericht erzeugen.")
assert(diagnostic_bundle.contains("\"queue_dropped\":3"), "Verworfene Zustände im Rückstau müssen erfasst werden.")
online_manager._finish_match_diagnostics("test_finished")
assert(online_manager.diagnostic_match_key.is_empty())
assert(online_manager.diagnostic_finished_match_key == "test-match".sha256_text().substr(0, 12))
online_manager._on_match_state({"match_id": "test-match", "op_code": online_manager.OP_SNAPSHOT,
"data": JSON.stringify({"tick": 8, "shots": []})})
assert(online_manager.diagnostic_file == null, "Nach dem Rundenende darf kein zweiter Diagnosebericht geöffnet werden.")
game._select_map(0)
game._prepare_draw_geometry()
assert(not game.draw_geometry_dirty and not game.road_tile_cache.is_empty())
@@ -79,5 +90,19 @@ func _run() -> void:
game._prepare_draw_geometry()
var partner_cells: Array = game.build_cell_cache.filter(func(cell: Dictionary) -> bool: return cell.partner)
assert(not partner_cells.is_empty(), "Die gespiegelte Koop-Seite braucht eigene Baufelder.")
assert(partner_cells.all(func(cell: Dictionary) -> bool: return cell.rect.get_center().x > game.COOP_MIRROR_X),
"Für Spieler 1 muss nur die rechte Seite als Partnerseite markiert sein.")
game.coop_online_mode = true
game.local_player_slot = 1
game.draw_geometry_dirty = true
game._prepare_draw_geometry()
partner_cells = game.build_cell_cache.filter(func(cell: Dictionary) -> bool: return cell.partner)
assert(not partner_cells.is_empty() and partner_cells.all(func(cell: Dictionary) -> bool: return cell.rect.get_center().x < game.COOP_MIRROR_X),
"Für Spieler 2 muss nur die linke Seite als Partnerseite markiert sein.")
game.camera_offset.x = game.COOP_WORLD_WIDTH - game.SCREEN.x
game._toggle_coop_side()
assert(game.status_text == "PARTNER-SEITE", "Der Seitenwechsel muss Spieler 2 links als Partnerseite benennen.")
game._toggle_coop_side()
assert(game.status_text == "DEINE SEITE", "Der Seitenwechsel muss Spieler 2 rechts als eigene Seite benennen.")
print("VOID_BASTION_ONLINE_SNAPSHOT_OK")
get_tree().quit()
+1
View File
@@ -0,0 +1 @@
uid://kwjokxtwfr0u