using asap.core; if (!UnityEngine.Application.isPlaying) return "Refused: not playing"; var user = GContext.container.Resolve(); var api = GContext.container.Resolve(); var input = UnityEngine.GameObject.Find("PFLoginAct(Clone)/CustomId/Dialog/ContentArea/InputField (Legacy)"); var button = UnityEngine.GameObject.Find("PFLoginAct(Clone)/CustomId/Dialog/OKButton"); if (user.IsAuthorized || input == null || button == null || api.ApiBaseUri.AbsoluteUri != "http://s101.local:18080/") return "Refused: retry input unavailable"; var lifetime = user.LoginLifetime; input.GetComponent().text = "101"; button.GetComponent().onClick.Invoke(); var until = UnityEngine.Time.realtimeSinceStartup + 25f; while (!user.IsAuthorized && UnityEngine.Time.realtimeSinceStartup < until) await Awaiters.NextFrame; var sceneAtExit = UnityEngine.SceneManagement.SceneManager.GetActiveScene().name; if (!user.IsAuthorized || sceneAtExit != "LoginStage") return $"Not covered: Authorized={user.IsAuthorized}; Scene={sceneAtExit}"; game.QuitStage.Logout = true; await GContext.container.Resolve().SwitchStageAsync("QuitStage"); await System.Threading.Tasks.Task.Delay(6500); var current = GContext.container.Resolve(); return $"Scenario=success-delay; AuthorizedAtExit=True; SceneAtExit={sceneAtExit}; OldCancelled={lifetime.IsCancellationRequested}; OldAuthorized={user.IsAuthorized}; OldInternalId={user.InternalId}; OldCookieCount={api.Cookie.Count}; CurrentAuthorized={current?.IsAuthorized}; Scene={UnityEngine.SceneManagement.SceneManager.GetActiveScene().name}";