Befund aus dem Spieltest des U3-Nachtrags: Nichts legte LuneNetPlay in die Szene. Das Spiel begann direkt in einer Partie, der Startbildschirm aus U4 war unerreichbar, und der Verlassen-Dialog beendete das Spiel statt zum Hauptmenü zu führen. - LuneWorldBuilder legt LuneNetPlay auf das Match-Objekt; Szene neu gebaut. - Das Menü bekommt ein eigenes UIDocument über dem HUD. Vorher hing es an keinem Panel, und das HUD hätte es beim ersten Partiestart geleert. - Rückkehr über „Menü“ → „Zum Menü“: HUD und Aufstellungsflächen weg, Sitzung beendet, leere Karte. Die Kamera ruht hinter dem Menü und beginnt jede Partie ungedreht. Die Bund-Wahl ist markiert, die Knopfreihe passt in die Tafel. - Tests und Benchmark ohne Startbildschirm (LuneMatchDriver.DirectStart, -luneBenchmark); Bot-Partien und Fingerabdrücke unverändert. - Neu: LuneSmoke (-luneSmoke <Ordner>), Selbsttest eines Players nach lune_smoke.gd. StartScreenTests führt ihn im Editor aus. - Tests: EditMode 29/29, PlayMode 14/14 (StartScreenTests 26/26), Verify 718/0, Fingerabdrücke DCE95C96556F3A1A und 7B8E43AEFC0D60C5 unverändert. macOS-Player: Selbsttest 26/26, Bilder in docs/port/screenshots/u4/startbildschirm/. Ein zusammenhängender PlayMode-Lauf auf dem Endstand und ein Player-Benchmark stehen aus, weil der Mac zugeklappt schlief (siehe U4-NETWORK.md). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
44 lines
1.9 KiB
C#
44 lines
1.9 KiB
C#
using System.Collections;
|
|
using Luneraria.View;
|
|
using NUnit.Framework;
|
|
using UnityEngine;
|
|
using UnityEngine.SceneManagement;
|
|
using UnityEngine.TestTools;
|
|
|
|
namespace Luneraria.UI.Tests
|
|
{
|
|
/// <summary>
|
|
/// U4 addendum: the G1 scene starts with the start screen (LuneNetPlay from the scene
|
|
/// builder), not with a running match. Runs the player's smoke test in the editor without
|
|
/// photos: start screen, offline match into the combat, "Menü" → "Zum Menü", start screen
|
|
/// again, a second offline match.
|
|
/// </summary>
|
|
public sealed class StartScreenTests
|
|
{
|
|
[UnityTest]
|
|
[Timeout(300000)]
|
|
public IEnumerator StartScreenLeadsIntoTheMatchAndBack()
|
|
{
|
|
LunePreferences.ResetSession();
|
|
LuneMatchDriver.DirectStart = false;
|
|
AsyncOperation loading = SceneManager.LoadSceneAsync("G1_Map", LoadSceneMode.Single);
|
|
while (!loading.isDone)
|
|
yield return null;
|
|
yield return null;
|
|
var net = Object.FindAnyObjectByType<LuneNetPlay>();
|
|
Assert.IsNotNull(net, "the scene builder puts the start screen into the scene");
|
|
Assert.IsTrue(net.enabled && net.Menu != null, "without DirectStart the shell takes over");
|
|
Assert.AreSame(net, net.Game.Net, "the game controller knows its shell");
|
|
var smoke = net.gameObject.AddComponent<LuneSmoke>();
|
|
smoke.Net = net;
|
|
smoke.QuitWhenDone = false;
|
|
float start = Time.realtimeSinceStartup;
|
|
while (!smoke.Done && Time.realtimeSinceStartup - start < 180f)
|
|
yield return null;
|
|
LuneMatchDriver.DirectStart = true;
|
|
Assert.IsTrue(smoke.Done, "the smoke test finished");
|
|
Assert.IsEmpty(smoke.Failed, string.Join("\n", smoke.Failed));
|
|
Debug.Log("LUNE_START_SCREEN " + smoke.Passed.Count + " checks passed");
|
|
}
|
|
}
|
|
}
|