NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/Debug/SROptions.GM.cs

330 lines
9.6 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using cfg.ActorCfg;
using Code.Scripts.Gameplay.Game;
using Cysharp.Threading.Tasks;
using Framework;
using Gameplay;
using Gameplay.Character;
using Gameplay.Net;
using Gameplay.Unit;
using Gameplay.Unit.Data;
using System.ComponentModel;
using System.Drawing.Text;
using Gameplay.Common;
using UnityEngine;
using YooAsset;
public partial class SROptions
{
//[Category("GM"), DisplayName("机器人数据初始化")] 25/2/20 关闭DEBUGGER功能
//public void SendRobotTestInit()
//{
// if (UnityEngine.Application.isPlaying)
// {
// Gameplay.Net.NetHelper.RobotTestInit();
// }
//}
//[Category("GM"), DisplayName("测试剧情ID")] 25/2/20 关闭DEBUGGER功能
//public string testStoryId
//{
// get;
// set;
//} = "0_1_1";
//
//[Category("GM"), DisplayName("进入测试剧情")] 25/2/20 关闭DEBUGGER功能
//public void EnterStory()
//{
// GameStateManager.Instance.ChangeState(new GameStateStory(testStoryId));
//}
private string gc;
//[Category("礼包兑换")] 25/2/20 关闭DEBUGGER功能
//public string GiftCode
//{
// get { return gc; }
// set { gc = value; }
//}
//[Category("礼包兑换")] 25/2/20 关闭DEBUGGER功能
//public void DoGiftCode()
//{
// if (UnityEngine.Application.isPlaying)
// {
// Gameplay.Net.NetHelper.GiftCode(GiftCode);
// }
//}
private int _itemId;
//[Category("GM增加物品"), DisplayName("物品ID")] 25/2/20 关闭DEBUGGER功能
//public int ItemId
//{
// get { return _itemId; }
// set
// {
// if (_itemId.Equals(value)) return;
// SetItemId(value);
// _itemId = value;
// }
//}
private void SetItemId(int id)
{
DataItem dataItem = TableManager.Instance.Tables.Item.Get(id);
if (dataItem == null)
{
SRDebug.Instance.ShowBugReportSheet(descriptionContent: "此ID不在item表里查一下是不是填错了");
return;
}
_itemId = id;
}
private int _itemsCount = 1;
//[Category("GM增加物品"), DisplayName("物品个数")] 25/2/20 关闭DEBUGGER功能
//public int ItemsCount
//{
// get { return _itemsCount; }
// set
// {
// if (_itemsCount.Equals(value)) return;
// _itemsCount = value;
// }
//}
private string GMToken = "phxh666";
//[Category("GM增加物品"), DisplayName("增加指定物品")] 25/2/20 关闭DEBUGGER功能
//public async void AddItem()
//{
// if(_itemsCount==0)
// {
// return;
// }
//
//
// string url = GetURL(GMToken, GetIp(), Actor.Instance.Base.GetProp(NLDPB.ActorProp.ActorId).ToString());
// var request = UnityEngine.Networking.UnityWebRequest.Get(url);
// await request.SendWebRequest();
// //DebugUtil.LogError("gm新错" + request.downloadHandler.text);
//
//
//}
[Category("IAP内购"), DisplayName("客户端验证")]
public bool ClientVerify
{
get { return IAPManager.Instance.ClientVerify; }
set { IAPManager.Instance.ClientVerify = value; }
}
[Category("IAP内购"), DisplayName("初始化IAP")]
public void InitIAP()
{
IAPManager.Instance.ReLoad();
}
[Category("IAP内购"), DisplayName("完成所有交易")]
public void ConfirmPending()
{
IAPManager.Instance.ConfirmPending();
}
[Category("IAP内购"), DisplayName("跳过真实支付")]
public bool SkipRealPay
{
get => IAPManager.Instance.SkipRealPay;
set => IAPManager.Instance.SkipRealPay = value;
}
[Category("用户数据"), DisplayName("删除本地缓存数据")]
public void DeleteData()
{
StorageMgr.Instance.DeleteSaveData();
CrossDayChecker.Instance.DeleteSaveData = true;
}
private string GetURL(string token, string ip, string actor)
{
string param = "";
if (_itemId <= 0 || _itemsCount <= 0)
return null;
param = $"{_itemId},{_itemsCount}";
return $"http://{ip}/gm?actor_id={actor}&command=AddItem&gm_token={token}&param={param}";
}
private string GetIp()
{
var serverInfo = AppConfig.Instance.GetCurrent();
return serverInfo.addrs[0].ip + ":8080";
}
// 从所有加载的场景中查找节点
private GameObject[] FindGameObjectsInAllScenes(string name)
{
int sceneCount = UnityEngine.SceneManagement.SceneManager.sceneCount;
System.Collections.Generic.List<GameObject> foundObjects = new System.Collections.Generic.List<GameObject>();
for (int i = 0; i < sceneCount; i++)
{
var scene = UnityEngine.SceneManagement.SceneManager.GetSceneAt(i);
if (scene.isLoaded)
{
Debug.Log($"在场景 {scene.name} 中查找 {name}");
// 获取场景中的所有根游戏对象
var rootObjects = scene.GetRootGameObjects();
foreach (var rootObject in rootObjects)
{
// 搜索根对象
if (rootObject.name == name)
{
foundObjects.Add(rootObject);
Debug.Log($"在场景 {scene.name} 的根节点中找到 {name}");
}
// 搜索子对象
var childObjects = rootObject.GetComponentsInChildren<Transform>(true);
foreach (var child in childObjects)
{
if (child.gameObject.name == name)
{
foundObjects.Add(child.gameObject);
Debug.Log($"在场景 {scene.name} 的节点 {rootObject.name} 下找到 {name}");
}
}
}
}
}
return foundObjects.ToArray();
}
[Category("场景节点")]
[Sort(1)]
[DisplayName("启用Art节点(禁用Art_Old)")]
public void EnableArtDisableArtOld()
{
Debug.Log("正在查找和切换Art节点...");
var artNodes = FindGameObjectsInAllScenes("Art");
var artOldNodes = FindGameObjectsInAllScenes("Art_Old");
if (artNodes.Length == 0)
{
Debug.LogError("在所有场景中找不到Art节点!");
return;
}
if (artOldNodes.Length == 0)
{
Debug.LogError("在所有场景中找不到Art_Old节点!");
return;
}
foreach (var artNode in artNodes)
{
artNode.SetActive(true);
Debug.Log($"已启用Art节点: {GetGameObjectPath(artNode)}");
}
foreach (var artOldNode in artOldNodes)
{
artOldNode.SetActive(false);
Debug.Log($"已禁用Art_Old节点: {GetGameObjectPath(artOldNode)}");
}
Debug.Log($"总共处理 {artNodes.Length} 个Art节点和 {artOldNodes.Length} 个Art_Old节点");
}
[Category("场景节点")]
[Sort(2)]
[DisplayName("启用Art_Old节点(禁用Art)")]
public void EnableArtOldDisableArt()
{
Debug.Log("正在查找和切换Art_Old节点...");
var artNodes = FindGameObjectsInAllScenes("Art");
var artOldNodes = FindGameObjectsInAllScenes("Art_Old");
if (artNodes.Length == 0)
{
Debug.LogError("在所有场景中找不到Art节点!");
return;
}
if (artOldNodes.Length == 0)
{
Debug.LogError("在所有场景中找不到Art_Old节点!");
return;
}
foreach (var artNode in artNodes)
{
artNode.SetActive(false);
Debug.Log($"已禁用Art节点: {GetGameObjectPath(artNode)}");
}
foreach (var artOldNode in artOldNodes)
{
artOldNode.SetActive(true);
Debug.Log($"已启用Art_Old节点: {GetGameObjectPath(artOldNode)}");
}
Debug.Log($"总共处理 {artNodes.Length} 个Art节点和 {artOldNodes.Length} 个Art_Old节点");
}
[Category("场景节点")]
[Sort(3)]
[DisplayName("获取Art节点状态")]
public void CheckArtNodesStatus()
{
var artNodes = FindGameObjectsInAllScenes("Art");
var artOldNodes = FindGameObjectsInAllScenes("Art_Old");
Debug.Log($"找到 {artNodes.Length} 个Art节点和 {artOldNodes.Length} 个Art_Old节点");
foreach (var artNode in artNodes)
{
Debug.Log($"Art节点状态: {(artNode.activeSelf ? "" : "")}, 路径: {GetGameObjectPath(artNode)}");
}
foreach (var artOldNode in artOldNodes)
{
Debug.Log($"Art_Old节点状态: {(artOldNode.activeSelf ? "" : "")}, 路径: {GetGameObjectPath(artOldNode)}");
}
if (artNodes.Length == 0)
{
Debug.LogWarning("在所有场景中都不存在Art节点");
}
if (artOldNodes.Length == 0)
{
Debug.LogWarning("在所有场景中都不存在Art_Old节点");
}
}
// 获取游戏对象的完整路径
private string GetGameObjectPath(GameObject obj)
{
string path = obj.name;
Transform parent = obj.transform.parent;
while (parent != null)
{
path = parent.name + "/" + path;
parent = parent.parent;
}
// 添加场景名称
var sceneName = obj.scene.name;
path = sceneName + ":" + path;
return path;
}
}