|
|
@@ -20,6 +20,8 @@ public class CfgLanguageCfg : GameData<CfgLanguageCfg>
|
|
|
public string CfgID;
|
|
|
public int CfgType;
|
|
|
public int Enable;
|
|
|
+ public string AssetPath;
|
|
|
+ public string AssetName;
|
|
|
public CfgLanguageCfg()
|
|
|
{
|
|
|
CfgName = "";
|
|
|
@@ -27,6 +29,8 @@ public class CfgLanguageCfg : GameData<CfgLanguageCfg>
|
|
|
CfgID = "";
|
|
|
CfgType = 0;
|
|
|
Enable = 0;
|
|
|
+ AssetPath = "";
|
|
|
+ AssetName = "";
|
|
|
}
|
|
|
public static void OnCsvLoad(CsvReader csvReader)
|
|
|
{
|
|
|
@@ -53,6 +57,7 @@ public class LanguageCfg : GameData<LanguageCfg>
|
|
|
key = "";
|
|
|
Language = "";
|
|
|
}
|
|
|
+
|
|
|
public static void OnCsvLoad(CsvReader csvReader)
|
|
|
{
|
|
|
LanguageCfg.Onload(csvReader);
|
|
|
@@ -65,6 +70,33 @@ public class LanguageCfg : GameData<LanguageCfg>
|
|
|
}
|
|
|
|
|
|
|
|
|
+public class LocalizedTextureCfg :GameData<LocalizedTextureCfg>
|
|
|
+{
|
|
|
+ public string key;
|
|
|
+ public string Language;
|
|
|
+ public string AssetPath;
|
|
|
+ public string AssetName;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ public LocalizedTextureCfg()
|
|
|
+ {
|
|
|
+ key = "";
|
|
|
+ Language = "";
|
|
|
+ AssetPath = "";
|
|
|
+ AssetName = "";
|
|
|
+ }
|
|
|
+ public static void OnCsvLoad(CsvReader csvReader)
|
|
|
+ {
|
|
|
+ LanguageCfg.Onload(csvReader);
|
|
|
+ }
|
|
|
+
|
|
|
+ public static string FileName_S()
|
|
|
+ {
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
public class CsvToLua : EditorWindow
|
|
|
{
|
|
|
public static string CSV_PATH = "csv path";
|
|
|
@@ -444,7 +476,30 @@ return aaa";
|
|
|
LanguageCfg.Clear(false);
|
|
|
return ret;
|
|
|
}
|
|
|
+ public static Dictionary<string, LocalizedTextureCfg> GetLanguageTextureCfg(string path)
|
|
|
+ {
|
|
|
+ Dictionary<string, LocalizedTextureCfg> ret = new Dictionary<string, LocalizedTextureCfg>();
|
|
|
|
|
|
+ TextAsset ta = AssetDatabase.LoadAssetAtPath<TextAsset>(path);
|
|
|
+ CsvReader csvReader = new CsvReader(LanguageCfg.FileName_S(), ta.bytes, 1, 2, 3);
|
|
|
+ LocalizedTextureCfg.OnCsvLoad(csvReader);
|
|
|
+ LocalizedTextureCfg.Foreach(it =>
|
|
|
+ {
|
|
|
+ if (!ret.ContainsKey(it.key))
|
|
|
+ {
|
|
|
+ ret.Add(it.key, it);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ ret.Add(it.key + ret.Count, it);
|
|
|
+ Debug.Log("重复项:" + it.key);
|
|
|
+ }
|
|
|
+
|
|
|
+ //Debug.Log(it.BaseName);
|
|
|
+ });
|
|
|
+ LocalizedTextureCfg.Clear(false);
|
|
|
+ return ret;
|
|
|
+ }
|
|
|
public static void CheckCgf()
|
|
|
{
|
|
|
string luaPath = "Assets/Lua/Config/";
|
|
|
@@ -463,22 +518,69 @@ return aaa";
|
|
|
if (value[0].CfgType == 1)
|
|
|
{
|
|
|
cfgPath = luaPath + item.Key + ".lua";
|
|
|
- CheckLauCfg_CS(value,cfgPath,language, $"{OutPutPath}lua/{value[0].CfgName}.lua");
|
|
|
-
|
|
|
+ CheckLauCfg_CS(value,cfgPath,language, $"{OutPutPath}lua/{value[0].CfgName}.lua",it => string.Equals(it.Value.Language, value),(obj,key,value,cfg)=>
|
|
|
+ {
|
|
|
+ obj.key = key;
|
|
|
+ obj.Language = value;
|
|
|
+ });
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
cfgPath = csvPath + item.Key + ".csv";
|
|
|
- CheckCsvCfg(value, cfgPath, language, $"{OutPutPath}csv/{value[0].CfgName}.csv");
|
|
|
+ CheckCsvCfg(value, cfgPath, language, $"{OutPutPath}csv/{value[0].CfgName}.csv", it => string.Equals(it.Value.Language, value), (obj, key, value, cfg) =>
|
|
|
+ {
|
|
|
+ obj.key = key;
|
|
|
+ obj.Language = value;
|
|
|
+ });
|
|
|
}
|
|
|
}
|
|
|
EditorUtility.ClearProgressBar();
|
|
|
CsvWriter<LanguageCfg> csvWriter = new CsvWriter<LanguageCfg>(OutPutPath+ "Language.csv", "Language.csv",language.Values.ToList(), LanguageCfg.GetFormatInfo());
|
|
|
csvWriter.Write();
|
|
|
-
|
|
|
}
|
|
|
|
|
|
|
|
|
+ public static void CheckTextureCgf()
|
|
|
+ {
|
|
|
+ string luaPath = "Assets/Lua/Config/";
|
|
|
+ string csvPath = "Assets/Content/Config/";
|
|
|
+ string OutPutPath = "Build/NewCfg/";
|
|
|
+ Dictionary<string, List<CfgLanguageCfg>> cfgs = GetCfgLanguageCfg("Assets/Editor/CsvToLua/CfgLanguageTextureCfg.csv");
|
|
|
+ Dictionary<string, LocalizedTextureCfg> language = GetLanguageTextureCfg("Assets/Content/Config/LanguageTextureCfg_cn.csv");
|
|
|
+ float ckcount = 0;
|
|
|
+ foreach (var item in cfgs)
|
|
|
+ {
|
|
|
+ ckcount += 1;
|
|
|
+ List<CfgLanguageCfg> value = item.Value;
|
|
|
+
|
|
|
+ EditorUtility.DisplayProgressBar("检测配置中", $"检测:{item.Key}...", ckcount / cfgs.Count);
|
|
|
+ string cfgPath = "";
|
|
|
+ if (value[0].CfgType == 1)
|
|
|
+ {
|
|
|
+ cfgPath = luaPath + item.Key + ".lua";
|
|
|
+ CheckLauCfg_CS(value, cfgPath, language, $"{OutPutPath}lua/{value[0].CfgName}.lua", it => string.Equals(it.Value.Language, value), (obj, key, value, cfg) =>
|
|
|
+ {
|
|
|
+ obj.key = key;
|
|
|
+ obj.Language = value;
|
|
|
+ obj.AssetPath = cfg.AssetPath;
|
|
|
+ });
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ cfgPath = csvPath + item.Key + ".csv";
|
|
|
+ CheckCsvCfg(value, cfgPath, language, $"{OutPutPath}csv/{value[0].CfgName}.csv", it => string.Equals(it.Value.Language, value), (obj, key, value, cfg) =>
|
|
|
+ {
|
|
|
+ obj.key = key;
|
|
|
+ obj.Language = value;
|
|
|
+ obj.AssetPath = cfg.AssetPath;
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ EditorUtility.ClearProgressBar();
|
|
|
+ CsvWriter<LocalizedTextureCfg> csvWriter = new CsvWriter<LocalizedTextureCfg>(OutPutPath + "Language.csv", "Language.csv", language.Values.ToList(), LocalizedTextureCfg.GetFormatInfo());
|
|
|
+ csvWriter.Write();
|
|
|
+ }
|
|
|
+
|
|
|
private static void CheckLauCfg(List<CfgLanguageCfg> cfg,string path, Dictionary<string, LanguageCfg> language,string outputPath)
|
|
|
{
|
|
|
using (LuaState runTime = new LuaState())
|
|
|
@@ -581,7 +683,7 @@ return aaa";
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- private static void CheckLauCfg_CS(List<CfgLanguageCfg> cfg, string path, Dictionary<string, LanguageCfg> language, string outputPath)
|
|
|
+ private static void CheckLauCfg_CS<T>(List<CfgLanguageCfg> cfg, string path, Dictionary<string, T> language, string outputPath,Func<KeyValuePair<string,T>,bool> findcb, Action<T,string,string, CfgLanguageCfg> cb) where T :GameData
|
|
|
{
|
|
|
string[] rowDatas = File.ReadAllLines(path);
|
|
|
bool iswrite = true;
|
|
|
@@ -603,10 +705,7 @@ return aaa";
|
|
|
{
|
|
|
continue;
|
|
|
}
|
|
|
- KeyValuePair<string, LanguageCfg> valuePair = language.FirstOrDefault(it =>
|
|
|
- {
|
|
|
- return string.Equals(it.Value.Language, value);
|
|
|
- });
|
|
|
+ KeyValuePair<string, T> valuePair = language.FirstOrDefault(findcb);
|
|
|
|
|
|
if (!string.IsNullOrEmpty(valuePair.Key))
|
|
|
{
|
|
|
@@ -624,8 +723,13 @@ return aaa";
|
|
|
value = value.Replace("\n", "\\n");
|
|
|
//Debug.Log(value);
|
|
|
}
|
|
|
- if(!language.ContainsKey(key))
|
|
|
- language.Add(key, new LanguageCfg() { key = key, Language = value });
|
|
|
+ if (!language.ContainsKey(key))
|
|
|
+ {
|
|
|
+ Type type = typeof(T);
|
|
|
+ T obj = Activator.CreateInstance<T>();
|
|
|
+ cb?.Invoke(obj,key,value, cfg[i]);
|
|
|
+ language.Add(key, obj);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
}
|
|
|
@@ -638,7 +742,7 @@ return aaa";
|
|
|
|
|
|
}
|
|
|
|
|
|
- private static void CheckCsvCfg(List<CfgLanguageCfg> cfg, string path, Dictionary<string, LanguageCfg> language, string outputPath)
|
|
|
+ private static void CheckCsvCfg<T>(List<CfgLanguageCfg> cfg, string path, Dictionary<string, T> language, string outputPath, Func<KeyValuePair<string, T>, bool> findcb, Action<T, string, string, CfgLanguageCfg> cb) where T : GameData
|
|
|
{
|
|
|
|
|
|
CsvReader csvReader = new CsvReader(path,1,2,3);
|
|
|
@@ -661,10 +765,7 @@ return aaa";
|
|
|
}
|
|
|
|
|
|
|
|
|
- KeyValuePair<string, LanguageCfg> valuePair = language.FirstOrDefault(it =>
|
|
|
- {
|
|
|
- return string.Equals(it.Value.Language, value);
|
|
|
- });
|
|
|
+ KeyValuePair<string, T> valuePair = language.FirstOrDefault(findcb);
|
|
|
|
|
|
if (!string.IsNullOrEmpty(valuePair.Key))
|
|
|
{
|
|
|
@@ -674,7 +775,10 @@ return aaa";
|
|
|
{
|
|
|
string key = cfg[j].CfgID + i;
|
|
|
csvReader.SetDataByFieldName(cfg[j].Field, key,i);
|
|
|
- language.Add(key, new LanguageCfg() { key = key, Language = value });
|
|
|
+ Type type = typeof(T);
|
|
|
+ T obj = Activator.CreateInstance<T>();
|
|
|
+ cb?.Invoke(obj, key, value, cfg[i]);
|
|
|
+ language.Add(key,obj);
|
|
|
}
|
|
|
|
|
|
}
|