142 lines
5.1 KiB
C#
142 lines
5.1 KiB
C#
using System;
|
|
using UnityEditor;
|
|
using UnityEditor.SceneManagement;
|
|
using UnityEngine;
|
|
using UnityEngine.SceneManagement;
|
|
using Vanguard.App;
|
|
using Vanguard.Auth;
|
|
|
|
namespace Vanguard.Editor
|
|
{
|
|
/// <summary>
|
|
/// Быстрый smoke-запуск сцен из командной строки:
|
|
/// Unity -batchmode -nographics -executeMethod Vanguard.Editor.SceneSmoke.Run.
|
|
/// Открывает Boot, входит в Play Mode, ждёт загрузку Login/Lobby и выходит.
|
|
/// </summary>
|
|
public static class SceneSmoke
|
|
{
|
|
private static double _started;
|
|
private static int _checks;
|
|
|
|
[MenuItem("Vanguard/Play Scene Smoke")]
|
|
public static void Run()
|
|
{
|
|
new TokenStore().Clear();
|
|
EditorSceneManager.OpenScene("Assets/Scenes/Boot.unity");
|
|
_started = EditorApplication.timeSinceStartup;
|
|
_checks = 0;
|
|
EditorApplication.update += Tick;
|
|
EditorApplication.EnterPlaymode();
|
|
}
|
|
|
|
[MenuItem("Vanguard/Play Playmat Scene Smoke")]
|
|
public static void RunPlaymat()
|
|
{
|
|
EditorSceneManager.OpenScene("Assets/Vanguard/Scenes/GameBoard3D.unity");
|
|
_started = EditorApplication.timeSinceStartup;
|
|
_checks = 0;
|
|
EditorApplication.update += TickPlaymat;
|
|
EditorApplication.EnterPlaymode();
|
|
}
|
|
|
|
private static void TickPlaymat()
|
|
{
|
|
if (!EditorApplication.isPlaying)
|
|
return;
|
|
|
|
_checks++;
|
|
if (EditorApplication.timeSinceStartup - _started < 5.0)
|
|
return;
|
|
|
|
EditorApplication.update -= TickPlaymat;
|
|
|
|
var board = UnityEngine.Object.FindAnyObjectByType<Vanguard.Board3D.GameBoard3D>();
|
|
var cards = UnityEngine.Object.FindObjectsByType<Vanguard.Board3D.Card3D>(
|
|
FindObjectsInactive.Exclude);
|
|
var camera = Camera.main;
|
|
var handVisible = 0;
|
|
var handCards = 0;
|
|
var fieldVisible = false;
|
|
if (camera != null)
|
|
{
|
|
foreach (var card in cards)
|
|
{
|
|
var viewport = camera.WorldToViewportPoint(card.transform.position);
|
|
if (card.Ref.Zone == Vanguard.Board3D.BoardZone.Hand
|
|
&& card.Ref.Player == 0)
|
|
{
|
|
handCards++;
|
|
if (viewport.z > 0f
|
|
&& viewport.x > 0.02f
|
|
&& viewport.x < 0.98f
|
|
&& viewport.y > 0.01f
|
|
&& viewport.y < 0.55f)
|
|
{
|
|
handVisible++;
|
|
}
|
|
}
|
|
else if (card.Ref.Zone == Vanguard.Board3D.BoardZone.Vanguard
|
|
&& card.Ref.Player == 0
|
|
&& viewport.z > 0f
|
|
&& viewport.y > 0.05f
|
|
&& viewport.y < 0.75f)
|
|
{
|
|
fieldVisible = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
var success = board != null
|
|
&& cards.Length >= 10
|
|
&& handCards > 0
|
|
&& handVisible == handCards
|
|
&& fieldVisible;
|
|
Debug.Log(
|
|
"PLAYMAT_SMOKE success=" + success
|
|
+ " board=" + (board != null)
|
|
+ " cards=" + cards.Length
|
|
+ " hand=" + handVisible + "/" + handCards
|
|
+ " fieldVisible=" + fieldVisible
|
|
+ " error=" + VanguardApp.LastInitializationError);
|
|
|
|
EditorApplication.Exit(success ? 0 : 1);
|
|
}
|
|
|
|
private static void Tick()
|
|
{
|
|
if (!EditorApplication.isPlaying)
|
|
return;
|
|
|
|
_checks++;
|
|
if (EditorApplication.timeSinceStartup - _started < 6.0)
|
|
return;
|
|
|
|
EditorApplication.update -= Tick;
|
|
|
|
var active = SceneManager.GetActiveScene().name;
|
|
var environment = GameObject.Find("Vanguard 3D Environment");
|
|
var backdrop = GameObject.Find("LoginBackdrop");
|
|
var login = GameObject.Find("LoginScreen");
|
|
var lobby = GameObject.Find("MetaScreen");
|
|
var onboarding = GameObject.Find("OnboardingScreen");
|
|
var isLogin = active == SceneFlow.Login;
|
|
var isLobby = active == SceneFlow.Lobby;
|
|
var success = (isLogin || isLobby)
|
|
&& (login != null || lobby != null || onboarding != null)
|
|
&& (isLogin ? backdrop != null : environment != null);
|
|
|
|
Debug.Log(
|
|
"SCENE_SMOKE success=" + success
|
|
+ " active=" + active
|
|
+ " env=" + (environment != null)
|
|
+ " backdrop=" + (backdrop != null)
|
|
+ " login=" + (login != null)
|
|
+ " lobby=" + (lobby != null)
|
|
+ " onboarding=" + (onboarding != null)
|
|
+ " error=" + VanguardApp.LastInitializationError);
|
|
|
|
EditorApplication.Exit(success ? 0 : 1);
|
|
}
|
|
}
|
|
}
|