2023-10-23 16:48:43 +08:00
|
|
|
|
using UnityEditor;
|
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using System.IO;
|
|
|
|
|
|
using Cysharp.Threading.Tasks;
|
|
|
|
|
|
using System;
|
2023-10-24 12:15:31 +08:00
|
|
|
|
using AutoConfig;
|
2023-10-23 16:48:43 +08:00
|
|
|
|
using Luban.Editor;
|
2023-10-24 12:15:31 +08:00
|
|
|
|
using UnityEngine.Networking;
|
2023-08-22 19:08:45 +08:00
|
|
|
|
|
|
|
|
|
|
public class ConfigInfo
|
|
|
|
|
|
{
|
|
|
|
|
|
public string Name;
|
|
|
|
|
|
public string DocID;
|
|
|
|
|
|
public bool Check;
|
2023-10-23 16:48:43 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2024-04-18 16:41:33 +08:00
|
|
|
|
public class DownloadConfigData
|
2023-08-22 19:08:45 +08:00
|
|
|
|
{
|
2024-04-18 16:41:33 +08:00
|
|
|
|
public string excelName;
|
|
|
|
|
|
public bool isDone
|
|
|
|
|
|
{
|
|
|
|
|
|
get
|
|
|
|
|
|
{
|
|
|
|
|
|
return downloader.isFinished;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
public WPExcelDownloader downloader;
|
|
|
|
|
|
}
|
2023-08-22 19:08:45 +08:00
|
|
|
|
|
2024-04-18 16:41:33 +08:00
|
|
|
|
public class ConfigWindow : EditorWindow
|
|
|
|
|
|
{
|
2023-08-22 19:08:45 +08:00
|
|
|
|
|
2023-10-23 16:48:43 +08:00
|
|
|
|
private bool ExportClient;
|
|
|
|
|
|
private bool ExportServer;
|
|
|
|
|
|
private bool NeedDownload;
|
2024-06-21 14:52:24 +08:00
|
|
|
|
private bool _isGenMixKey;
|
2023-10-23 16:48:43 +08:00
|
|
|
|
|
2024-04-18 16:41:33 +08:00
|
|
|
|
private bool _isDownloading;
|
|
|
|
|
|
|
2023-10-23 16:48:43 +08:00
|
|
|
|
private Vector2 scrollPosition = Vector2.zero;
|
2024-04-18 16:41:33 +08:00
|
|
|
|
private Vector2 _scrollPositionDownload = Vector2.zero;
|
2023-10-23 16:48:43 +08:00
|
|
|
|
|
|
|
|
|
|
private string cookie;
|
|
|
|
|
|
const string DATA_TABLE_ASSEMBLY_REFERENCE_PATH = "Assets/Code/Scripts/Gameplay/DataTable/FrameWork.asmref";
|
|
|
|
|
|
const string DATA_TABLE_OUTSIDE_ASSEMBLY_REFERENCE_PATH = "Assets/Code/Scripts/Gameplay/FrameWork.asmref";
|
2023-10-24 12:15:31 +08:00
|
|
|
|
|
2024-11-11 15:36:59 +08:00
|
|
|
|
public const string DATA_STRING_LOCALIZE_CN = "Assets/Config/Data/Localize/CN";
|
|
|
|
|
|
public const string DATA_STRING_LOCALIZE_EN = "Assets/Config/Data/Localize/EN";
|
|
|
|
|
|
|
2023-10-24 12:15:31 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 0 未知
|
|
|
|
|
|
/// 1 checking
|
|
|
|
|
|
/// 2 ok
|
|
|
|
|
|
/// 3 failed
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
private int _authState = 0;
|
|
|
|
|
|
|
2023-10-23 16:48:43 +08:00
|
|
|
|
public static void ShowWindow()
|
|
|
|
|
|
{
|
2023-08-22 19:08:45 +08:00
|
|
|
|
|
2023-10-24 12:15:31 +08:00
|
|
|
|
var window = GetWindow<ConfigWindow>();
|
|
|
|
|
|
window.titleContent = new GUIContent("自动化配置工具");
|
|
|
|
|
|
window.maximized = false;
|
|
|
|
|
|
window.minSize = new Vector2(300, 300);
|
|
|
|
|
|
|
|
|
|
|
|
int width = 600;
|
|
|
|
|
|
int height = 400;
|
|
|
|
|
|
var x = (Screen.currentResolution.width - width) / 2;
|
|
|
|
|
|
var y = (Screen.currentResolution.height - height) / 2;
|
|
|
|
|
|
Rect centerRect = new Rect(x, y, width, height);
|
|
|
|
|
|
window.position = centerRect;
|
|
|
|
|
|
window._authState = 0;
|
|
|
|
|
|
window.InitData();
|
|
|
|
|
|
window.Show();
|
|
|
|
|
|
window.Focus();
|
2023-10-23 16:48:43 +08:00
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2023-08-22 19:08:45 +08:00
|
|
|
|
public void InitData()
|
2023-10-23 16:48:43 +08:00
|
|
|
|
{
|
2024-12-25 15:18:24 +08:00
|
|
|
|
// var dir = new DirectoryInfo(ConfigTools.CONFIG_DIR);
|
|
|
|
|
|
// var combiePath = dir.FullName + "Datas/AConfigList.xlsx";
|
|
|
|
|
|
//
|
|
|
|
|
|
// // var configPath = ConfigTools.CONFIG_DIR + "/config_list.txt";
|
|
|
|
|
|
// // var lines = File.ReadAllLines(configPath);
|
|
|
|
|
|
//
|
|
|
|
|
|
// m_Configs = new List<ConfigInfo>();
|
|
|
|
|
|
//
|
|
|
|
|
|
// if (File.Exists(combiePath))
|
|
|
|
|
|
// {
|
|
|
|
|
|
// var excelDataList = ReadExcelList.ReadList(combiePath);
|
|
|
|
|
|
// for (var i = 0; i < excelDataList.Count; i++)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// var lineData = excelDataList[i];
|
|
|
|
|
|
// var docName = lineData.excelName;
|
|
|
|
|
|
// var docId = lineData.docId;
|
|
|
|
|
|
//
|
|
|
|
|
|
// ConfigInfo ci = new ConfigInfo();
|
|
|
|
|
|
// ci.Name = docName;
|
|
|
|
|
|
// ci.DocID = docId;
|
|
|
|
|
|
// ci.Check = true;
|
|
|
|
|
|
//
|
|
|
|
|
|
// m_Configs.Add(ci);
|
|
|
|
|
|
// }
|
|
|
|
|
|
// m_Configs.Sort((a,
|
|
|
|
|
|
// b) => a.Name.CompareTo(b.Name));
|
|
|
|
|
|
// }
|
|
|
|
|
|
// else
|
|
|
|
|
|
// {
|
|
|
|
|
|
// Debug.LogError($"配置文件不存在,path={combiePath}");
|
|
|
|
|
|
// }
|
2023-10-23 16:48:43 +08:00
|
|
|
|
|
2023-08-22 19:08:45 +08:00
|
|
|
|
ExportClient = true;
|
|
|
|
|
|
ExportServer = false;
|
2024-06-21 14:52:24 +08:00
|
|
|
|
_isGenMixKey = false;
|
2023-08-22 19:08:45 +08:00
|
|
|
|
|
2024-12-25 15:18:24 +08:00
|
|
|
|
NeedDownload = false;
|
2023-10-23 16:48:43 +08:00
|
|
|
|
|
2023-10-24 12:15:31 +08:00
|
|
|
|
cookie = EditorPrefs.GetString("ConfCookie", "");
|
2023-10-23 16:48:43 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2023-08-22 19:08:45 +08:00
|
|
|
|
void OnGUI()
|
2023-10-23 16:48:43 +08:00
|
|
|
|
{
|
2024-12-25 15:18:24 +08:00
|
|
|
|
// if (m_Configs == null)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// InitData();
|
|
|
|
|
|
// }
|
2024-04-18 16:41:33 +08:00
|
|
|
|
_OnGUIContent();
|
2023-10-24 12:15:31 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private async void _StartChecking()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (string.IsNullOrEmpty(cookie)) return;
|
|
|
|
|
|
_authState = 1;
|
|
|
|
|
|
|
2023-10-24 15:40:31 +08:00
|
|
|
|
var downLoader = new WPExcelDownloader("AConfigList.xlsx",
|
2024-10-31 17:06:12 +08:00
|
|
|
|
"e3_AXoAQAavAFIi9riMuy9Q5CMxcHei1", cookie);//e3_AQIA8QbmAKEFwoGRFPhT9uizRsOaA
|
2023-10-24 12:15:31 +08:00
|
|
|
|
Debug.Log("开始检查授权");
|
|
|
|
|
|
|
|
|
|
|
|
var checkResult = await downLoader.OnlyCheck();
|
|
|
|
|
|
if (checkResult)
|
|
|
|
|
|
{
|
|
|
|
|
|
Debug.Log("授权成功");
|
|
|
|
|
|
_authState = 2;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
Debug.LogError("授权失败");
|
|
|
|
|
|
_authState = 3;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void _ShowSIDConfig()
|
|
|
|
|
|
{
|
|
|
|
|
|
cookie = EditorGUILayout.TextField("Cookie:", cookie);
|
|
|
|
|
|
GUILayout.BeginHorizontal();
|
|
|
|
|
|
if (GUILayout.Button("重新检查授权"))
|
|
|
|
|
|
{
|
|
|
|
|
|
_StartChecking();
|
2023-10-23 16:48:43 +08:00
|
|
|
|
}
|
2023-10-24 12:15:31 +08:00
|
|
|
|
if (GUILayout.Button("打开授权网页"))
|
2023-10-23 16:48:43 +08:00
|
|
|
|
{
|
2023-10-24 12:15:31 +08:00
|
|
|
|
_OpenAuthWindow();
|
2023-10-23 16:48:43 +08:00
|
|
|
|
}
|
2023-10-24 12:15:31 +08:00
|
|
|
|
GUILayout.EndHorizontal();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void _OpenAuthWindow()
|
|
|
|
|
|
{
|
2024-10-31 17:06:12 +08:00
|
|
|
|
var url = "https://doc.weixin.qq.com/sheet/e3_AXoAQAavAFI2YSsTvvuQ9aS06iieP";
|
2023-10-24 12:15:31 +08:00
|
|
|
|
Application.OpenURL(url);
|
2023-10-23 16:48:43 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2024-04-18 16:41:33 +08:00
|
|
|
|
private void _ShowAuthState()
|
2023-10-23 16:48:43 +08:00
|
|
|
|
{
|
2023-10-24 12:15:31 +08:00
|
|
|
|
switch (_authState)
|
|
|
|
|
|
{
|
|
|
|
|
|
case 0:
|
|
|
|
|
|
// 未知
|
|
|
|
|
|
if (string.IsNullOrEmpty(cookie))
|
|
|
|
|
|
{
|
|
|
|
|
|
// 未配置
|
|
|
|
|
|
EditorGUILayout.HelpBox("请先配置sid和cookie", MessageType.Error);
|
|
|
|
|
|
|
|
|
|
|
|
_ShowSIDConfig();
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
// 已配置
|
|
|
|
|
|
_ShowSIDConfig();
|
|
|
|
|
|
_StartChecking();
|
|
|
|
|
|
}
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 1:
|
|
|
|
|
|
EditorGUILayout.HelpBox("检查授权中", MessageType.Warning);
|
|
|
|
|
|
|
|
|
|
|
|
_ShowSIDConfig();
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 2:
|
|
|
|
|
|
EditorGUILayout.HelpBox("授权成功", MessageType.Info);
|
2023-10-24 15:40:31 +08:00
|
|
|
|
|
2023-10-24 12:15:31 +08:00
|
|
|
|
_ShowSIDConfig();
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
case 3:
|
|
|
|
|
|
EditorGUILayout.HelpBox("授权失败", MessageType.Error);
|
|
|
|
|
|
|
|
|
|
|
|
_ShowSIDConfig();
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
2024-04-18 16:41:33 +08:00
|
|
|
|
}
|
2023-10-23 16:48:43 +08:00
|
|
|
|
|
2024-04-18 16:41:33 +08:00
|
|
|
|
private void _ShowGenBtn()
|
|
|
|
|
|
{
|
2024-12-26 16:09:14 +08:00
|
|
|
|
|
2023-10-23 16:48:43 +08:00
|
|
|
|
}
|
2023-10-24 12:15:31 +08:00
|
|
|
|
|
2024-04-18 16:41:33 +08:00
|
|
|
|
private void _OnGUIContent()
|
|
|
|
|
|
{
|
2024-12-25 15:18:24 +08:00
|
|
|
|
|
2024-04-18 16:41:33 +08:00
|
|
|
|
GUILayout.Space(10);
|
2024-12-25 15:18:24 +08:00
|
|
|
|
EditorGUILayout.BeginHorizontal();
|
|
|
|
|
|
ExportClient = EditorGUILayout.ToggleLeft("导出客户端", ExportClient);
|
|
|
|
|
|
ExportServer = EditorGUILayout.ToggleLeft("导出服务端", ExportServer);
|
|
|
|
|
|
EditorGUILayout.EndHorizontal();
|
|
|
|
|
|
|
2024-04-18 16:41:33 +08:00
|
|
|
|
GUILayout.Space(10);
|
|
|
|
|
|
EditorGUILayout.BeginHorizontal();
|
2024-12-25 15:18:24 +08:00
|
|
|
|
_isGenMixKey = EditorGUILayout.ToggleLeft("导出时生成MixKey", _isGenMixKey);
|
2024-04-18 16:41:33 +08:00
|
|
|
|
EditorGUILayout.EndHorizontal();
|
2024-12-25 15:18:24 +08:00
|
|
|
|
|
2024-12-26 16:09:14 +08:00
|
|
|
|
GUILayout.BeginHorizontal();
|
|
|
|
|
|
|
|
|
|
|
|
if (GUILayout.Button("开始导出", GUILayout.Height(40)))
|
2024-04-23 14:43:56 +08:00
|
|
|
|
{
|
2024-12-26 16:09:14 +08:00
|
|
|
|
_DoExport();
|
2024-04-23 14:43:56 +08:00
|
|
|
|
}
|
2024-12-26 16:09:14 +08:00
|
|
|
|
if (GUILayout.Button("打开Excel路径", GUILayout.Height(40)))
|
2024-04-18 16:41:33 +08:00
|
|
|
|
{
|
2024-12-26 16:09:14 +08:00
|
|
|
|
Application.OpenURL("file://" + ConfigTools.CONFIG_DIR);
|
2024-04-18 16:41:33 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2024-12-26 16:09:14 +08:00
|
|
|
|
GUILayout.EndHorizontal();
|
|
|
|
|
|
|
|
|
|
|
|
GUILayout.Space(10);
|
|
|
|
|
|
if (GUILayout.Button("生成MixKey配置"))
|
2024-04-18 16:41:33 +08:00
|
|
|
|
{
|
2024-12-26 16:09:14 +08:00
|
|
|
|
_GenMixKeyConfig();
|
|
|
|
|
|
//GenMixKeyTool.ReplaceMixKey();
|
2024-04-18 16:41:33 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2023-10-23 16:48:43 +08:00
|
|
|
|
}
|
2024-12-26 16:09:14 +08:00
|
|
|
|
|
|
|
|
|
|
private void _DoExport()
|
2023-08-22 19:08:45 +08:00
|
|
|
|
{
|
2023-10-19 15:00:19 +08:00
|
|
|
|
|
2023-10-24 12:15:31 +08:00
|
|
|
|
if (ExportClient)
|
2023-08-22 19:08:45 +08:00
|
|
|
|
{
|
2023-10-24 12:15:31 +08:00
|
|
|
|
var lubanAsset = AssetDatabase.LoadAssetAtPath<LubanExportConfig>("Assets/Editor/Tools/Luban_Client.asset");
|
2025-04-14 12:15:08 +08:00
|
|
|
|
var lubanLocalizeCNAsset = AssetDatabase.LoadAssetAtPath<LubanExportConfig>("Assets/Editor/Tools/Luban_Client_CN.asset");
|
|
|
|
|
|
var lubanLocalizeENAsset = AssetDatabase.LoadAssetAtPath<LubanExportConfig>("Assets/Editor/Tools/Luban_Client_EN.asset");
|
2024-06-20 18:47:22 +08:00
|
|
|
|
var genSuccess = lubanAsset.Gen();
|
2025-04-14 12:15:08 +08:00
|
|
|
|
var genCNSuccess = lubanLocalizeCNAsset.Gen();
|
|
|
|
|
|
var genENSuccess = lubanLocalizeENAsset.Gen();
|
2024-11-11 15:36:59 +08:00
|
|
|
|
_ClearLocalizeDir();
|
|
|
|
|
|
|
2024-06-21 14:52:24 +08:00
|
|
|
|
if (genSuccess && _isGenMixKey)
|
2024-06-20 18:47:22 +08:00
|
|
|
|
{
|
|
|
|
|
|
_GenMixKeyConfig();
|
|
|
|
|
|
}
|
2023-08-22 19:08:45 +08:00
|
|
|
|
}
|
2023-10-24 12:15:31 +08:00
|
|
|
|
|
|
|
|
|
|
if (ExportServer)
|
2024-04-26 13:41:44 +08:00
|
|
|
|
{
|
|
|
|
|
|
var lubanAsset = AssetDatabase.LoadAssetAtPath<LubanExportConfig>("Assets/Editor/Tools/Luban_Server.asset");
|
|
|
|
|
|
lubanAsset.Gen();
|
|
|
|
|
|
}
|
2023-10-24 12:15:31 +08:00
|
|
|
|
|
2023-08-22 19:08:45 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2024-04-23 14:43:56 +08:00
|
|
|
|
private void _GenMixKeyConfig()
|
|
|
|
|
|
{
|
2024-06-21 14:52:24 +08:00
|
|
|
|
//GenMixKeyTool.GenMixKeyFile();
|
|
|
|
|
|
MixKeyGenJson.IsGenJsonProcess = true;
|
|
|
|
|
|
GenMixKeyTool.GenMixKeyJson();
|
2024-04-23 14:43:56 +08:00
|
|
|
|
}
|
2024-11-11 15:36:59 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 清理本地化生成的无用json文件
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
private void _ClearLocalizeDir()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (Directory.Exists(DATA_STRING_LOCALIZE_CN))
|
|
|
|
|
|
{
|
|
|
|
|
|
foreach (var file in Directory.GetFileSystemEntries(DATA_STRING_LOCALIZE_CN))
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!file.Contains("stringcfg"))
|
|
|
|
|
|
{
|
|
|
|
|
|
File.Delete(file);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (Directory.Exists(DATA_STRING_LOCALIZE_EN))
|
|
|
|
|
|
{
|
|
|
|
|
|
foreach (var file in Directory.GetFileSystemEntries(DATA_STRING_LOCALIZE_EN))
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!file.Contains("stringcfg"))
|
|
|
|
|
|
{
|
|
|
|
|
|
File.Delete(file);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
AssetDatabase.Refresh();
|
|
|
|
|
|
}
|
2023-10-23 16:48:43 +08:00
|
|
|
|
}
|