From 9d168cdd46989ee895511e787e60bf0ddf6dd147 Mon Sep 17 00:00:00 2001 From: huyufei Date: Mon, 8 Jul 2024 19:10:33 +0800 Subject: [PATCH 1/9] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20GuruSDK.UID=20?= =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E6=97=B6=E4=B8=BA=E7=A9=BA=E5=80=BC?= =?UTF-8?q?=E7=9A=84=20BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Runtime/Code/SDK/GuruSDK.Properties.cs | 14 +++++++++++--- Runtime/Code/SDK/GuruSDK.cs | 2 ++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/Runtime/Code/SDK/GuruSDK.Properties.cs b/Runtime/Code/SDK/GuruSDK.Properties.cs index 1e2f07b..3d04253 100644 --- a/Runtime/Code/SDK/GuruSDK.Properties.cs +++ b/Runtime/Code/SDK/GuruSDK.Properties.cs @@ -2,9 +2,17 @@ namespace Guru { public partial class GuruSDK { - - public static string UID => Model?.UserId ?? IPMConfig.IPM_UID; - public static string UUID => Model?.UserId ?? IPMConfig.IPM_UUID; + // UID + public static string UID + { + get + { + if(Model != null && !string.IsNullOrEmpty(Model.UserId)) + return Model.UserId; + return IPMConfig.IPM_UID; + } + } + public static string UUID => IPMConfig.IPM_UUID ?? ""; public static string DeviceId => IPMConfig.IPM_DEVICE_ID ?? ""; // TODO: change it to _model member later. public static string PushToken => IPMConfig.IPM_PUSH_TOKEN ?? ""; // TODO: change it to _model member later. public static string AuthToken => IPMConfig.IPM_TOKEN ?? ""; // TODO: change it to _model member later. diff --git a/Runtime/Code/SDK/GuruSDK.cs b/Runtime/Code/SDK/GuruSDK.cs index 50b6cba..bb4f9e4 100644 --- a/Runtime/Code/SDK/GuruSDK.cs +++ b/Runtime/Code/SDK/GuruSDK.cs @@ -178,6 +178,7 @@ namespace Guru private void OnUserAuthResult(bool success) { + if (success && string.IsNullOrEmpty(IPMConfig.IPM_UID)) { success = false; @@ -186,6 +187,7 @@ namespace Guru if (success) { + Model.UserId = IPMConfig.IPM_UID; if (GuruIAP.Instance != null) { GuruIAP.Instance.SetUID(UID); From f33fc2c764e237069ad5f59e276112b703fdd11a Mon Sep 17 00:00:00 2001 From: huyufei Date: Mon, 1 Jul 2024 18:45:07 +0800 Subject: [PATCH 2/9] =?UTF-8?q?update:=20=E4=BF=AE=E5=A4=8D=E7=BC=96?= =?UTF-8?q?=E8=AF=91=20bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # Conflicts: # Editor/GuruManager/Helper/GuruServiceConverterHelper.cs --- .../Helper/GuruServiceConverterHelper.cs | 399 ++++++++++++++++-- 1 file changed, 374 insertions(+), 25 deletions(-) diff --git a/Editor/GuruManager/Helper/GuruServiceConverterHelper.cs b/Editor/GuruManager/Helper/GuruServiceConverterHelper.cs index 886fcbc..4a5dd5b 100644 --- a/Editor/GuruManager/Helper/GuruServiceConverterHelper.cs +++ b/Editor/GuruManager/Helper/GuruServiceConverterHelper.cs @@ -1,3 +1,4 @@ +#if GURU_SDK_DEV namespace Guru.Editor { @@ -5,37 +6,69 @@ namespace Guru.Editor using System.IO; using UnityEditor; using UnityEngine; + using UnityEngine.Networking; using System.Collections.Generic; using System.Linq; - public class GuruServiceConverterHelper + public class GuruServiceJsonBuilder: EditorWindow { - const string K_APP_SETTINGS = "app_settings"; - const string K_ADJUST_SETTINGS = "adjust_settings"; - const string K_FB_SETTINGS = "fb_settings"; - const string K_AD_SETTINGS = "ad_settings"; - const string K_IAP_SETTINGS = "iap_settings"; - const char K_SPLITTER_TAB = '\t'; - const char K_SPLITTER_COMMA = ','; + const string GuruProjectSettingsName = "guru-project-settings.cfg"; + + + // Tool Version + public const string Version = "0.2.0"; + + private const string K_APP_SETTINGS = "app_settings"; + private const string K_ADJUST_SETTINGS = "adjust_settings"; + private const string K_FB_SETTINGS = "fb_settings"; + private const string K_AD_SETTINGS = "ad_settings"; + private const string K_IAP_SETTINGS = "iap_settings"; + private const char K_SPLITTER_TAB = '\t'; + private const char K_SPLITTER_COMMA = ','; + + private const string NoSelectionName = "------"; + private const string STATE_IDLE = "s_idle"; + private const string STATE_LOADING = "s_loading"; + private const string STATE_SUCCESS = "s_success"; + + private static GuruServiceJsonBuilder _instance; + private List _projectNames; + private int _selectedProjectIndex = 0; + private static Dictionary _publishLinks; + public static Dictionary PublishLinks + { + get + { + if (_publishLinks == null) _publishLinks = LoadProjectSettingsCfg(); + return _publishLinks; + } + } + + #region Link & Keys + + private const string TSVLink = "https://docs.google.com/spreadsheets/d/e/{0}/pub?gid=0&single=true&output=tsv"; + + + #endregion #region Export JSON /// /// 从 TSV 文件进行转化 /// - /// + /// /// - public static void ConvertFromTSV(string tsvPath, string savePath = "") + public static void ConvertFromTSV(string tsv, string savePath = "") { - if (!File.Exists(tsvPath)) + if (string.IsNullOrEmpty(tsv)) { - EditorUtility.DisplayDialog("FILE NOT FOUND!", $"File not exist:\n{tsvPath}", "OK"); + EditorUtility.DisplayDialog("空文件!", $"文件格式错误!\n{tsv}", "OK"); return; } var guru_service = EditorGuruServiceIO.CreateEmpty(); - - var lines = File.ReadAllLines(tsvPath); + + var lines = tsv.Split('\n'); string line = ""; for (int index = 0; index < lines.Length; index++) { @@ -81,16 +114,45 @@ namespace Guru.Editor } } + + guru_service.version = GetFileVersionByDate(); + if (string.IsNullOrEmpty(savePath)) + { + var dir = Path.GetFullPath($"{Application.dataPath}/../output"); + if (!Directory.Exists(dir)) Directory.CreateDirectory(dir); + savePath = $"{dir}/guru-services-{guru_service.app_settings.app_id.ToLower()}.json"; + } + + var arr = savePath.Split('/'); + var fileName = arr[arr.Length - 1]; + EditorGuruServiceIO.SourceServiceFilePath = savePath; EditorGuruServiceIO.SaveConfig(guru_service, savePath); - if (EditorUtility.DisplayDialog("CONVERT SUCCESS!", $"Export Json to:\n{savePath}", "OK")) + if (EditorUtility.DisplayDialog("CONVERT SUCCESS!", $"Export Json File\n{fileName}\nto:\n{savePath}", "OK")) { GuruEditorHelper.OpenPath(Directory.GetParent(savePath)?.FullName ?? Application.dataPath); } } + + public static void ConvertFromTsvFile(string tsvPath, string savePath = "") + { + if (!File.Exists(tsvPath)) + { + EditorUtility.DisplayDialog("FILE NOT FOUND!", $"File not exist:\n{tsvPath}", "OK"); + return; + } + + var tsvString = File.ReadAllText(tsvPath); + if (!string.IsNullOrEmpty(tsvString)) + { + ConvertFromTSV(tsvString, savePath); + } + } + + /// /// AppSettings 填充 /// @@ -219,7 +281,14 @@ namespace Guru.Editor settings.adjust_settings.events = events.ToArray(); index--; } - + + private static long GetFileVersionByDate() + { + var startDt = new DateTime(1970,1,1,0,0,0); + return (long) (DateTime.UtcNow.Ticks - startDt.Ticks) / 10000; + } + + private static void FillFacebookSettings(GuruServicesConfig settings, string[] lines, ref int index) { string value = ""; @@ -416,9 +485,6 @@ namespace Guru.Editor settings.products = iaps.ToArray(); index--; } - - - #endregion @@ -499,16 +565,299 @@ namespace Guru.Editor if(!Directory.Exists(saveDir)) Directory.CreateDirectory(saveDir); string searchPath = "~/Downloads/"; - string tsv = EditorUtility.OpenFilePanel("Load Guru Service TSV", searchPath, ".tsv"); - if (!string.IsNullOrEmpty(tsv)) + string tsvPath = EditorUtility.OpenFilePanel("Load Guru Service TSV", searchPath, ".tsv"); + if (!string.IsNullOrEmpty(tsvPath)) { - GuruServiceConverterHelper.ConvertFromTSV(tsv, saveFile); + ConvertFromTsvFile(tsvPath, saveFile); } - - + } + + + + + [MenuItem("Guru/Guru-Service Json Builder...", false, 0)] + private static void OpenWindow() + { + if(_instance != null ) _instance.Close(); + _instance = GetWindow(); + _instance.Show(); + } + + #endregion + + #region Settings + + private static string GetRelativeDir() + { + var guids = AssetDatabase.FindAssets(nameof(GuruServiceJsonBuilder)); + if (guids.Length > 0) + { + var path = AssetDatabase.GUIDToAssetPath(guids[0]); + var rpath = Directory.GetParent(path).FullName; + return rpath; + } + return Path.GetFullPath($"Assets/../Packages/Editor/GuruJsonBuilder"); + } + + private static Dictionary LoadProjectSettingsCfg() + { + var cfgPath = $"{GetRelativeDir()}/{GuruProjectSettingsName}"; + if (File.Exists(cfgPath)) + { + var lines = File.ReadAllLines(cfgPath); + int len = lines?.Length ?? -1; + if (len > 0) + { + Dictionary dict = new Dictionary(lines.Length); + int i = 0; + string[] raw; + string line, key, value; + while (i < len) + { + line = lines[i]; + if(string.IsNullOrEmpty(line)) continue; + raw = lines[i].Split(','); + value = ""; + key = raw[0]; + if(string.IsNullOrEmpty(key)) continue; + if(raw.Length > 1) value = raw[1]; + dict[key] = value; + i++; + } + return dict; + } + } + return null; } #endregion + #region Window + + private void Awake() + { + Debug.Log($"------- Awake -------"); + this.titleContent = new GUIContent("Json Builder"); + + _projectNames = new List(20); + string[] names = PublishLinks.Keys.ToArray(); + string name = ""; + for(int i = 0; i < names.Length; i++) + { + name = names[i]; + if (name == "Default") + { + _projectNames.Insert(0, NoSelectionName); + } + else + { + _projectNames.Add(name); + } + } + + _selectedProjectIndex = 0; + _state = STATE_IDLE; + + + var json = LoadProjectSettingsCfg(); + Debug.Log(json); + + } + + + + + + private void OnEnable() + { + // Debug.Log($"------- OnEnable -------"); + } + + private void OnGUI() + { + GUI_Title(); + switch (_state) + { + case STATE_IDLE: + GUI_Projects(); + break; + case STATE_LOADING: + GUI_Loading(); + break; + } + } + + + #endregion + + #region GUI + + + private string _state = ""; + + private void GUI_Title() + { + var s = new GUIStyle("box") + { + fontSize = 20, + fontStyle = FontStyle.Bold, + stretchWidth = true, + alignment = TextAnchor.MiddleCenter, + padding = new RectOffset(4, 4, 4, 4), + }; + GUILayout.Label("Guru-Service Json Builder", s, GUILayout.Height(60)); + s.fontSize = 14; + GUILayout.Label($"Version: {Version}", s); + GUILayout.Space(10); + } + + private void GUI_Loading() + { + var s = new GUIStyle("box") + { + fontSize = 16, + alignment = TextAnchor.MiddleCenter, + stretchWidth = true, + padding = new RectOffset(4, 4, 4, 4), + }; + + GUILayout.Label("Loading...", s); + GUILayout.Space(10); + } + + + private void GUI_Projects() + { + _selectedProjectIndex = EditorGUILayout.Popup("选择生成项目", _selectedProjectIndex, _projectNames.ToArray()); + GUILayout.Space(5); + if (GUILayout.Button("生成 guru-services.json", GUILayout.Height(40))) + { + var id = _projectNames[_selectedProjectIndex]; + if (id == NoSelectionName) + { + ShowDialog("选择错误", "请选择一个存在的项目"); + } + else + { + DownloadTsvAndBuild(_selectedProjectIndex, (success, txt) => + { + if (success) + { + ConvertFromTSV(txt); + } + else + { + ShowDialog("网络错误", txt); + } + _state = STATE_IDLE; + }); + + _state = STATE_LOADING; + } + } + + } + + + private void ShowDialog(string title, string content, string okName = "OK", Action onOKCallback = null, + string cancelName = "", Action onCancelCallback = null) + { + if (EditorUtility.DisplayDialog(title, content, okName, cancelName)) + { + onOKCallback?.Invoke(); + } + else + { + onCancelCallback?.Invoke(); + } + } + + #endregion + + #region Networking + + + private static string GetProjectTSVUrl(string pid) + { + if (PublishLinks.TryGetValue(pid, out var id)) + { + string url = string.Format(TSVLink, id); + return url; + } + + return ""; + } + + private void DownloadTsvAndBuild(int projIndex, Action loadCompleted = null) + { + var pid = _projectNames[projIndex]; + var id = GetProjectTSVUrl(pid); + string title, msg; + if(string.IsNullOrEmpty(id)) + { + title = "参数错误"; + msg = $"项目 {pid} 不正确, 请重新选择..."; + ShowDialog(title, msg); + Debug.LogError($"{title}\n{msg}"); + return; + } + + var www = UnityEngine.Networking.UnityWebRequest.Get(id); + www.SendWebRequest().completed += ap => + { + if (www.result == UnityWebRequest.Result.Success) + { + Debug.Log($"--- Load Success ---"); + // Debug.Log(www.downloadHandler.text); + loadCompleted?.Invoke(true, www.downloadHandler.text); + } + else + { + msg = $"Result {www.result}: {www.responseCode}\n\r{www.error}"; + Debug.LogError(msg); + loadCompleted?.Invoke(false, msg); + } + }; + } + + #endregion + + #region TEST + +#if GURU_SDK_DEV + // [MenuItem("Tools/Test/Fetch Config File", false, 1)] +#endif + private static void Test_FetchConfigFile() + { + + var pid = "FindOut"; + var url = GetProjectTSVUrl(pid); + + + if(string.IsNullOrEmpty(url)) + { + Debug.LogError($"Wrong ProjectId: {pid}"); + return; + } + + var www = UnityEngine.Networking.UnityWebRequest.Get(url); + www.SendWebRequest().completed += ap => + { + if (www.result == UnityWebRequest.Result.Success) + { + Debug.Log($"--- Load Success ---"); + Debug.Log(www.downloadHandler.text); + } + else + { + Debug.LogError($"Loading Failed: {www.error} : {www.result} : {www.responseCode}"); + } + }; + + } + + #endregion } -} \ No newline at end of file +} + +#endif \ No newline at end of file From d8967001bf81fffebee94abfc95f5ab687aae1ed Mon Sep 17 00:00:00 2001 From: huyufei Date: Thu, 4 Jul 2024 17:23:07 +0800 Subject: [PATCH 3/9] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20ServiceBuilder?= =?UTF-8?q?=20=E4=B8=8A=E7=9A=84=E8=BE=93=E5=87=BA=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=B8=A6=E6=9C=89=E6=8D=A2=E8=A1=8C=E7=9A=84=20BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Editor/GuruManager/Helper/GuruServiceConverterHelper.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Editor/GuruManager/Helper/GuruServiceConverterHelper.cs b/Editor/GuruManager/Helper/GuruServiceConverterHelper.cs index 4a5dd5b..5d89127 100644 --- a/Editor/GuruManager/Helper/GuruServiceConverterHelper.cs +++ b/Editor/GuruManager/Helper/GuruServiceConverterHelper.cs @@ -479,7 +479,7 @@ namespace Guru.Editor arr = GetStringArray(line, 0, 7); if(string.IsNullOrEmpty(arr[5])) arr[5] = "Store"; if(string.IsNullOrEmpty(arr[6])) arr[6] = "0"; - iaps.Add(string.Join("," , arr)); + iaps.Add(string.Join(",", arr).Replace("\r", "")); index++; } settings.products = iaps.ToArray(); From 331a845f0298708717fe4a56770bfbc3855ce261 Mon Sep 17 00:00:00 2001 From: huyufei Date: Mon, 1 Jul 2024 18:41:22 +0800 Subject: [PATCH 4/9] =?UTF-8?q?update:=20=E5=AE=8C=E5=96=84=20JsonBuilder?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # Conflicts: # Editor/GuruJsonBuilder/guru-project-settings.cfg --- .../GuruJsonBuilder/guru-project-settings.cfg | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 Editor/GuruJsonBuilder/guru-project-settings.cfg diff --git a/Editor/GuruJsonBuilder/guru-project-settings.cfg b/Editor/GuruJsonBuilder/guru-project-settings.cfg new file mode 100644 index 0000000..54590c2 --- /dev/null +++ b/Editor/GuruJsonBuilder/guru-project-settings.cfg @@ -0,0 +1,20 @@ +Default +BallSort,2PACX-1vSPus7415l66-zScY1B1JOgLfSkm0yRPnRDG-BW0JgtnVZJziGDzvtBZr8D9oEZL2x478SdCS2yh0S_ +BallSort2,2PACX-1vSZIZYbFuURK_ZMeMHV9ruL0SWBGMPA13er_J_DLRPVw5HBnU8_6c4mvek5UBFo1Ebbk63TMr-rsY6y +WaterSort,2PACX-1vTPxWbpP7KnT-e2xg9Uz-nukbLmqYc8SjwNL9MgycIhInNgmAjOmRnmyH6PWm3-hsEugKTJHKDcoKdI +WaterSort2,2PACX-1vQnZNtE7ZpT6eYagQDt686Be9Jr0tg22sRFg5cGiqFIsCVhWLu6jxDUg7qmyfIrX3iL5awat8FFnN7B +BallSortPlus,2PACX-1vTa324nQIwNmXNtHC5sZZXYBdpUryKXdb8rFbTAwBa4KVlQ5ZXnErx2IvifkRxD8qKcNupfO1Kv5pJw +TileBurst,2PACX-1vS5wvSZ5eSlK8TmYwVvgScJstaqN8cAB7Uxlq_nsbQwQ4VeD1BkhQuDbRdcO9ncuOCtoKjzSnviHVmc +Parking3D,2PACX-1vQY18hIrYjYNOqQNE12BcPtF4gtFMhBbfDrakBcIVQKoStmfPBY7C4O_Efj1Y8sNbytbKZr-0lPmBml +TileConnect,2PACX-1vRfSd9UbrLilele8Fw1BafFjlvHG5EMnODfbppPiUaacr7wZ62IvgM65SYSjGEXJmU9g9AczollaFCf +DOF,2PACX-1vSDpYZEUrCioCBRSkoZLra5nWk53Ks1f180TD1g2dnKcm-MZtAYvFSXDieAF4xromZCmxIoZuIfGyCJ +D2,2PACX-1vS1V35WTTPx2Jdeu6sVjPbaqFpjVwFu1Rn9tZkvxm8aEHbuRWibxt2pxPkLdDzwmCmrGBtU-PilABJm +FindOut,2PACX-1vQA3R66yWRHmUn6sneeIUU1qXEiaXv6h9QdzYzVRTEOg-yZf7WCJ6tuvXMWzwcOgGihiSnr9shMX__d +FindIt,2PACX-1vQs75JLsmTv1PESzOP6ANRqVk4zA3Y7PD5OV0yQbA5MM3wmp-hu4qE9gztZy7ETCP2nHJgDziwVpcFE +AP,2PACX-1vSvXTqbTcNCuHZYbKGA-fPKQj8XuixYUB9UXWqTQXz5QLXNurCtmBlziMbUxte_eqsGO0tB2GXe-sEC +Arrow,2PACX-1vS5w8rNcJycK-VYgum7gkrLAx2Ln_7wykXLBX4EulI8XNGnlPsVlENQ8LupDdtiIu-JlngJaTw5dIzR +ApFindDifference,2PACX-1vSmodKOvKjxmiNoYbrXFI6n1XC0aqvlnbYkEGyabLKqS6-C3Yi3nstmC89Hc31cdIzCk1FAl54beW2P +GoodsSort,2PACX-1vQrg6Ss2bNYAI7A250t3_zp10UJtbbQXb8I4LtDJ2Q3uopUG_PUadoJy7T4w0jlf4xcTqot2NWsfp1m +CookingBlitz,2PACX-1vShqtSSpwYQ8CvK-BVr-wQ5ygGeKKLdpaaWysSN_QumoDZYATemayAQIOdnFRzMP69nEwFYSx51oey8 +WoodNuts,2PACX-1vQhtRg354eThBpWGCEk5f_2cLVbz1clQXv0n6w4Cyip0Knl6EQ4XwWMlcCec-legZdHU3E0-_cqKipc +MahjongSolitaire,2PACX-1vQpcaj8CpO__K1KGl-mg_940WOOIXBVzi0lmcjYTt1sqBI2PtK37s29McLTGU2I6N3fWM0ZepChedq7 \ No newline at end of file From 31991a780b74637c00cc204afd01b89cf8ded1bf Mon Sep 17 00:00:00 2001 From: huyufei Date: Thu, 27 Jun 2024 21:13:21 +0800 Subject: [PATCH 5/9] update: add json builder # Conflicts: # Editor/GuruManager/Helper/GuruServiceJsonBuilder.cs --- ...terHelper.cs => GuruServiceJsonBuilder.cs} | 141 ++++++++---------- ...cs.meta => GuruServiceJsonBuilder.cs.meta} | 0 2 files changed, 65 insertions(+), 76 deletions(-) rename Editor/GuruManager/Helper/{GuruServiceConverterHelper.cs => GuruServiceJsonBuilder.cs} (88%) rename Editor/GuruManager/Helper/{GuruServiceConverterHelper.cs.meta => GuruServiceJsonBuilder.cs.meta} (100%) diff --git a/Editor/GuruManager/Helper/GuruServiceConverterHelper.cs b/Editor/GuruManager/Helper/GuruServiceJsonBuilder.cs similarity index 88% rename from Editor/GuruManager/Helper/GuruServiceConverterHelper.cs rename to Editor/GuruManager/Helper/GuruServiceJsonBuilder.cs index 5d89127..ff65b84 100644 --- a/Editor/GuruManager/Helper/GuruServiceConverterHelper.cs +++ b/Editor/GuruManager/Helper/GuruServiceJsonBuilder.cs @@ -1,4 +1,5 @@ -#if GURU_SDK_DEV + + namespace Guru.Editor { @@ -12,8 +13,30 @@ namespace Guru.Editor public class GuruServiceJsonBuilder: EditorWindow { - const string GuruProjectSettingsName = "guru-project-settings.cfg"; - + public enum GuruProjects + { + Default = 0, + BallSortPlus, + DOF, + D2, + DO, + TileConnect, + FindOut, + FindIt, + AP, + TileBurst, + Parking3D, + BallSort, + BallSort2, + WaterSort, + WaterSort2, + Arrow, + APFindDifference, + CookingBlitz, + WoodNuts, + MahjongSolitaire, + GoodsSort, + } // Tool Version public const string Version = "0.2.0"; @@ -34,20 +57,35 @@ namespace Guru.Editor private static GuruServiceJsonBuilder _instance; private List _projectNames; private int _selectedProjectIndex = 0; - private static Dictionary _publishLinks; - public static Dictionary PublishLinks - { - get - { - if (_publishLinks == null) _publishLinks = LoadProjectSettingsCfg(); - return _publishLinks; - } - } + #region Link & Keys private const string TSVLink = "https://docs.google.com/spreadsheets/d/e/{0}/pub?gid=0&single=true&output=tsv"; - + private static readonly Dictionary PublishLinks = new Dictionary() + { + [GuruProjects.BallSortPlus.ToString()] = "2PACX-1vTa324nQIwNmXNtHC5sZZXYBdpUryKXdb8rFbTAwBa4KVlQ5ZXnErx2IvifkRxD8qKcNupfO1Kv5pJw", + [GuruProjects.DOF.ToString()] = "2PACX-1vSDpYZEUrCioCBRSkoZLra5nWk53Ks1f180TD1g2dnKcm-MZtAYvFSXDieAF4xromZCmxIoZuIfGyCJ", + [GuruProjects.D2.ToString()] = "2PACX-1vS1V35WTTPx2Jdeu6sVjPbaqFpjVwFu1Rn9tZkvxm8aEHbuRWibxt2pxPkLdDzwmCmrGBtU-PilABJm", + [GuruProjects.DO.ToString()] = "2PACX-1vT981NxQldx3qXELplYPoyFSfrMC3QvGciUwRu1sJmsHOu7dB3WSOPDGF4R55cXTq-Q5k_Dq4pmNpF2", + [GuruProjects.TileConnect.ToString()] = "2PACX-1vRfSd9UbrLilele8Fw1BafFjlvHG5EMnODfbppPiUaacr7wZ62IvgM65SYSjGEXJmU9g9AczollaFCf", + [GuruProjects.FindOut.ToString()] = "2PACX-1vQA3R66yWRHmUn6sneeIUU1qXEiaXv6h9QdzYzVRTEOg-yZf7WCJ6tuvXMWzwcOgGihiSnr9shMX__d", + [GuruProjects.FindIt.ToString()] = "2PACX-1vQs75JLsmTv1PESzOP6ANRqVk4zA3Y7PD5OV0yQbA5MM3wmp-hu4qE9gztZy7ETCP2nHJgDziwVpcFE", + [GuruProjects.AP.ToString()] = "2PACX-1vSvXTqbTcNCuHZYbKGA-fPKQj8XuixYUB9UXWqTQXz5QLXNurCtmBlziMbUxte_eqsGO0tB2GXe-sEC", + [GuruProjects.TileBurst.ToString()] = "2PACX-1vS5wvSZ5eSlK8TmYwVvgScJstaqN8cAB7Uxlq_nsbQwQ4VeD1BkhQuDbRdcO9ncuOCtoKjzSnviHVmc", + [GuruProjects.Parking3D.ToString()] = "2PACX-1vQY18hIrYjYNOqQNE12BcPtF4gtFMhBbfDrakBcIVQKoStmfPBY7C4O_Efj1Y8sNbytbKZr-0lPmBml", + [GuruProjects.BallSort.ToString()] = "2PACX-1vSPus7415l66-zScY1B1JOgLfSkm0yRPnRDG-BW0JgtnVZJziGDzvtBZr8D9oEZL2x478SdCS2yh0S_", + [GuruProjects.BallSort2.ToString()] = "2PACX-1vSZIZYbFuURK_ZMeMHV9ruL0SWBGMPA13er_J_DLRPVw5HBnU8_6c4mvek5UBFo1Ebbk63TMr-rsY6y", + [GuruProjects.WaterSort.ToString()] = "2PACX-1vTPxWbpP7KnT-e2xg9Uz-nukbLmqYc8SjwNL9MgycIhInNgmAjOmRnmyH6PWm3-hsEugKTJHKDcoKdI", + [GuruProjects.WaterSort2.ToString()] = "2PACX-1vQnZNtE7ZpT6eYagQDt686Be9Jr0tg22sRFg5cGiqFIsCVhWLu6jxDUg7qmyfIrX3iL5awat8FFnN7B", + [GuruProjects.Arrow.ToString()] = "2PACX-1vS5w8rNcJycK-VYgum7gkrLAx2Ln_7wykXLBX4EulI8XNGnlPsVlENQ8LupDdtiIu-JlngJaTw5dIzR", + [GuruProjects.APFindDifference.ToString()] = "2PACX-1vSmodKOvKjxmiNoYbrXFI6n1XC0aqvlnbYkEGyabLKqS6-C3Yi3nstmC89Hc31cdIzCk1FAl54beW2P", + [GuruProjects.CookingBlitz.ToString()] = "2PACX-1vShqtSSpwYQ8CvK-BVr-wQ5ygGeKKLdpaaWysSN_QumoDZYATemayAQIOdnFRzMP69nEwFYSx51oey8", + [GuruProjects.WoodNuts.ToString()] = "2PACX-1vQhtRg354eThBpWGCEk5f_2cLVbz1clQXv0n6w4Cyip0Knl6EQ4XwWMlcCec-legZdHU3E0-_cqKipc", + [GuruProjects.MahjongSolitaire.ToString()] = "2PACX-1vQpcaj8CpO__K1KGl-mg_940WOOIXBVzi0lmcjYTt1sqBI2PtK37s29McLTGU2I6N3fWM0ZepChedq7", + [GuruProjects.GoodsSort.ToString()] = "2PACX-1vQrg6Ss2bNYAI7A250t3_zp10UJtbbQXb8I4LtDJ2Q3uopUG_PUadoJy7T4w0jlf4xcTqot2NWsfp1m", + + }; #endregion @@ -68,7 +106,7 @@ namespace Guru.Editor var guru_service = EditorGuruServiceIO.CreateEmpty(); - var lines = tsv.Split('\n'); + var lines = tsv.Split("\n"); string line = ""; for (int index = 0; index < lines.Length; index++) { @@ -479,7 +517,7 @@ namespace Guru.Editor arr = GetStringArray(line, 0, 7); if(string.IsNullOrEmpty(arr[5])) arr[5] = "Store"; if(string.IsNullOrEmpty(arr[6])) arr[6] = "0"; - iaps.Add(string.Join(",", arr).Replace("\r", "")); + iaps.Add(string.Join("," , arr)); index++; } settings.products = iaps.ToArray(); @@ -583,53 +621,6 @@ namespace Guru.Editor _instance.Show(); } - #endregion - - #region Settings - - private static string GetRelativeDir() - { - var guids = AssetDatabase.FindAssets(nameof(GuruServiceJsonBuilder)); - if (guids.Length > 0) - { - var path = AssetDatabase.GUIDToAssetPath(guids[0]); - var rpath = Directory.GetParent(path).FullName; - return rpath; - } - return Path.GetFullPath($"Assets/../Packages/Editor/GuruJsonBuilder"); - } - - private static Dictionary LoadProjectSettingsCfg() - { - var cfgPath = $"{GetRelativeDir()}/{GuruProjectSettingsName}"; - if (File.Exists(cfgPath)) - { - var lines = File.ReadAllLines(cfgPath); - int len = lines?.Length ?? -1; - if (len > 0) - { - Dictionary dict = new Dictionary(lines.Length); - int i = 0; - string[] raw; - string line, key, value; - while (i < len) - { - line = lines[i]; - if(string.IsNullOrEmpty(line)) continue; - raw = lines[i].Split(','); - value = ""; - key = raw[0]; - if(string.IsNullOrEmpty(key)) continue; - if(raw.Length > 1) value = raw[1]; - dict[key] = value; - i++; - } - return dict; - } - } - return null; - } - #endregion #region Window @@ -640,7 +631,7 @@ namespace Guru.Editor this.titleContent = new GUIContent("Json Builder"); _projectNames = new List(20); - string[] names = PublishLinks.Keys.ToArray(); + string[] names = Enum.GetNames(typeof(GuruProjects)); string name = ""; for(int i = 0; i < names.Length; i++) { @@ -657,16 +648,7 @@ namespace Guru.Editor _selectedProjectIndex = 0; _state = STATE_IDLE; - - - var json = LoadProjectSettingsCfg(); - Debug.Log(json); - } - - - - private void OnEnable() { @@ -777,6 +759,11 @@ namespace Guru.Editor #region Networking + private static string GetProjectTSVUrl(GuruProjects pid) + { + return GetProjectTSVUrl(pid.ToString()); + } + private static string GetProjectTSVUrl(string pid) { if (PublishLinks.TryGetValue(pid, out var id)) @@ -822,6 +809,8 @@ namespace Guru.Editor #endregion + + #region TEST #if GURU_SDK_DEV @@ -830,7 +819,8 @@ namespace Guru.Editor private static void Test_FetchConfigFile() { - var pid = "FindOut"; + var pid = GuruProjects.FindOut; + var url = GetProjectTSVUrl(pid); @@ -857,7 +847,6 @@ namespace Guru.Editor } #endregion + } -} - -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/Editor/GuruManager/Helper/GuruServiceConverterHelper.cs.meta b/Editor/GuruManager/Helper/GuruServiceJsonBuilder.cs.meta similarity index 100% rename from Editor/GuruManager/Helper/GuruServiceConverterHelper.cs.meta rename to Editor/GuruManager/Helper/GuruServiceJsonBuilder.cs.meta From f85eb8d2bbc1bb5960416739b26bc2744cc0144f Mon Sep 17 00:00:00 2001 From: huyufei Date: Mon, 1 Jul 2024 16:06:48 +0800 Subject: [PATCH 6/9] =?UTF-8?q?update=EF=BC=9A=20=E6=9B=B4=E6=96=B0=20Json?= =?UTF-8?q?Builder=20=E7=9A=84=E6=95=B0=E6=8D=AE=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # Conflicts: # Editor/GuruJsonBuilder/guru-project-settings.cfg --- Editor/GuruJsonBuilder.meta | 3 + .../GuruServiceJsonBuilder.cs | 127 ++++++++++-------- .../GuruServiceJsonBuilder.cs.meta | 0 .../guru-project-settings.cfg.meta | 3 + 4 files changed, 76 insertions(+), 57 deletions(-) create mode 100644 Editor/GuruJsonBuilder.meta rename Editor/{GuruManager/Helper => GuruJsonBuilder}/GuruServiceJsonBuilder.cs (88%) rename Editor/{GuruManager/Helper => GuruJsonBuilder}/GuruServiceJsonBuilder.cs.meta (100%) create mode 100644 Editor/GuruJsonBuilder/guru-project-settings.cfg.meta diff --git a/Editor/GuruJsonBuilder.meta b/Editor/GuruJsonBuilder.meta new file mode 100644 index 0000000..2dcbefa --- /dev/null +++ b/Editor/GuruJsonBuilder.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: f9c48f29655a4b8bb90520de5a7c2fa4 +timeCreated: 1719552474 \ No newline at end of file diff --git a/Editor/GuruManager/Helper/GuruServiceJsonBuilder.cs b/Editor/GuruJsonBuilder/GuruServiceJsonBuilder.cs similarity index 88% rename from Editor/GuruManager/Helper/GuruServiceJsonBuilder.cs rename to Editor/GuruJsonBuilder/GuruServiceJsonBuilder.cs index ff65b84..aec3de3 100644 --- a/Editor/GuruManager/Helper/GuruServiceJsonBuilder.cs +++ b/Editor/GuruJsonBuilder/GuruServiceJsonBuilder.cs @@ -13,30 +13,8 @@ namespace Guru.Editor public class GuruServiceJsonBuilder: EditorWindow { - public enum GuruProjects - { - Default = 0, - BallSortPlus, - DOF, - D2, - DO, - TileConnect, - FindOut, - FindIt, - AP, - TileBurst, - Parking3D, - BallSort, - BallSort2, - WaterSort, - WaterSort2, - Arrow, - APFindDifference, - CookingBlitz, - WoodNuts, - MahjongSolitaire, - GoodsSort, - } + const string GuruProjectSettingsName = "guru-project-settings.cfg"; + // Tool Version public const string Version = "0.2.0"; @@ -57,35 +35,20 @@ namespace Guru.Editor private static GuruServiceJsonBuilder _instance; private List _projectNames; private int _selectedProjectIndex = 0; + private static Dictionary _publishLinks; + public static Dictionary PublishLinks + { + get + { + if (_publishLinks == null) _publishLinks = LoadProjectSettingsCfg(); + return _publishLinks; + } + } - #region Link & Keys private const string TSVLink = "https://docs.google.com/spreadsheets/d/e/{0}/pub?gid=0&single=true&output=tsv"; - private static readonly Dictionary PublishLinks = new Dictionary() - { - [GuruProjects.BallSortPlus.ToString()] = "2PACX-1vTa324nQIwNmXNtHC5sZZXYBdpUryKXdb8rFbTAwBa4KVlQ5ZXnErx2IvifkRxD8qKcNupfO1Kv5pJw", - [GuruProjects.DOF.ToString()] = "2PACX-1vSDpYZEUrCioCBRSkoZLra5nWk53Ks1f180TD1g2dnKcm-MZtAYvFSXDieAF4xromZCmxIoZuIfGyCJ", - [GuruProjects.D2.ToString()] = "2PACX-1vS1V35WTTPx2Jdeu6sVjPbaqFpjVwFu1Rn9tZkvxm8aEHbuRWibxt2pxPkLdDzwmCmrGBtU-PilABJm", - [GuruProjects.DO.ToString()] = "2PACX-1vT981NxQldx3qXELplYPoyFSfrMC3QvGciUwRu1sJmsHOu7dB3WSOPDGF4R55cXTq-Q5k_Dq4pmNpF2", - [GuruProjects.TileConnect.ToString()] = "2PACX-1vRfSd9UbrLilele8Fw1BafFjlvHG5EMnODfbppPiUaacr7wZ62IvgM65SYSjGEXJmU9g9AczollaFCf", - [GuruProjects.FindOut.ToString()] = "2PACX-1vQA3R66yWRHmUn6sneeIUU1qXEiaXv6h9QdzYzVRTEOg-yZf7WCJ6tuvXMWzwcOgGihiSnr9shMX__d", - [GuruProjects.FindIt.ToString()] = "2PACX-1vQs75JLsmTv1PESzOP6ANRqVk4zA3Y7PD5OV0yQbA5MM3wmp-hu4qE9gztZy7ETCP2nHJgDziwVpcFE", - [GuruProjects.AP.ToString()] = "2PACX-1vSvXTqbTcNCuHZYbKGA-fPKQj8XuixYUB9UXWqTQXz5QLXNurCtmBlziMbUxte_eqsGO0tB2GXe-sEC", - [GuruProjects.TileBurst.ToString()] = "2PACX-1vS5wvSZ5eSlK8TmYwVvgScJstaqN8cAB7Uxlq_nsbQwQ4VeD1BkhQuDbRdcO9ncuOCtoKjzSnviHVmc", - [GuruProjects.Parking3D.ToString()] = "2PACX-1vQY18hIrYjYNOqQNE12BcPtF4gtFMhBbfDrakBcIVQKoStmfPBY7C4O_Efj1Y8sNbytbKZr-0lPmBml", - [GuruProjects.BallSort.ToString()] = "2PACX-1vSPus7415l66-zScY1B1JOgLfSkm0yRPnRDG-BW0JgtnVZJziGDzvtBZr8D9oEZL2x478SdCS2yh0S_", - [GuruProjects.BallSort2.ToString()] = "2PACX-1vSZIZYbFuURK_ZMeMHV9ruL0SWBGMPA13er_J_DLRPVw5HBnU8_6c4mvek5UBFo1Ebbk63TMr-rsY6y", - [GuruProjects.WaterSort.ToString()] = "2PACX-1vTPxWbpP7KnT-e2xg9Uz-nukbLmqYc8SjwNL9MgycIhInNgmAjOmRnmyH6PWm3-hsEugKTJHKDcoKdI", - [GuruProjects.WaterSort2.ToString()] = "2PACX-1vQnZNtE7ZpT6eYagQDt686Be9Jr0tg22sRFg5cGiqFIsCVhWLu6jxDUg7qmyfIrX3iL5awat8FFnN7B", - [GuruProjects.Arrow.ToString()] = "2PACX-1vS5w8rNcJycK-VYgum7gkrLAx2Ln_7wykXLBX4EulI8XNGnlPsVlENQ8LupDdtiIu-JlngJaTw5dIzR", - [GuruProjects.APFindDifference.ToString()] = "2PACX-1vSmodKOvKjxmiNoYbrXFI6n1XC0aqvlnbYkEGyabLKqS6-C3Yi3nstmC89Hc31cdIzCk1FAl54beW2P", - [GuruProjects.CookingBlitz.ToString()] = "2PACX-1vShqtSSpwYQ8CvK-BVr-wQ5ygGeKKLdpaaWysSN_QumoDZYATemayAQIOdnFRzMP69nEwFYSx51oey8", - [GuruProjects.WoodNuts.ToString()] = "2PACX-1vQhtRg354eThBpWGCEk5f_2cLVbz1clQXv0n6w4Cyip0Knl6EQ4XwWMlcCec-legZdHU3E0-_cqKipc", - [GuruProjects.MahjongSolitaire.ToString()] = "2PACX-1vQpcaj8CpO__K1KGl-mg_940WOOIXBVzi0lmcjYTt1sqBI2PtK37s29McLTGU2I6N3fWM0ZepChedq7", - [GuruProjects.GoodsSort.ToString()] = "2PACX-1vQrg6Ss2bNYAI7A250t3_zp10UJtbbQXb8I4LtDJ2Q3uopUG_PUadoJy7T4w0jlf4xcTqot2NWsfp1m", - - }; + #endregion @@ -621,6 +584,53 @@ namespace Guru.Editor _instance.Show(); } + #endregion + + #region Settings + + private static string GetRelativeDir() + { + var guids = AssetDatabase.FindAssets(nameof(GuruServiceJsonBuilder)); + if (guids.Length > 0) + { + var path = AssetDatabase.GUIDToAssetPath(guids[0]); + var rpath = Directory.GetParent(path).FullName; + return rpath; + } + return Path.GetFullPath($"Assets/../Packages/Editor/GuruJsonBuilder"); + } + + private static Dictionary LoadProjectSettingsCfg() + { + var cfgPath = $"{GetRelativeDir()}/{GuruProjectSettingsName}"; + if (File.Exists(cfgPath)) + { + var lines = File.ReadAllLines(cfgPath); + int len = lines?.Length ?? -1; + if (len > 0) + { + Dictionary dict = new Dictionary(lines.Length); + int i = 0; + string[] raw; + string line, key, value; + while (i < len) + { + line = lines[i]; + if(string.IsNullOrEmpty(line)) continue; + raw = lines[i].Split(','); + key = ""; + value = ""; + key = raw[0]; + if(raw.Length > 0) value = raw[1]; + dict[key] = value; + i++; + } + return dict; + } + } + return null; + } + #endregion #region Window @@ -631,7 +641,7 @@ namespace Guru.Editor this.titleContent = new GUIContent("Json Builder"); _projectNames = new List(20); - string[] names = Enum.GetNames(typeof(GuruProjects)); + string[] names = PublishLinks.Keys.ToArray(); string name = ""; for(int i = 0; i < names.Length; i++) { @@ -648,7 +658,16 @@ namespace Guru.Editor _selectedProjectIndex = 0; _state = STATE_IDLE; + + + var json = LoadProjectSettingsCfg(); + Debug.Log(json); + } + + + + private void OnEnable() { @@ -759,11 +778,6 @@ namespace Guru.Editor #region Networking - private static string GetProjectTSVUrl(GuruProjects pid) - { - return GetProjectTSVUrl(pid.ToString()); - } - private static string GetProjectTSVUrl(string pid) { if (PublishLinks.TryGetValue(pid, out var id)) @@ -819,8 +833,7 @@ namespace Guru.Editor private static void Test_FetchConfigFile() { - var pid = GuruProjects.FindOut; - + var pid = "FindOut"; var url = GetProjectTSVUrl(pid); diff --git a/Editor/GuruManager/Helper/GuruServiceJsonBuilder.cs.meta b/Editor/GuruJsonBuilder/GuruServiceJsonBuilder.cs.meta similarity index 100% rename from Editor/GuruManager/Helper/GuruServiceJsonBuilder.cs.meta rename to Editor/GuruJsonBuilder/GuruServiceJsonBuilder.cs.meta diff --git a/Editor/GuruJsonBuilder/guru-project-settings.cfg.meta b/Editor/GuruJsonBuilder/guru-project-settings.cfg.meta new file mode 100644 index 0000000..e60e73a --- /dev/null +++ b/Editor/GuruJsonBuilder/guru-project-settings.cfg.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 88694fb6aaa64ea192e0bffb4cb5b744 +timeCreated: 1719552889 \ No newline at end of file From 804618b12bed0a6d4fef0b03efdadccb6cd286f2 Mon Sep 17 00:00:00 2001 From: huyufei Date: Mon, 1 Jul 2024 18:41:22 +0800 Subject: [PATCH 7/9] =?UTF-8?q?update:=20=E5=AE=8C=E5=96=84=20JsonBuilder?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Editor/GuruJsonBuilder/GuruServiceJsonBuilder.cs | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/Editor/GuruJsonBuilder/GuruServiceJsonBuilder.cs b/Editor/GuruJsonBuilder/GuruServiceJsonBuilder.cs index aec3de3..fbfe5b9 100644 --- a/Editor/GuruJsonBuilder/GuruServiceJsonBuilder.cs +++ b/Editor/GuruJsonBuilder/GuruServiceJsonBuilder.cs @@ -1,5 +1,4 @@ - - +#if GURU_SDK_DEV namespace Guru.Editor { @@ -618,10 +617,10 @@ namespace Guru.Editor line = lines[i]; if(string.IsNullOrEmpty(line)) continue; raw = lines[i].Split(','); - key = ""; value = ""; key = raw[0]; - if(raw.Length > 0) value = raw[1]; + if(string.IsNullOrEmpty(key)) continue; + if(raw.Length > 1) value = raw[1]; dict[key] = value; i++; } @@ -823,8 +822,6 @@ namespace Guru.Editor #endregion - - #region TEST #if GURU_SDK_DEV @@ -860,6 +857,7 @@ namespace Guru.Editor } #endregion - } -} \ No newline at end of file +} + +#endif \ No newline at end of file From 4d8693160508227f65d8faa96ac19a7f4823d0b0 Mon Sep 17 00:00:00 2001 From: huyufei Date: Mon, 1 Jul 2024 18:45:07 +0800 Subject: [PATCH 8/9] =?UTF-8?q?update:=20=E4=BF=AE=E5=A4=8D=E7=BC=96?= =?UTF-8?q?=E8=AF=91=20bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Editor/GuruJsonBuilder/GuruServiceJsonBuilder.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Editor/GuruJsonBuilder/GuruServiceJsonBuilder.cs b/Editor/GuruJsonBuilder/GuruServiceJsonBuilder.cs index fbfe5b9..4a5dd5b 100644 --- a/Editor/GuruJsonBuilder/GuruServiceJsonBuilder.cs +++ b/Editor/GuruJsonBuilder/GuruServiceJsonBuilder.cs @@ -68,7 +68,7 @@ namespace Guru.Editor var guru_service = EditorGuruServiceIO.CreateEmpty(); - var lines = tsv.Split("\n"); + var lines = tsv.Split('\n'); string line = ""; for (int index = 0; index < lines.Length; index++) { From 2fc6faf831df9c2b9d8f8a33869ca4adcd3439b3 Mon Sep 17 00:00:00 2001 From: huyufei Date: Thu, 4 Jul 2024 17:23:07 +0800 Subject: [PATCH 9/9] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20ServiceBuilder?= =?UTF-8?q?=20=E4=B8=8A=E7=9A=84=E8=BE=93=E5=87=BA=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=B8=A6=E6=9C=89=E6=8D=A2=E8=A1=8C=E7=9A=84=20BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Editor/GuruJsonBuilder/GuruServiceJsonBuilder.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Editor/GuruJsonBuilder/GuruServiceJsonBuilder.cs b/Editor/GuruJsonBuilder/GuruServiceJsonBuilder.cs index 4a5dd5b..5d89127 100644 --- a/Editor/GuruJsonBuilder/GuruServiceJsonBuilder.cs +++ b/Editor/GuruJsonBuilder/GuruServiceJsonBuilder.cs @@ -479,7 +479,7 @@ namespace Guru.Editor arr = GetStringArray(line, 0, 7); if(string.IsNullOrEmpty(arr[5])) arr[5] = "Store"; if(string.IsNullOrEmpty(arr[6])) arr[6] = "0"; - iaps.Add(string.Join("," , arr)); + iaps.Add(string.Join(",", arr).Replace("\r", "")); index++; } settings.products = iaps.ToArray();