using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Threading.Tasks;
using HotUpdate.Gameplay;
using HotUpdate.Net;
using HotUpdate.UI;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using TMPro;
using UnityEditor;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
/// Unseeded first-day acceptance via actual EventSystem clicks and isolated HTTP.
public static class VerifyFirstFive
{
const string Endpoint = "http://127.0.0.1:18085";
const string Key = "AIGame.FirstFive.";
static string Repo => Path.GetFullPath(Path.Combine(Application.dataPath, "../.."));
static string Output => Path.Combine(Repo, "Tools/output/first_five");
static PrototypeFlow Flow => UnityEngine.Object.FindObjectOfType();
static T Get(string field) => (T)typeof(PrototypeFlow).GetField(field, BindingFlags.Instance | BindingFlags.NonPublic).GetValue(Flow);
static void Set(string field, object value) => typeof(PrototypeFlow).GetField(field, BindingFlags.Instance | BindingFlags.NonPublic).SetValue(Flow, value);
static void Check(bool value, string message) { if (!value) throw new Exception(message); }
static async Task Until(Func condition, int seconds = 35)
{
var end = DateTime.UtcNow.AddSeconds(seconds);
while (!condition()) { Check(DateTime.UtcNow < end, "Timeout: " + Flow?.Page); await Task.Delay(75); }
}
static Button Find(string name) => UnityEngine.Object.FindObjectsOfType