using asap.core; using game; using GameCore; using IngameDebugConsole; using System; using System.Linq; using UI.HookWheel; using UniRx; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Rendering; using UnityEngine.Rendering.Universal; using UnityEngine.SceneManagement; public class DebugFunc { public static void Init() { var config = GContext.container.Resolve(); if (config != null && (config.Get("DEBUG", "0") == "1" || config.Get("GM", "0") == "1")) { DebugLogConsole.AddCommand("Go.show", "Shows a GameObject", ShowGO); DebugLogConsole.AddCommand("Go.hide", "Shows a GameObject", HideGO); DebugLogConsole.AddCommand("Render.quality", "change quality", SetQuality); DebugLogConsole.AddCommand("Render.scale", "Set render scale [0.1-2]", SetRendererScale); DebugLogConsole.AddCommand("Render.aa", "anti aliasing", SetAntiAliasing); DebugLogConsole.AddCommand("Render.ShadowToggle", "Toggle Shadow", ToggleShadow); DebugLogConsole.AddCommand("Render.Pipline", "light num", SetRenderPipline); DebugLogConsole.AddCommand("info.GPU", "GPU Info", GpuInfo); DebugLogConsole.AddCommand("info.CPU", "CPU Info", CpuInfo); DebugLogConsole.AddCommand("info.Support", "Device Support", SupportInfo); DebugLogConsole.AddCommand("FPS", "Toggle FPS", Fps); DebugLogConsole.AddCommand("LTPL", "开关 Leviathan Timeline 性能日志(不影响 FPS 浮层)", ToggleLeviathanTimelinePerf); DebugLogConsole.AddCommand("LTCW", "设置 CatchUp 消费等待(ms) 1~50", SetLeviathanCatchUpWaitMs); DebugLogConsole.AddCommand("LTCW?", "查询 CatchUp 消费等待(ms)", GetLeviathanCatchUpWaitMs); DebugLogConsole.AddCommand("Render.antiAliasing", "change antiAliasing", SetRTAntiAliasing); DebugLogConsole.AddCommand("T.hotupdate", "hot update test", HotUpdateTest); DebugLogConsole.AddCommand("UI.hide", "Hide UI", ToggleUI); DebugLogConsole.AddCommand("Misc.tg", "Hide misc", ToggleMisc); DebugLogConsole.AddCommand("aihelp", "open aihelp", OpenAIHelp); DebugLogConsole.AddCommand("review", "open review", OpenReview); DebugLogConsole.AddCommand("Pay.sku", "sku list", GetSKUs); DebugLogConsole.AddCommand("ad.debug", "Active Ad Debug", ActiveAdDebug); DebugLogConsole.AddCommand("ad.media", "Active Ad Media Debug", ActiveAdMedia); DebugLogConsole.AddCommand("notify.send", "Local Notify Test", NotifyTest); DebugLogConsole.AddCommand("notify.setting", " Notify set", NotifySettingTest); DebugLogConsole.AddCommand("notify.status", " Notify Status", NotificationStatus); DebugLogConsole.AddCommand("notify.time", "Notify at certain time", NotifyAtTime); DebugLogConsole.AddCommand("mail.status", "Print cache mail", PrintMail); DebugLogConsole.AddCommand("mail.fetch", "fetch mail to cache", FetchMail); DebugLogConsole.AddCommand("rt.test", "test realtime", RtTest); DebugLogConsole.AddCommand("account.loginTime", "login time - 1day", LoginTime); DebugLogConsole.AddCommand("account.info", "account info", AccoutInfo); DebugLogConsole.AddCommand("account.authortest", "author test", AuthorTest); DebugLogConsole.AddCommand("aihelp.test", "aihelp test", AIHelpTest); DebugLogConsole.AddCommand("open.washing", "Open Washing Activity", OpenWashingActivity); DebugLogConsole.AddCommand("deeplink.test", "Test if deeplink connects. If so, returns pid and uid.", TestDeepLink); DebugLogConsole.AddCommand("PotionGoTo", "Potion Go To", PotionGoTo); DebugLogConsole.AddCommand("potion.clear", "Potion Go To", PotionClear); DebugLogConsole.AddCommand("pinball.clear", "Clear Pinball Data", PinballDataClear); DebugLogConsole.AddCommand("pinball.fire", "Launch Pinball Pellet", PinballFirePellet); DebugLogConsole.AddCommand("scratch.clear", "Clear Scratch Ticket Data", ScratchTicketDataClear); DebugLogConsole.AddCommand("shooting.go", "Goto", ShootingRangeDebug); DebugLogConsole.AddCommand("eventpartner.activate", "Activate a temp event", EventPartnerDebugActivate); DebugLogConsole.AddCommand("bingo.ts", "OpenTestScene", ShowTestBingoPanel); DebugLogConsole.AddCommand("bingo.seeds", "TestBingoSeedPickingRng", TestBingoSeedPickingRng); DebugLogConsole.AddCommand("bingo.instant", "Instant Bingo.", TestBingoInstantBingo); DebugLogConsole.AddCommand("srp.fswave", "toggle fullscreen wave", ToggleFSWave); DebugLogConsole.AddCommand("ib.lvl", "infinitebuilding level", SetInfiniteBuildLvl); DebugLogConsole.AddCommand("srp.fsblur", "toggle fullscreen blur", ToggleFSBlur); DebugLogConsole.AddCommand("stash", "test reward stash service", TestRewardStashService); DebugLogConsole.AddCommand("guide.clear", "clear guide data", ClearGuide); DebugLogConsole.AddCommand("pinataAct", "load pinata Act", LoadPinataAct); DebugLogConsole.AddCommand("lastpayment.clear", "Clear Last Payment Time", ClearLastPaymentTime); DebugLogConsole.AddCommand("HookWheelForecActive", "Hook Wheel Forec Active", HookWheelForecActive); DebugLogConsole.AddCommand("eps.invitecount", "GetInvitationCount", PrintEventPartnerStatueInvitationCount); DebugLogConsole.AddCommand("eps.sendbot", "Start recommending bots", EventPartnerStatueActivateBotInvitation); DebugLogConsole.AddCommand("eps.bot", "Peek Robot Data", EventPartnerStatuePeekRobot); DebugLogConsole.AddCommand("eps.pool", "Peek Player Info Pool", EventPartnerStatuePeekPlayerInfoPool); DebugLogConsole.AddCommand("eps.score", "Peek Score", EventPartnerStatuePeekScore); DebugLogConsole.AddCommand("eps.rt", "Test rt", EventPartnerStatueTestRt); DebugLogConsole.AddCommand("eps.i", "Peek inflationrate", EventPartnerStatuePeekInflationRate); DebugLogConsole.AddCommand("sr.set", "Set Social Rush Progress", SocialRushTest); DebugLogConsole.AddCommand("sr.reset", "Reset Social Rush", SocialRushReset); DebugLogConsole.AddCommand("sr.peek", "Peek Social Rush", SocialRushPeek); DebugLogConsole.AddCommand("mft.guide", "Mow For Treasure Clear Guide", EventMowForTreasureGuideClear); DebugLogConsole.AddCommand("osc.peek", "Peek Offer Story Chain", OfferStoryChainPeek); DebugLogConsole.AddCommand("osc.reset", "Reset Offer Story Chain", OfferStoryChainReset); DebugLogConsole.AddCommand("ota.peek", "Peek Offer treasure ascent", OfferTreasureAscentPeek); DebugLogConsole.AddCommand("ota.reset", "Reset Offer treasure ascent", OfferTreasureAscentReset); DebugLogConsole.AddCommand("pu.bk", "Block Pinball Kick if input is not 0. If input is 0, unblock.", PinballUncountableBlockKick); } } private static void TestDeepLink() { var res = AFHelper.Instance.GetDLReferer(out var pid, out var uid); Debug.Log($"DidReceiveDeepLink: {AFHelper.Instance.DidReceivedDeepLink}"); Debug.Log($"IsFirstLaunch: {AFHelper.Instance.IsFirstLaunch}"); if (AFHelper.Instance.DeepLinkParamsDictionary is not null) { Debug.Log($"DeepLinkParamsDic:"); foreach (var kvp in AFHelper.Instance.DeepLinkParamsDictionary) { Debug.Log($"{kvp.Key}: {kvp.Value}"); } } else { Debug.Log($"DeepLinkParamsDic: Empty."); } var message = res ? $"Deeplink success with pid: {pid}, uid: {uid}" : "Deeplink fail."; Debug.Log(message); } private static void NotifyAtTime(string time) { var now = ZZTimeHelper.UtcNow(); var fireTime = DateTime.SpecifyKind(DateTime.Parse(time), DateTimeKind.Utc); fireTime = fireTime.AddDays(now <= fireTime ? 0 : 1); var service = GContext.container.Resolve(); service.ScheduleOneTimeNotification(434200, fireTime.ToLocalTime(), "Test Note at Time", $"Test Notification @ {fireTime}."); } private static void NotifyTest() { ILocalNotificationService service = GContext.container.Resolve(); service.ScheduleOneTimeNotification(434200, DateTime.Now + TimeSpan.FromSeconds(3), "Notification", "Test Notification "); } private static void NotifySettingTest() { ILocalNotificationService service = GContext.container.Resolve(); service.OpenSettings(); } private static string NotificationStatus() { #if UNITY_ANDROID return Unity.Notifications.Android.AndroidNotificationCenter.UserPermissionToPost.ToString(); #else return Unity.Notifications.iOS.iOSNotificationCenter.GetNotificationSettings().AuthorizationStatus.ToString(); #endif } private static string HotUpdateTest() { return "hot update test Ver 0.6 - 2024-03-26:1434"; } private static string ToggleUI(string path) { GameObject homePanelGo = UIManager.Instance.gameObject.transform.Find("HomePanel").gameObject; if (homePanelGo == null) { return "UI not found."; } GameObject go = homePanelGo.transform.Find(path).gameObject; if (go == null) { return "path not found"; } go.SetActive(!go.activeSelf); return $"UI {go} toggled to {go.activeSelf}."; } private static string ToggleMisc(int idx) { GameObject go = GetGOFromPath("Env_101(Clone)/Misc"); int childCount = go.transform.childCount; if (idx >= childCount) return $"index {idx} exceeds children count{childCount}"; var child = go.transform.GetChild(idx).gameObject; if (child == null) return $"child {idx} not found"; child.SetActive(!child.activeSelf); return $"{child} toggled to {child.activeSelf}."; } private static void OpenAIHelp() { AIHelp.AIHelpSupport.Show("E001"); } private static void OpenReview() { var config = GContext.container.Resolve(); tysdk.AppRequestReview.RequestReview(config.Get(GConstant.K_APP_Store_URL, string.Empty)); } private static string ShowGO(string path) { GameObject go = GetGOFromPath(path); if (go != null) { go.SetActive(true); } return $"GameObject not found"; } private static string HideGO(string path) { GameObject go = GetGOFromPath(path); if (go != null) { go.SetActive(false); return $"{go.name} has been hidden"; } return $"GameObject not found"; } private static string SetQuality(int level) { QualityManager.ChangeQuality(level); zzwater.URPHelper.RendererFeatureSetActive(false, "FSBlur"); zzwater.URPHelper.RendererFeatureSetActive(false, "FSWave"); return $"quality set to {QualitySettings.names[QualitySettings.GetQualityLevel()]}"; } private static void SetRTAntiAliasing(int level) { var rt = new RenderTexture((int)125, (int)125, 24, RenderTextureFormat.ARGB32); rt.antiAliasing = level; } private static string SetRendererScale(float ratio) { if (ratio == 0) { return $"Render scale {CurrentRenderPipeline.renderScale}"; } ratio = Mathf.Clamp(ratio, 0.1f, 2f); var uprAsset = CurrentRenderPipeline; if (uprAsset == null) return "No UniversalRenderPipelineAsset"; var preValue = uprAsset.renderScale; uprAsset.renderScale = ratio; return $"Render scale {preValue} set to {ratio}"; } private static string SetAntiAliasing(int count) { var uprAsset = CurrentRenderPipeline; if (uprAsset == null) return "No UniversalRenderPipelineAsset"; var preValue = uprAsset.msaaSampleCount; uprAsset.msaaSampleCount = count; return $"Render scale {preValue} set to {count}"; } private static string SetRenderPipline(string name) { var currentPiplineName = GraphicsSettings.currentRenderPipeline.name; if (name == "?") { return $"Pipline set to {currentPiplineName}"; } else if (name == "-") { QualitySettings.renderPipeline = null; } else { var pipelineAsset = Addressables.LoadAssetAsync(name).WaitForCompletion(); QualitySettings.renderPipeline = pipelineAsset; } var newPipelineName = GraphicsSettings.currentRenderPipeline.name; return $"{currentPiplineName} set to {newPipelineName}"; } private static string ToggleShadow() { var cam = Camera.main; if (cam != null) { var comp = cam.GetComponent(); var preValue = comp.renderShadows; comp.renderShadows = !preValue; return $"Shadow {preValue} set to {comp.renderShadows}"; } return "Camera not found"; } private static string CpuInfo() { var props = typeof(SystemInfo).GetProperties() .Where(x => x.Name.StartsWith("processor")); var sb = new System.Text.StringBuilder(); sb.AppendLine(); foreach (var prop in props) { sb.AppendLine($"{prop.Name}: {prop.GetValue(null)}"); } return sb.ToString(); } private static string GpuInfo() { var props = typeof(SystemInfo).GetProperties() .Where(x => x.Name.StartsWith("graphics")); var sb = new System.Text.StringBuilder(); sb.AppendLine(); foreach (var prop in props) { sb.AppendLine($"{prop.Name}: {prop.GetValue(null)}"); } return sb.ToString(); } private static string SupportInfo() { var props = typeof(SystemInfo).GetProperties() .Where(x => x.Name.StartsWith("support")); var sb = new System.Text.StringBuilder(); sb.AppendLine(); foreach (var prop in props) { sb.AppendLine($"{prop.Name}: {prop.GetValue(null)}"); } return sb.ToString(); } private static void Fps() { game.RootCtx.showFPS = !game.RootCtx.showFPS; } private static void ToggleLeviathanTimelinePerf() { var on = !LeviathanLogConfig.EnableTimelineVideoPerfLog; LeviathanLogConfig.EnableTimelineVideoPerfLog = on; PlayerPrefs.SetInt("LeviathanTimelinePerf", on ? 1 : 0); PlayerPrefs.Save(); UnityEngine.Debug.Log($"[Debug] Leviathan Timeline 性能日志 = {on}(Logcat 搜 LeviathanTimeline)"); } private static void SetLeviathanCatchUpWaitMs(int ms) { var decoders = UnityEngine.Object.FindObjectsOfType(true); if (decoders == null || decoders.Length == 0) { UnityEngine.Debug.Log("[Debug] LTCW: 未找到活跃的 LeviathanVideoDecoderBase 实例"); return; } foreach (var d in decoders) { d.CatchUpConsumePerFrameWaitMs = ms; } UnityEngine.Debug.Log($"[Debug] LTCW: 已将 {decoders.Length} 个解码器 CatchUpConsumePerFrameWaitMs 设为 {ms}ms"); } private static void GetLeviathanCatchUpWaitMs() { var decoders = UnityEngine.Object.FindObjectsOfType(); if (decoders == null || decoders.Length == 0) { UnityEngine.Debug.Log("[Debug] LTCW?: 未找到活跃的 LeviathanVideoDecoderBase 实例"); return; } foreach (var d in decoders) { UnityEngine.Debug.Log($"[Debug] LTCW? {d.name}: CatchUpConsumePerFrameWaitMs={d.CatchUpConsumePerFrameWaitMs}ms"); } } private static UniversalRenderPipelineAsset CurrentRenderPipeline { get { return GraphicsSettings.currentRenderPipeline as UniversalRenderPipelineAsset; //return (UniversalRenderPipelineAsset) QualitySettings.renderPipeline; } } private static async void GetSKUs() { var iapService = GContext.container.Resolve(); if (iapService == null) { UnityEngine.Debug.Log("iapService is null"); ; return; } var sb = new System.Text.StringBuilder(); sb.AppendLine(); var skus = await iapService.GetSKUs(); foreach (var sku in skus) { sb.AppendLine(); sb.Append($" {sku.price} code {sku.price_currency_code} "); sb.AppendLine(); } UnityEngine.Debug.Log(sb.ToString()); } private static void ActiveAdDebug() { MaxSdk.SetVerboseLogging(true); MaxSdk.ShowCreativeDebugger(); } private static void ActiveAdMedia() { MaxSdk.ShowMediationDebugger(); } private static GameObject GetGOFromPath(string path) { var root = SceneManager.GetActiveScene().GetRootGameObjects(); var splitPath = path.Split('/'); var rootName = splitPath[0]; var rootGo = root.FirstOrDefault(x => x.name == rootName); if (rootGo == null) return null; if (splitPath.Length == 1) return rootGo; var childPath = string.Join("/", splitPath.Skip(1)); return rootGo.transform.Find(childPath)?.gameObject; } private static void PrintMail() { var mailService = GContext.container.Resolve() as InGameMailService; mailService.PrintCacheMail(); } private static void FetchMail() { GContext.container.Resolve().FetchMail(); } private static void RtTest() { var rtService = GContext.container.Resolve() as SignalRService; rtService.Test(); } private static void LoginTime(int hours) { var userService = GContext.container.Resolve() as game.PlayFabUserService; if (userService == null) return; var loginTime = userService.LoginTime; var newLoginTime = loginTime.AddHours(hours); var prop = userService.GetType().GetProperty("LoginTime"); prop.SetValue(userService, newLoginTime); Debug.Log($"loginTime: {loginTime} newLoginTime: {newLoginTime} prop: {userService.LoginTime}"); } private static void AccoutInfo() { var userService = GContext.container.Resolve() as game.PlayFabUserService; if (userService == null) return; Debug.Log($"pfid: {userService.UserId} tyid: {userService.CustomId} lastLogin: {userService.LoginTime}"); if (PlayerPrefs.HasKey("KEY_ACCOUNT_INFO")) { Debug.Log("Saved account info: " + PlayerPrefs.GetString("KEY_ACCOUNT_INFO")); } else { Debug.Log("No saved account info"); } } private static async void AuthorTest() { var svr = GContext.container.Resolve(); var result = await svr.GetStringAsync("account/authortest"); Debug.Log($"AuthorTest {result}"); } private static void AIHelpTest() { RedPointManager.Instance.SetRedPointState(RedPointName.AIHelp_Msg, true, 1); } private static void OpenWashingActivity() { ToggleUI("safearea/RightPanel/layout/btn_washing"); } private static void PotionClear() { GContext.container.Resolve().ClearPotionData(); Debug.Log("--- Potion Clear ok"); } private static void PotionGoTo(int levelID) { GContext.container.Resolve().GoToPotionLevel(levelID); Debug.Log("--- PotionGoTo levelID:" + levelID + ", ok"); } private static void PinballDataClear() { GContext.container.Resolve().ClearData(); Debug.Log("--- PinballDataClear ok"); } private static void PinballFirePellet(float force) { FishingPinballAct.Publish(new EventPinballLaunchPelletData() { Force = force }); Debug.Log("--- PinballFirePellet ok, force:" + force); } private static void ScratchTicketDataClear() { GContext.container.Resolve().ClearData(); Debug.Log("--- Scratch Ticket Data Clear ok"); } private static void ShootingRangeDebug(int n) { GContext.Publish(new EventShootingRangeDebug { StageIdx = n }); Debug.Log($"Switch to {n}."); } private static void EventPartnerDebugActivate() { // var d = GContext.container.Resolve(); // if (d is null) // { // Debug.Log( $"[EventPartner] No data found, cannot activate."); // return; // } // _ = d.LoadDataDebug(); Debug.Log($"[EventPartner] This function is obsoleted for now."); } private static void ToggleFSWave() { var feature = zzwater.URPHelper.FindAndCacheRendererFeature("FSWave"); if (feature == null) Debug.LogError($"Feature FSWave not found"); else feature.SetActive(!feature.isActive); } private static void SetInfiniteBuildLvl(int level) { var s = GContext.container.Resolve().InfiniteBuildingData; if (s == null) { Debug.LogError($"No ib data found."); return; } var data = new InfiniteBuildingData(); data.Deserialize(s); var delta = level - data.Lvl; data.Lvl = level; for (int i = 0; i < data.Record.Count; i++) { var r = data.Record[i]; r.Pos += Vector2.up * delta; data.Record[i] = r; } data.UploadData(); Debug.Log($"Done."); } private static void ToggleFSBlur() { var feature = zzwater.URPHelper.FindAndCacheRendererFeature("FSBlur"); if (feature == null) Debug.LogError($"Feature FSWave not found"); else feature.SetActive(!feature.isActive); } private static void ShowTestBingoPanel() { GContext.container.Register().AsSingleton(); GContext.container.Resolve().InitTest(); GContext.Publish(new UnloadActToNextAct { actId = "EventBingoAct", TransitionPanel = UITypes.CloudTransitionPanel }); } private static void TestBingoSeedPickingRng() { var dataList = GContext.container.Resolve().TbEventBingoMain.DataList; var tc = new EventBingoTableContext(40701); int[] stat = { 0, 0, 0, 0 }; int seed, statCount = 10000; var sb = new System.Text.StringBuilder(); for (int i = 0; i < statCount; i++) { seed = tc.PickSeed(roundCount: 10086); for (int j = 0; j < 4; j++) { if (dataList[j].SeedID.Contains(seed)) { stat[j]++; break; } } sb.AppendLine($"{seed}, "); } Debug.Log($"[EventBingo] Test Result:\n1Bingo:{stat[0] / (float)statCount * 100}%,\n2Bingo: {stat[1] / (float)statCount * 100}%,\n3Bingo: {stat[2] / (float)statCount * 100}%,\n4Bingo: {stat[3] / (float)statCount * 100}%"); Debug.Log("[EventBingo] Seeds: \n" + sb.ToString()); } private static void TestBingoInstantBingo() { var model = GContext.container.Resolve(); if (model == null) { Debug.Log("[EventBingo] Bingo model not found!"); return; } model.ActivateInstantBingo(); Debug.Log("[EventBingo] Instant Bingo activated."); } private static void TestRewardStashService(string cmd) { const string reset = "reset", upload = "upload", load = "load", flush = "flush", add = "add"; var service = GContext.container.Resolve(); switch (cmd) { case reset: service.Reset(); Debug.Log("Reset Done."); break; case upload: service.UploadData(); Debug.Log("Upload Done."); break; case load: service.LoadData(); Debug.Log("Load Done."); break; case flush: service.Flush(); Debug.Log("Flush Done."); break; case add: GContext.Publish(new DeferredRewardStashService.EventStashItem { Item = new ItemData(1001, 100) }); Debug.Log("Add Done."); break; default: Debug.Log("Invalid command. Available commands:\n" + "- reset: Clear all stash data\n" + "- add: Add 1001 * 100\n" + "- upload: Upload stash data to playfab\n" + "- load: Load stash data from playfab\n" + "- flush: Process and clear all pending rewards"); break; } } static void ClearGuide() { GContext.container.Resolve().GMClearGuide(); UIManager.Instance.DestroyUI(UITypes.GuidancePanel); } static void LoadPinataAct() { GContext.Publish(new UnloadActToNextAct { actId = "PinataPackAct_Pony" }); GContext.OnEvent().Subscribe((actLoadedEvent) => { var Act = GContext.container.ResolveAct("PinataPackAct_Pony"); if (Act is PinataPackAct pinataPackAct) { Debug.Log($"jsd Act is PinataPackAct pinataPackAct"); var rigidBody = pinataPackAct.GetComponentsInChildren(); foreach (var r in rigidBody) { r.useGravity = false; } var gameObject = GetGOFromPath("PinataPackAct_Pony(Clone)/Stage1"); gameObject.transform.localPosition = new Vector3(0, 0, 0.2f); gameObject.transform.localRotation = Quaternion.Euler(-21, 0, 0); } var ui = UIManager.Instance.GetContainedUI(UITypes.PinataPack_PonySettlementPanel); ui.FindChildGameObject("btn_scene")?.SetActive(false); ui.FindChildGameObject("btn_close")?.SetActive(true); }); } static void ClearLastPaymentTime() { PlayFabMgr.Instance.UpdateUserDataValue("LastPaymentTime", ""); } static void HookWheelForecActive() { GContext.container.Resolve()?.ForceActive(); } static void PrintEventPartnerStatueInvitationCount() { var arc = GContext.container.Resolve(); if (arc == null) { Debug.Log("EventPartnerStatueArc not found"); return; } Debug.Log($"InvitationCount: {arc.InvitationData.InvitationCount}, DoRecommendBot: {arc.InvitationData.DoRecommendBot}"); } static void EventPartnerStatueActivateBotInvitation() { var arc = GContext.container.Resolve(); if (arc == null) { Debug.Log("EventPartnerStatueArc not found"); return; } arc.InvitationData.SetInvitationCount(1999); Debug.Log($"Bot invitation count set to 1999"); } // static void EventPartnerStatueRefreshInvitation() // { // var arc = GContext.container.Resolve(); // if (arc == null) // { // Debug.Log("EventPartnerStatueArc not found"); // return; // } // arc.InvitationData.RefreshInvitation(); // Debug.Log("RefreshInvitation Done"); // } static void EventPartnerStatuePeekRobot() { var arc = GContext.container.Resolve(); if (arc == null) { Debug.Log("EventPartnerStatueArc not found"); return; } var str = Newtonsoft.Json.JsonConvert.SerializeObject(arc.RobotData.RobotInvitationBuffer); Debug.Log("RobotBuffer: " + str); str = Newtonsoft.Json.JsonConvert.SerializeObject(arc.RobotData.RobotList.Select(kv => kv.Value.ActionQ)); Debug.Log("RobotActionQ: " + str); } static void EventPartnerStatuePeekPlayerInfoPool() { var arc = GContext.container.Resolve(); if (arc == null) { Debug.Log("EventPartnerStatueArc not found"); return; } var bufferStr = Newtonsoft.Json.JsonConvert.SerializeObject(arc.PlayerInfoPool.PlayerInfoDic); Debug.Log("PlayerInfoCache:" + bufferStr); } static void EventPartnerStatuePeekScore() { var arc = GContext.container.Resolve(); if (arc == null) { Debug.Log("EventPartnerStatueArc not found"); return; } var s = new System.Text.StringBuilder(); foreach (var c in arc.Model.ComponentList) { s.AppendLine($"Partner{c.PartnerId}: self display:{c.ScoreSelfDisplay}, self actual:{c.ScoreSelfActual}, partner display:{c.ScorePartnerDisplay}, partner actual:{c.ScorePartnerActual}\n"); } Debug.Log(s.ToString()); } static void EventPartnerStatueTestRt(int scoreAdd) { var arc = GContext.container.Resolve(); if (arc == null) { Debug.Log("EventPartnerStatueArc not found"); return; } var partnerId = arc.Model.ComponentList[0].PartnerId; var newScore = arc.Model.ComponentList[0].ScorePartnerActual + scoreAdd; var se = new EventPartnerGatherRequests.EventPartnerGatherScoreEvt { PartnerId = partnerId, Score = newScore, }; var pe = new EventPartnerGatherRequests.EventPartnerGatherPartnerEvt { PartnerInfo = new PlayerInfo { AvatarUrl = "", DisplayName = "TestRt", Level = 1, PlayFabId = "TestRt", }, EvtType = 0, SlotId = 1 }; arc.RtSystem.TestRt(se, pe); } static void EventPartnerStatuePeekInflationRate() { var arc = GContext.container.Resolve(); if (arc == null) { Debug.Log("EventPartnerStatueArc not found"); return; } Debug.Log($"InflationRate: {arc.Model.LureInflationRate}"); } static void SocialRushTest(int progress) { var arc = GContext.container.Resolve(); if (arc == null) { Debug.Log("SocialRushArchitechture not found"); return; } arc.Model.SetProgress(progress); Debug.Log($"[SocialRush]Actual progress set to {progress}"); } static void SocialRushReset() { var arc = GContext.container.Resolve(); if (arc == null) { Debug.Log("SocialRushArchitechture not found"); return; } arc.Model.Reset(); Debug.Log($"[SocialRush]Reset Done."); } static void SocialRushPeek() { var arc = GContext.container.Resolve(); if (arc == null) { Debug.Log("SocialRushArchitechture not found"); return; } Debug.Log($"[SocialRush] Display: {arc.Model.ProgressDisplay}, Actual {arc.Model.ProgressActual}, inflation rate: {arc.Model.InflationRate}, event Id: {arc.EventId}"); } static void EventMowForTreasureGuideClear() { GContext.container.Resolve()?.ClearGuide(); } static void OfferStoryChainReset() { var manager = GContext.container.Resolve(); if (manager == null) { Debug.Log("OfferStoryChain.Manager not found"); return; } manager.Reset(); } static void OfferStoryChainPeek() { var manager = GContext.container.Resolve(); if (manager == null) { Debug.Log("OfferStoryChain.Manager not found"); return; } var str = "EventId: " + manager.EventId + "\n" + "Progress: " + manager.Progress + "\n" + "VipLevel: " + manager.VipLevel + "\n" + "RoundCount: " + manager.RoundCount; Debug.Log("OfferStoryChain.Manager:" + str); } static void OfferTreasureAscentPeek() { var manager = GContext.container.Resolve(); if (manager == null) { Debug.Log("OfferTreasureAscent.Manager not found"); return; } Debug.Log($"[OfferTreasureAscent] eventId: {manager.EventId}, status: {manager.Status}, roundCount: {manager.RoundCount}"); } static void OfferTreasureAscentReset() { var manager = GContext.container.Resolve(); if (manager == null) { Debug.Log("OfferTreasureAscent.Manager not found"); return; } manager.Reset(); Debug.Log($"[OfferTreasureAscent] Reset Done."); } static void PinballUncountableBlockKick(int block) { var manager = GContext.container.Resolve(); if (manager == null) { Debug.Log("PinballUncountable.Manager not found"); return; } manager.EventAggregator.Publish(new PinballUncountable.EventBlockKick { Block = block != 0 }); } }