- 调整项目结构以适应打包需求
- 添加控制台便于在游戏运行过程中调试各项功能 - 添加 LevelRarity 表,增加了随关卡数动态调整的商品道具品质刷新概率
This commit is contained in:
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 051868bff0e1df3498c100dc5a9f027d
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,13 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Game Framework
|
||||
// Copyright © 2013-2021 Jiang Yin. All rights reserved.
|
||||
// Homepage: https://gameframework.cn/
|
||||
// Feedback: mailto:ellan@gameframework.cn
|
||||
//------------------------------------------------------------
|
||||
|
||||
using System.Text;
|
||||
|
||||
namespace StarForce.Editor.DataTableTools
|
||||
{
|
||||
public delegate void DataTableCodeGenerator(DataTableProcessor dataTableProcessor, StringBuilder codeContent, object userData);
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 40941eb45ca7d284f8a806370b88fa78
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,412 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Game Framework
|
||||
// Copyright © 2013-2021 Jiang Yin. All rights reserved.
|
||||
// Homepage: https://gameframework.cn/
|
||||
// Feedback: mailto:ellan@gameframework.cn
|
||||
//------------------------------------------------------------
|
||||
|
||||
using GameFramework;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using UnityEngine;
|
||||
|
||||
namespace StarForce.Editor.DataTableTools
|
||||
{
|
||||
public sealed class DataTableGenerator
|
||||
{
|
||||
private const string DataTablePath = "Assets/GameMain/DataTables";
|
||||
private const string CSharpCodePath = "Assets/GameMain/Scripts/DataTable";
|
||||
private const string CSharpCodeTemplateFileName = "Assets/GameMain/Configs/DataTableCodeTemplate.txt";
|
||||
private static readonly Regex EndWithNumberRegex = new Regex(@"\d+$");
|
||||
private static readonly Regex NameRegex = new Regex(@"^[A-Z][A-Za-z0-9_]*$");
|
||||
|
||||
public static DataTableProcessor CreateDataTableProcessor(string dataTableName)
|
||||
{
|
||||
return new DataTableProcessor(Utility.Path.GetRegularPath(Path.Combine(DataTablePath, dataTableName + ".txt")), Encoding.GetEncoding("GB2312"), 1, 2, null, 3, 4, 1);
|
||||
}
|
||||
|
||||
public static bool CheckRawData(DataTableProcessor dataTableProcessor, string dataTableName)
|
||||
{
|
||||
for (int i = 0; i < dataTableProcessor.RawColumnCount; i++)
|
||||
{
|
||||
string name = dataTableProcessor.GetName(i);
|
||||
if (string.IsNullOrEmpty(name) || name == "#")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!NameRegex.IsMatch(name))
|
||||
{
|
||||
Debug.LogWarning(Utility.Text.Format("Check raw data failure. DataTableName='{0}' Name='{1}'", dataTableName, name));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public static void GenerateDataFile(DataTableProcessor dataTableProcessor, string dataTableName)
|
||||
{
|
||||
string binaryDataFileName = Utility.Path.GetRegularPath(Path.Combine(DataTablePath, dataTableName + ".bytes"));
|
||||
if (!dataTableProcessor.GenerateDataFile(binaryDataFileName) && File.Exists(binaryDataFileName))
|
||||
{
|
||||
File.Delete(binaryDataFileName);
|
||||
}
|
||||
}
|
||||
|
||||
public static void GenerateCodeFile(DataTableProcessor dataTableProcessor, string dataTableName)
|
||||
{
|
||||
dataTableProcessor.SetCodeTemplate(CSharpCodeTemplateFileName, Encoding.UTF8);
|
||||
dataTableProcessor.SetCodeGenerator(DataTableCodeGenerator);
|
||||
|
||||
string csharpCodeFileName = Utility.Path.GetRegularPath(Path.Combine(CSharpCodePath, "DR" + dataTableName + ".cs"));
|
||||
if (!dataTableProcessor.GenerateCodeFile(csharpCodeFileName, Encoding.UTF8, dataTableName) && File.Exists(csharpCodeFileName))
|
||||
{
|
||||
File.Delete(csharpCodeFileName);
|
||||
}
|
||||
}
|
||||
|
||||
private static void DataTableCodeGenerator(DataTableProcessor dataTableProcessor, StringBuilder codeContent, object userData)
|
||||
{
|
||||
string dataTableName = (string)userData;
|
||||
|
||||
codeContent.Replace("__DATA_TABLE_CREATE_TIME__", DateTime.UtcNow.ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss.fff"));
|
||||
codeContent.Replace("__DATA_TABLE_NAME_SPACE__", "StarForce");
|
||||
codeContent.Replace("__DATA_TABLE_CLASS_NAME__", "DR" + dataTableName);
|
||||
codeContent.Replace("__DATA_TABLE_COMMENT__", dataTableProcessor.GetValue(0, 1) + "。");
|
||||
codeContent.Replace("__DATA_TABLE_ID_COMMENT__", "获取" + dataTableProcessor.GetComment(dataTableProcessor.IdColumn) + "。");
|
||||
codeContent.Replace("__DATA_TABLE_PROPERTIES__", GenerateDataTableProperties(dataTableProcessor));
|
||||
codeContent.Replace("__DATA_TABLE_PARSER__", GenerateDataTableParser(dataTableProcessor));
|
||||
codeContent.Replace("__DATA_TABLE_PROPERTY_ARRAY__", GenerateDataTablePropertyArray(dataTableProcessor));
|
||||
}
|
||||
|
||||
private static string GenerateDataTableProperties(DataTableProcessor dataTableProcessor)
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
bool firstProperty = true;
|
||||
for (int i = 0; i < dataTableProcessor.RawColumnCount; i++)
|
||||
{
|
||||
if (dataTableProcessor.IsCommentColumn(i))
|
||||
{
|
||||
// 注释列
|
||||
continue;
|
||||
}
|
||||
|
||||
if (dataTableProcessor.IsIdColumn(i))
|
||||
{
|
||||
// 编号列
|
||||
continue;
|
||||
}
|
||||
|
||||
if (firstProperty)
|
||||
{
|
||||
firstProperty = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
stringBuilder.AppendLine().AppendLine();
|
||||
}
|
||||
|
||||
stringBuilder
|
||||
.AppendLine(" /// <summary>")
|
||||
.AppendFormat(" /// 获取{0}。", dataTableProcessor.GetComment(i)).AppendLine()
|
||||
.AppendLine(" /// </summary>")
|
||||
.AppendFormat(" public {0} {1}", dataTableProcessor.GetLanguageKeyword(i), dataTableProcessor.GetName(i)).AppendLine()
|
||||
.AppendLine(" {")
|
||||
.AppendLine(" get;")
|
||||
.AppendLine(" private set;")
|
||||
.Append(" }");
|
||||
}
|
||||
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
|
||||
private static string GenerateDataTableParser(DataTableProcessor dataTableProcessor)
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
stringBuilder
|
||||
.AppendLine(" public override bool ParseDataRow(string dataRowString, object userData)")
|
||||
.AppendLine(" {")
|
||||
.AppendLine(" string[] columnStrings = dataRowString.Split(DataTableExtension.DataSplitSeparators);")
|
||||
.AppendLine(" for (int i = 0; i < columnStrings.Length; i++)")
|
||||
.AppendLine(" {")
|
||||
.AppendLine(" columnStrings[i] = columnStrings[i].Trim(DataTableExtension.DataTrimSeparators);")
|
||||
.AppendLine(" }")
|
||||
.AppendLine()
|
||||
.AppendLine(" int index = 0;");
|
||||
|
||||
for (int i = 0; i < dataTableProcessor.RawColumnCount; i++)
|
||||
{
|
||||
if (dataTableProcessor.IsCommentColumn(i))
|
||||
{
|
||||
// 注释列
|
||||
stringBuilder.AppendLine(" index++;");
|
||||
continue;
|
||||
}
|
||||
|
||||
if (dataTableProcessor.IsIdColumn(i))
|
||||
{
|
||||
// 编号列
|
||||
stringBuilder.AppendLine(" m_Id = int.Parse(columnStrings[index++]);");
|
||||
continue;
|
||||
}
|
||||
|
||||
if (dataTableProcessor.IsSystem(i))
|
||||
{
|
||||
string languageKeyword = dataTableProcessor.GetLanguageKeyword(i);
|
||||
if (languageKeyword == "string")
|
||||
{
|
||||
stringBuilder.AppendFormat(" {0} = columnStrings[index++];", dataTableProcessor.GetName(i)).AppendLine();
|
||||
}
|
||||
else
|
||||
{
|
||||
stringBuilder.AppendFormat(" {0} = {1}.Parse(columnStrings[index++]);", dataTableProcessor.GetName(i), languageKeyword).AppendLine();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
stringBuilder.AppendFormat(" {0} = DataTableExtension.Parse{1}(columnStrings[index++]);", dataTableProcessor.GetName(i), dataTableProcessor.GetType(i).Name).AppendLine();
|
||||
}
|
||||
}
|
||||
|
||||
stringBuilder.AppendLine()
|
||||
.AppendLine(" GeneratePropertyArray();")
|
||||
.AppendLine(" return true;")
|
||||
.AppendLine(" }")
|
||||
.AppendLine()
|
||||
.AppendLine(" public override bool ParseDataRow(byte[] dataRowBytes, int startIndex, int length, object userData)")
|
||||
.AppendLine(" {")
|
||||
.AppendLine(" using (MemoryStream memoryStream = new MemoryStream(dataRowBytes, startIndex, length, false))")
|
||||
.AppendLine(" {")
|
||||
.AppendLine(" using (BinaryReader binaryReader = new BinaryReader(memoryStream, Encoding.UTF8))")
|
||||
.AppendLine(" {");
|
||||
|
||||
for (int i = 0; i < dataTableProcessor.RawColumnCount; i++)
|
||||
{
|
||||
if (dataTableProcessor.IsCommentColumn(i))
|
||||
{
|
||||
// 注释列
|
||||
continue;
|
||||
}
|
||||
|
||||
if (dataTableProcessor.IsIdColumn(i))
|
||||
{
|
||||
// 编号列
|
||||
stringBuilder.AppendLine(" m_Id = binaryReader.Read7BitEncodedInt32();");
|
||||
continue;
|
||||
}
|
||||
|
||||
string languageKeyword = dataTableProcessor.GetLanguageKeyword(i);
|
||||
if (languageKeyword == "int" || languageKeyword == "uint" || languageKeyword == "long" || languageKeyword == "ulong")
|
||||
{
|
||||
stringBuilder.AppendFormat(" {0} = binaryReader.Read7BitEncoded{1}();", dataTableProcessor.GetName(i), dataTableProcessor.GetType(i).Name).AppendLine();
|
||||
}
|
||||
else
|
||||
{
|
||||
stringBuilder.AppendFormat(" {0} = binaryReader.Read{1}();", dataTableProcessor.GetName(i), dataTableProcessor.GetType(i).Name).AppendLine();
|
||||
}
|
||||
}
|
||||
|
||||
stringBuilder
|
||||
.AppendLine(" }")
|
||||
.AppendLine(" }")
|
||||
.AppendLine()
|
||||
.AppendLine(" GeneratePropertyArray();")
|
||||
.AppendLine(" return true;")
|
||||
.Append(" }");
|
||||
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
|
||||
private static string GenerateDataTablePropertyArray(DataTableProcessor dataTableProcessor)
|
||||
{
|
||||
List<PropertyCollection> propertyCollections = new List<PropertyCollection>();
|
||||
for (int i = 0; i < dataTableProcessor.RawColumnCount; i++)
|
||||
{
|
||||
if (dataTableProcessor.IsCommentColumn(i))
|
||||
{
|
||||
// 注释列
|
||||
continue;
|
||||
}
|
||||
|
||||
if (dataTableProcessor.IsIdColumn(i))
|
||||
{
|
||||
// 编号列
|
||||
continue;
|
||||
}
|
||||
|
||||
string name = dataTableProcessor.GetName(i);
|
||||
if (!EndWithNumberRegex.IsMatch(name))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
string propertyCollectionName = EndWithNumberRegex.Replace(name, string.Empty);
|
||||
int id = int.Parse(EndWithNumberRegex.Match(name).Value);
|
||||
|
||||
PropertyCollection propertyCollection = null;
|
||||
foreach (PropertyCollection pc in propertyCollections)
|
||||
{
|
||||
if (pc.Name == propertyCollectionName)
|
||||
{
|
||||
propertyCollection = pc;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (propertyCollection == null)
|
||||
{
|
||||
propertyCollection = new PropertyCollection(propertyCollectionName, dataTableProcessor.GetLanguageKeyword(i));
|
||||
propertyCollections.Add(propertyCollection);
|
||||
}
|
||||
|
||||
propertyCollection.AddItem(id, name);
|
||||
}
|
||||
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
bool firstProperty = true;
|
||||
foreach (PropertyCollection propertyCollection in propertyCollections)
|
||||
{
|
||||
if (firstProperty)
|
||||
{
|
||||
firstProperty = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
stringBuilder.AppendLine().AppendLine();
|
||||
}
|
||||
|
||||
stringBuilder
|
||||
.AppendFormat(" private KeyValuePair<int, {1}>[] m_{0} = null;", propertyCollection.Name, propertyCollection.LanguageKeyword).AppendLine()
|
||||
.AppendLine()
|
||||
.AppendFormat(" public int {0}Count", propertyCollection.Name).AppendLine()
|
||||
.AppendLine(" {")
|
||||
.AppendLine(" get")
|
||||
.AppendLine(" {")
|
||||
.AppendFormat(" return m_{0}.Length;", propertyCollection.Name).AppendLine()
|
||||
.AppendLine(" }")
|
||||
.AppendLine(" }")
|
||||
.AppendLine()
|
||||
.AppendFormat(" public {1} Get{0}(int id)", propertyCollection.Name, propertyCollection.LanguageKeyword).AppendLine()
|
||||
.AppendLine(" {")
|
||||
.AppendFormat(" foreach (KeyValuePair<int, {1}> i in m_{0})", propertyCollection.Name, propertyCollection.LanguageKeyword).AppendLine()
|
||||
.AppendLine(" {")
|
||||
.AppendLine(" if (i.Key == id)")
|
||||
.AppendLine(" {")
|
||||
.AppendLine(" return i.Value;")
|
||||
.AppendLine(" }")
|
||||
.AppendLine(" }")
|
||||
.AppendLine()
|
||||
.AppendFormat(" throw new GameFrameworkException(Utility.Text.Format(\"Get{0} with invalid id '{{0}}'.\", id));", propertyCollection.Name).AppendLine()
|
||||
.AppendLine(" }")
|
||||
.AppendLine()
|
||||
.AppendFormat(" public {1} Get{0}At(int index)", propertyCollection.Name, propertyCollection.LanguageKeyword).AppendLine()
|
||||
.AppendLine(" {")
|
||||
.AppendFormat(" if (index < 0 || index >= m_{0}.Length)", propertyCollection.Name).AppendLine()
|
||||
.AppendLine(" {")
|
||||
.AppendFormat(" throw new GameFrameworkException(Utility.Text.Format(\"Get{0}At with invalid index '{{0}}'.\", index));", propertyCollection.Name).AppendLine()
|
||||
.AppendLine(" }")
|
||||
.AppendLine()
|
||||
.AppendFormat(" return m_{0}[index].Value;", propertyCollection.Name).AppendLine()
|
||||
.Append(" }");
|
||||
}
|
||||
|
||||
if (propertyCollections.Count > 0)
|
||||
{
|
||||
stringBuilder.AppendLine().AppendLine();
|
||||
}
|
||||
|
||||
stringBuilder
|
||||
.AppendLine(" private void GeneratePropertyArray()")
|
||||
.AppendLine(" {");
|
||||
|
||||
firstProperty = true;
|
||||
foreach (PropertyCollection propertyCollection in propertyCollections)
|
||||
{
|
||||
if (firstProperty)
|
||||
{
|
||||
firstProperty = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
stringBuilder.AppendLine().AppendLine();
|
||||
}
|
||||
|
||||
stringBuilder
|
||||
.AppendFormat(" m_{0} = new KeyValuePair<int, {1}>[]", propertyCollection.Name, propertyCollection.LanguageKeyword).AppendLine()
|
||||
.AppendLine(" {");
|
||||
|
||||
int itemCount = propertyCollection.ItemCount;
|
||||
for (int i = 0; i < itemCount; i++)
|
||||
{
|
||||
KeyValuePair<int, string> item = propertyCollection.GetItem(i);
|
||||
stringBuilder.AppendFormat(" new KeyValuePair<int, {0}>({1}, {2}),", propertyCollection.LanguageKeyword, item.Key.ToString(), item.Value).AppendLine();
|
||||
}
|
||||
|
||||
stringBuilder.Append(" };");
|
||||
}
|
||||
|
||||
stringBuilder
|
||||
.AppendLine()
|
||||
.Append(" }");
|
||||
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
|
||||
private sealed class PropertyCollection
|
||||
{
|
||||
private readonly string m_Name;
|
||||
private readonly string m_LanguageKeyword;
|
||||
private readonly List<KeyValuePair<int, string>> m_Items;
|
||||
|
||||
public PropertyCollection(string name, string languageKeyword)
|
||||
{
|
||||
m_Name = name;
|
||||
m_LanguageKeyword = languageKeyword;
|
||||
m_Items = new List<KeyValuePair<int, string>>();
|
||||
}
|
||||
|
||||
public string Name
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_Name;
|
||||
}
|
||||
}
|
||||
|
||||
public string LanguageKeyword
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_LanguageKeyword;
|
||||
}
|
||||
}
|
||||
|
||||
public int ItemCount
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_Items.Count;
|
||||
}
|
||||
}
|
||||
|
||||
public KeyValuePair<int, string> GetItem(int index)
|
||||
{
|
||||
if (index < 0 || index >= m_Items.Count)
|
||||
{
|
||||
throw new GameFrameworkException(Utility.Text.Format("GetItem with invalid index '{0}'.", index));
|
||||
}
|
||||
|
||||
return m_Items[index];
|
||||
}
|
||||
|
||||
public void AddItem(int id, string propertyName)
|
||||
{
|
||||
m_Items.Add(new KeyValuePair<int, string>(id, propertyName));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f91ec109eb6c73a408325960701b4c94
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,36 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Game Framework
|
||||
// Copyright © 2013-2021 Jiang Yin. All rights reserved.
|
||||
// Homepage: https://gameframework.cn/
|
||||
// Feedback: mailto:ellan@gameframework.cn
|
||||
//------------------------------------------------------------
|
||||
|
||||
using GameFramework;
|
||||
using Procedure;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace StarForce.Editor.DataTableTools
|
||||
{
|
||||
public sealed class DataTableGeneratorMenu
|
||||
{
|
||||
[MenuItem("Star Force/Generate DataTables")]
|
||||
private static void GenerateDataTables()
|
||||
{
|
||||
foreach (string dataTableName in ProcedurePreload.DataTableNames)
|
||||
{
|
||||
DataTableProcessor dataTableProcessor = DataTableGenerator.CreateDataTableProcessor(dataTableName);
|
||||
if (!DataTableGenerator.CheckRawData(dataTableProcessor, dataTableName))
|
||||
{
|
||||
Debug.LogError(Utility.Text.Format("Check raw data failure. DataTableName='{0}'", dataTableName));
|
||||
break;
|
||||
}
|
||||
|
||||
DataTableGenerator.GenerateDataFile(dataTableProcessor, dataTableName);
|
||||
DataTableGenerator.GenerateCodeFile(dataTableProcessor, dataTableName);
|
||||
}
|
||||
|
||||
AssetDatabase.Refresh();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7ddc8f13b2516c643a67d92a319dbf72
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
-53
@@ -1,53 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Game Framework
|
||||
// Copyright © 2013-2021 Jiang Yin. All rights reserved.
|
||||
// Homepage: https://gameframework.cn/
|
||||
// Feedback: mailto:ellan@gameframework.cn
|
||||
//------------------------------------------------------------
|
||||
|
||||
using System.IO;
|
||||
|
||||
namespace StarForce.Editor.DataTableTools
|
||||
{
|
||||
public sealed partial class DataTableProcessor
|
||||
{
|
||||
private sealed class BooleanProcessor : GenericDataProcessor<bool>
|
||||
{
|
||||
public override bool IsSystem
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public override string LanguageKeyword
|
||||
{
|
||||
get
|
||||
{
|
||||
return "bool";
|
||||
}
|
||||
}
|
||||
|
||||
public override string[] GetTypeStrings()
|
||||
{
|
||||
return new string[]
|
||||
{
|
||||
"bool",
|
||||
"boolean",
|
||||
"system.boolean"
|
||||
};
|
||||
}
|
||||
|
||||
public override bool Parse(string value)
|
||||
{
|
||||
return bool.Parse(value);
|
||||
}
|
||||
|
||||
public override void WriteToStream(DataTableProcessor dataTableProcessor, BinaryWriter binaryWriter, string value)
|
||||
{
|
||||
binaryWriter.Write(Parse(value));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,52 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Game Framework
|
||||
// Copyright © 2013-2021 Jiang Yin. All rights reserved.
|
||||
// Homepage: https://gameframework.cn/
|
||||
// Feedback: mailto:ellan@gameframework.cn
|
||||
//------------------------------------------------------------
|
||||
|
||||
using System.IO;
|
||||
|
||||
namespace StarForce.Editor.DataTableTools
|
||||
{
|
||||
public sealed partial class DataTableProcessor
|
||||
{
|
||||
private sealed class ByteProcessor : GenericDataProcessor<byte>
|
||||
{
|
||||
public override bool IsSystem
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public override string LanguageKeyword
|
||||
{
|
||||
get
|
||||
{
|
||||
return "byte";
|
||||
}
|
||||
}
|
||||
|
||||
public override string[] GetTypeStrings()
|
||||
{
|
||||
return new string[]
|
||||
{
|
||||
"byte",
|
||||
"system.byte"
|
||||
};
|
||||
}
|
||||
|
||||
public override byte Parse(string value)
|
||||
{
|
||||
return byte.Parse(value);
|
||||
}
|
||||
|
||||
public override void WriteToStream(DataTableProcessor dataTableProcessor, BinaryWriter binaryWriter, string value)
|
||||
{
|
||||
binaryWriter.Write(Parse(value));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
-11
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 11199a40fe5a3ef49a3c3d1ae670ac97
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,52 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Game Framework
|
||||
// Copyright © 2013-2021 Jiang Yin. All rights reserved.
|
||||
// Homepage: https://gameframework.cn/
|
||||
// Feedback: mailto:ellan@gameframework.cn
|
||||
//------------------------------------------------------------
|
||||
|
||||
using System.IO;
|
||||
|
||||
namespace StarForce.Editor.DataTableTools
|
||||
{
|
||||
public sealed partial class DataTableProcessor
|
||||
{
|
||||
private sealed class CharProcessor : GenericDataProcessor<char>
|
||||
{
|
||||
public override bool IsSystem
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public override string LanguageKeyword
|
||||
{
|
||||
get
|
||||
{
|
||||
return "char";
|
||||
}
|
||||
}
|
||||
|
||||
public override string[] GetTypeStrings()
|
||||
{
|
||||
return new string[]
|
||||
{
|
||||
"char",
|
||||
"system.char"
|
||||
};
|
||||
}
|
||||
|
||||
public override char Parse(string value)
|
||||
{
|
||||
return char.Parse(value);
|
||||
}
|
||||
|
||||
public override void WriteToStream(DataTableProcessor dataTableProcessor, BinaryWriter binaryWriter, string value)
|
||||
{
|
||||
binaryWriter.Write(Parse(value));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
-11
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 37f1181bc8fb29742b06ec3f42f652b4
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
-58
@@ -1,58 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Game Framework
|
||||
// Copyright © 2013-2021 Jiang Yin. All rights reserved.
|
||||
// Homepage: https://gameframework.cn/
|
||||
// Feedback: mailto:ellan@gameframework.cn
|
||||
//------------------------------------------------------------
|
||||
|
||||
using System.IO;
|
||||
using UnityEngine;
|
||||
|
||||
namespace StarForce.Editor.DataTableTools
|
||||
{
|
||||
public sealed partial class DataTableProcessor
|
||||
{
|
||||
private sealed class Color32Processor : GenericDataProcessor<Color32>
|
||||
{
|
||||
public override bool IsSystem
|
||||
{
|
||||
get
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public override string LanguageKeyword
|
||||
{
|
||||
get
|
||||
{
|
||||
return "Color32";
|
||||
}
|
||||
}
|
||||
|
||||
public override string[] GetTypeStrings()
|
||||
{
|
||||
return new string[]
|
||||
{
|
||||
"color32",
|
||||
"unityengine.color32"
|
||||
};
|
||||
}
|
||||
|
||||
public override Color32 Parse(string value)
|
||||
{
|
||||
string[] splitedValue = value.Split(',');
|
||||
return new Color32(byte.Parse(splitedValue[0]), byte.Parse(splitedValue[1]), byte.Parse(splitedValue[2]), byte.Parse(splitedValue[3]));
|
||||
}
|
||||
|
||||
public override void WriteToStream(DataTableProcessor dataTableProcessor, BinaryWriter binaryWriter, string value)
|
||||
{
|
||||
Color32 color32 = Parse(value);
|
||||
binaryWriter.Write(color32.r);
|
||||
binaryWriter.Write(color32.g);
|
||||
binaryWriter.Write(color32.b);
|
||||
binaryWriter.Write(color32.a);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
-11
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2a9b916d7c8e446439b74c27340be473
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
-58
@@ -1,58 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Game Framework
|
||||
// Copyright © 2013-2021 Jiang Yin. All rights reserved.
|
||||
// Homepage: https://gameframework.cn/
|
||||
// Feedback: mailto:ellan@gameframework.cn
|
||||
//------------------------------------------------------------
|
||||
|
||||
using System.IO;
|
||||
using UnityEngine;
|
||||
|
||||
namespace StarForce.Editor.DataTableTools
|
||||
{
|
||||
public sealed partial class DataTableProcessor
|
||||
{
|
||||
private sealed class ColorProcessor : GenericDataProcessor<Color>
|
||||
{
|
||||
public override bool IsSystem
|
||||
{
|
||||
get
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public override string LanguageKeyword
|
||||
{
|
||||
get
|
||||
{
|
||||
return "Color";
|
||||
}
|
||||
}
|
||||
|
||||
public override string[] GetTypeStrings()
|
||||
{
|
||||
return new string[]
|
||||
{
|
||||
"color",
|
||||
"unityengine.color"
|
||||
};
|
||||
}
|
||||
|
||||
public override Color Parse(string value)
|
||||
{
|
||||
string[] splitedValue = value.Split(',');
|
||||
return new Color(float.Parse(splitedValue[0]), float.Parse(splitedValue[1]), float.Parse(splitedValue[2]), float.Parse(splitedValue[3]));
|
||||
}
|
||||
|
||||
public override void WriteToStream(DataTableProcessor dataTableProcessor, BinaryWriter binaryWriter, string value)
|
||||
{
|
||||
Color color = Parse(value);
|
||||
binaryWriter.Write(color.r);
|
||||
binaryWriter.Write(color.g);
|
||||
binaryWriter.Write(color.b);
|
||||
binaryWriter.Write(color.a);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
-11
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f4583af9902c99a4fad14d732796117e
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
-71
@@ -1,71 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Game Framework
|
||||
// Copyright © 2013-2021 Jiang Yin. All rights reserved.
|
||||
// Homepage: https://gameframework.cn/
|
||||
// Feedback: mailto:ellan@gameframework.cn
|
||||
//------------------------------------------------------------
|
||||
|
||||
using System.IO;
|
||||
|
||||
namespace StarForce.Editor.DataTableTools
|
||||
{
|
||||
public sealed partial class DataTableProcessor
|
||||
{
|
||||
private sealed class CommentProcessor : DataProcessor
|
||||
{
|
||||
public override System.Type Type
|
||||
{
|
||||
get
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public override bool IsId
|
||||
{
|
||||
get
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public override bool IsComment
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public override bool IsSystem
|
||||
{
|
||||
get
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public override string LanguageKeyword
|
||||
{
|
||||
get
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public override string[] GetTypeStrings()
|
||||
{
|
||||
return new string[]
|
||||
{
|
||||
string.Empty,
|
||||
"#",
|
||||
"comment"
|
||||
};
|
||||
}
|
||||
|
||||
public override void WriteToStream(DataTableProcessor dataTableProcessor, BinaryWriter binaryWriter, string value)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
-11
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2ece238877c1e9344a50ce47697a93ef
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,46 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Game Framework
|
||||
// Copyright © 2013-2021 Jiang Yin. All rights reserved.
|
||||
// Homepage: https://gameframework.cn/
|
||||
// Feedback: mailto:ellan@gameframework.cn
|
||||
//------------------------------------------------------------
|
||||
|
||||
using System.IO;
|
||||
|
||||
namespace StarForce.Editor.DataTableTools
|
||||
{
|
||||
public sealed partial class DataTableProcessor
|
||||
{
|
||||
public abstract class DataProcessor
|
||||
{
|
||||
public abstract System.Type Type
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
public abstract bool IsId
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
public abstract bool IsComment
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
public abstract bool IsSystem
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
public abstract string LanguageKeyword
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
public abstract string[] GetTypeStrings();
|
||||
|
||||
public abstract void WriteToStream(DataTableProcessor dataTableProcessor, BinaryWriter binaryWriter, string value);
|
||||
}
|
||||
}
|
||||
}
|
||||
-11
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ccc7c992b5573ae4fafd0d5706bdad48
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
-61
@@ -1,61 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Game Framework
|
||||
// Copyright © 2013-2021 Jiang Yin. All rights reserved.
|
||||
// Homepage: https://gameframework.cn/
|
||||
// Feedback: mailto:ellan@gameframework.cn
|
||||
//------------------------------------------------------------
|
||||
|
||||
using GameFramework;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Reflection;
|
||||
|
||||
namespace StarForce.Editor.DataTableTools
|
||||
{
|
||||
public sealed partial class DataTableProcessor
|
||||
{
|
||||
private static class DataProcessorUtility
|
||||
{
|
||||
private static readonly IDictionary<string, DataProcessor> s_DataProcessors = new SortedDictionary<string, DataProcessor>(StringComparer.Ordinal);
|
||||
|
||||
static DataProcessorUtility()
|
||||
{
|
||||
System.Type dataProcessorBaseType = typeof(DataProcessor);
|
||||
Assembly assembly = Assembly.GetExecutingAssembly();
|
||||
System.Type[] types = assembly.GetTypes();
|
||||
for (int i = 0; i < types.Length; i++)
|
||||
{
|
||||
if (!types[i].IsClass || types[i].IsAbstract)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (dataProcessorBaseType.IsAssignableFrom(types[i]))
|
||||
{
|
||||
DataProcessor dataProcessor = (DataProcessor)Activator.CreateInstance(types[i]);
|
||||
foreach (string typeString in dataProcessor.GetTypeStrings())
|
||||
{
|
||||
s_DataProcessors.Add(typeString.ToLowerInvariant(), dataProcessor);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static DataProcessor GetDataProcessor(string type)
|
||||
{
|
||||
if (type == null)
|
||||
{
|
||||
type = string.Empty;
|
||||
}
|
||||
|
||||
DataProcessor dataProcessor = null;
|
||||
if (s_DataProcessors.TryGetValue(type.ToLowerInvariant(), out dataProcessor))
|
||||
{
|
||||
return dataProcessor;
|
||||
}
|
||||
|
||||
throw new GameFrameworkException(Utility.Text.Format("Not supported data processor type '{0}'.", type));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
-11
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 83d25f17cbb262649959b7952811f8c8
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
-53
@@ -1,53 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Game Framework
|
||||
// Copyright © 2013-2021 Jiang Yin. All rights reserved.
|
||||
// Homepage: https://gameframework.cn/
|
||||
// Feedback: mailto:ellan@gameframework.cn
|
||||
//------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.IO;
|
||||
|
||||
namespace StarForce.Editor.DataTableTools
|
||||
{
|
||||
public sealed partial class DataTableProcessor
|
||||
{
|
||||
private sealed class DateTimeProcessor : GenericDataProcessor<DateTime>
|
||||
{
|
||||
public override bool IsSystem
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public override string LanguageKeyword
|
||||
{
|
||||
get
|
||||
{
|
||||
return "DateTime";
|
||||
}
|
||||
}
|
||||
|
||||
public override string[] GetTypeStrings()
|
||||
{
|
||||
return new string[]
|
||||
{
|
||||
"datetime",
|
||||
"system.datetime"
|
||||
};
|
||||
}
|
||||
|
||||
public override DateTime Parse(string value)
|
||||
{
|
||||
return DateTime.Parse(value);
|
||||
}
|
||||
|
||||
public override void WriteToStream(DataTableProcessor dataTableProcessor, BinaryWriter binaryWriter, string value)
|
||||
{
|
||||
binaryWriter.Write(Parse(value).Ticks);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
-11
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4223bbe977dd5244a8611c6aad7f693e
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
-52
@@ -1,52 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Game Framework
|
||||
// Copyright © 2013-2021 Jiang Yin. All rights reserved.
|
||||
// Homepage: https://gameframework.cn/
|
||||
// Feedback: mailto:ellan@gameframework.cn
|
||||
//------------------------------------------------------------
|
||||
|
||||
using System.IO;
|
||||
|
||||
namespace StarForce.Editor.DataTableTools
|
||||
{
|
||||
public sealed partial class DataTableProcessor
|
||||
{
|
||||
private sealed class DecimalProcessor : GenericDataProcessor<decimal>
|
||||
{
|
||||
public override bool IsSystem
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public override string LanguageKeyword
|
||||
{
|
||||
get
|
||||
{
|
||||
return "decimal";
|
||||
}
|
||||
}
|
||||
|
||||
public override string[] GetTypeStrings()
|
||||
{
|
||||
return new string[]
|
||||
{
|
||||
"decimal",
|
||||
"system.decimal"
|
||||
};
|
||||
}
|
||||
|
||||
public override decimal Parse(string value)
|
||||
{
|
||||
return decimal.Parse(value);
|
||||
}
|
||||
|
||||
public override void WriteToStream(DataTableProcessor dataTableProcessor, BinaryWriter binaryWriter, string value)
|
||||
{
|
||||
binaryWriter.Write(Parse(value));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
-11
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ad6d6ba18487f7643830e156d300ee75
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
-52
@@ -1,52 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Game Framework
|
||||
// Copyright © 2013-2021 Jiang Yin. All rights reserved.
|
||||
// Homepage: https://gameframework.cn/
|
||||
// Feedback: mailto:ellan@gameframework.cn
|
||||
//------------------------------------------------------------
|
||||
|
||||
using System.IO;
|
||||
|
||||
namespace StarForce.Editor.DataTableTools
|
||||
{
|
||||
public sealed partial class DataTableProcessor
|
||||
{
|
||||
private sealed class DoubleProcessor : GenericDataProcessor<double>
|
||||
{
|
||||
public override bool IsSystem
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public override string LanguageKeyword
|
||||
{
|
||||
get
|
||||
{
|
||||
return "double";
|
||||
}
|
||||
}
|
||||
|
||||
public override string[] GetTypeStrings()
|
||||
{
|
||||
return new string[]
|
||||
{
|
||||
"double",
|
||||
"system.double"
|
||||
};
|
||||
}
|
||||
|
||||
public override double Parse(string value)
|
||||
{
|
||||
return double.Parse(value);
|
||||
}
|
||||
|
||||
public override void WriteToStream(DataTableProcessor dataTableProcessor, BinaryWriter binaryWriter, string value)
|
||||
{
|
||||
binaryWriter.Write(Parse(value));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
-11
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 44293fe0c3e108248bc98e8674238aed
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
-41
@@ -1,41 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Game Framework
|
||||
// Copyright © 2013-2021 Jiang Yin. All rights reserved.
|
||||
// Homepage: https://gameframework.cn/
|
||||
// Feedback: mailto:ellan@gameframework.cn
|
||||
//------------------------------------------------------------
|
||||
|
||||
namespace StarForce.Editor.DataTableTools
|
||||
{
|
||||
public sealed partial class DataTableProcessor
|
||||
{
|
||||
public abstract class GenericDataProcessor<T> : DataProcessor
|
||||
{
|
||||
public override System.Type Type
|
||||
{
|
||||
get
|
||||
{
|
||||
return typeof(T);
|
||||
}
|
||||
}
|
||||
|
||||
public override bool IsId
|
||||
{
|
||||
get
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public override bool IsComment
|
||||
{
|
||||
get
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public abstract T Parse(string value);
|
||||
}
|
||||
}
|
||||
}
|
||||
-11
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 65dd2cb98d350654fb3df2ddfc4fa4b8
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,70 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Game Framework
|
||||
// Copyright © 2013-2021 Jiang Yin. All rights reserved.
|
||||
// Homepage: https://gameframework.cn/
|
||||
// Feedback: mailto:ellan@gameframework.cn
|
||||
//------------------------------------------------------------
|
||||
|
||||
using System.IO;
|
||||
|
||||
namespace StarForce.Editor.DataTableTools
|
||||
{
|
||||
public sealed partial class DataTableProcessor
|
||||
{
|
||||
private sealed class IdProcessor : DataProcessor
|
||||
{
|
||||
public override System.Type Type
|
||||
{
|
||||
get
|
||||
{
|
||||
return typeof(int);
|
||||
}
|
||||
}
|
||||
|
||||
public override bool IsId
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public override bool IsComment
|
||||
{
|
||||
get
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public override bool IsSystem
|
||||
{
|
||||
get
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public override string LanguageKeyword
|
||||
{
|
||||
get
|
||||
{
|
||||
return "int";
|
||||
}
|
||||
}
|
||||
|
||||
public override string[] GetTypeStrings()
|
||||
{
|
||||
return new string[]
|
||||
{
|
||||
"id"
|
||||
};
|
||||
}
|
||||
|
||||
public override void WriteToStream(DataTableProcessor dataTableProcessor, BinaryWriter binaryWriter, string value)
|
||||
{
|
||||
binaryWriter.Write7BitEncodedInt32(int.Parse(value));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
-11
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f4171c2dabb4ee9468f7297ab334ddf1
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
-53
@@ -1,53 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Game Framework
|
||||
// Copyright © 2013-2021 Jiang Yin. All rights reserved.
|
||||
// Homepage: https://gameframework.cn/
|
||||
// Feedback: mailto:ellan@gameframework.cn
|
||||
//------------------------------------------------------------
|
||||
|
||||
using System.IO;
|
||||
|
||||
namespace StarForce.Editor.DataTableTools
|
||||
{
|
||||
public sealed partial class DataTableProcessor
|
||||
{
|
||||
private sealed class Int16Processor : GenericDataProcessor<short>
|
||||
{
|
||||
public override bool IsSystem
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public override string LanguageKeyword
|
||||
{
|
||||
get
|
||||
{
|
||||
return "short";
|
||||
}
|
||||
}
|
||||
|
||||
public override string[] GetTypeStrings()
|
||||
{
|
||||
return new string[]
|
||||
{
|
||||
"short",
|
||||
"int16",
|
||||
"system.int16"
|
||||
};
|
||||
}
|
||||
|
||||
public override short Parse(string value)
|
||||
{
|
||||
return short.Parse(value);
|
||||
}
|
||||
|
||||
public override void WriteToStream(DataTableProcessor dataTableProcessor, BinaryWriter binaryWriter, string value)
|
||||
{
|
||||
binaryWriter.Write(Parse(value));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
-11
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c1e3b1767ca81c343a31324956e5f032
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
-53
@@ -1,53 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Game Framework
|
||||
// Copyright © 2013-2021 Jiang Yin. All rights reserved.
|
||||
// Homepage: https://gameframework.cn/
|
||||
// Feedback: mailto:ellan@gameframework.cn
|
||||
//------------------------------------------------------------
|
||||
|
||||
using System.IO;
|
||||
|
||||
namespace StarForce.Editor.DataTableTools
|
||||
{
|
||||
public sealed partial class DataTableProcessor
|
||||
{
|
||||
private sealed class Int32Processor : GenericDataProcessor<int>
|
||||
{
|
||||
public override bool IsSystem
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public override string LanguageKeyword
|
||||
{
|
||||
get
|
||||
{
|
||||
return "int";
|
||||
}
|
||||
}
|
||||
|
||||
public override string[] GetTypeStrings()
|
||||
{
|
||||
return new string[]
|
||||
{
|
||||
"int",
|
||||
"int32",
|
||||
"system.int32"
|
||||
};
|
||||
}
|
||||
|
||||
public override int Parse(string value)
|
||||
{
|
||||
return int.Parse(value);
|
||||
}
|
||||
|
||||
public override void WriteToStream(DataTableProcessor dataTableProcessor, BinaryWriter binaryWriter, string value)
|
||||
{
|
||||
binaryWriter.Write7BitEncodedInt32(Parse(value));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
-11
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 239560231c239b54f95c183913ec9cbf
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
-53
@@ -1,53 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Game Framework
|
||||
// Copyright © 2013-2021 Jiang Yin. All rights reserved.
|
||||
// Homepage: https://gameframework.cn/
|
||||
// Feedback: mailto:ellan@gameframework.cn
|
||||
//------------------------------------------------------------
|
||||
|
||||
using System.IO;
|
||||
|
||||
namespace StarForce.Editor.DataTableTools
|
||||
{
|
||||
public sealed partial class DataTableProcessor
|
||||
{
|
||||
private sealed class Int64Processor : GenericDataProcessor<long>
|
||||
{
|
||||
public override bool IsSystem
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public override string LanguageKeyword
|
||||
{
|
||||
get
|
||||
{
|
||||
return "long";
|
||||
}
|
||||
}
|
||||
|
||||
public override string[] GetTypeStrings()
|
||||
{
|
||||
return new string[]
|
||||
{
|
||||
"long",
|
||||
"int64",
|
||||
"system.int64"
|
||||
};
|
||||
}
|
||||
|
||||
public override long Parse(string value)
|
||||
{
|
||||
return long.Parse(value);
|
||||
}
|
||||
|
||||
public override void WriteToStream(DataTableProcessor dataTableProcessor, BinaryWriter binaryWriter, string value)
|
||||
{
|
||||
binaryWriter.Write7BitEncodedInt64(Parse(value));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
-11
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d6dadc699adc6744e898979b1e85d6cf
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
-58
@@ -1,58 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Game Framework
|
||||
// Copyright © 2013-2021 Jiang Yin. All rights reserved.
|
||||
// Homepage: https://gameframework.cn/
|
||||
// Feedback: mailto:ellan@gameframework.cn
|
||||
//------------------------------------------------------------
|
||||
|
||||
using System.IO;
|
||||
using UnityEngine;
|
||||
|
||||
namespace StarForce.Editor.DataTableTools
|
||||
{
|
||||
public sealed partial class DataTableProcessor
|
||||
{
|
||||
private sealed class QuaternionProcessor : GenericDataProcessor<Quaternion>
|
||||
{
|
||||
public override bool IsSystem
|
||||
{
|
||||
get
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public override string LanguageKeyword
|
||||
{
|
||||
get
|
||||
{
|
||||
return "Quaternion";
|
||||
}
|
||||
}
|
||||
|
||||
public override string[] GetTypeStrings()
|
||||
{
|
||||
return new string[]
|
||||
{
|
||||
"quaternion",
|
||||
"unityengine.quaternion"
|
||||
};
|
||||
}
|
||||
|
||||
public override Quaternion Parse(string value)
|
||||
{
|
||||
string[] splitedValue = value.Split(',');
|
||||
return new Quaternion(float.Parse(splitedValue[0]), float.Parse(splitedValue[1]), float.Parse(splitedValue[2]), float.Parse(splitedValue[3]));
|
||||
}
|
||||
|
||||
public override void WriteToStream(DataTableProcessor dataTableProcessor, BinaryWriter binaryWriter, string value)
|
||||
{
|
||||
Quaternion quaternion = Parse(value);
|
||||
binaryWriter.Write(quaternion.x);
|
||||
binaryWriter.Write(quaternion.y);
|
||||
binaryWriter.Write(quaternion.z);
|
||||
binaryWriter.Write(quaternion.w);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
-11
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c288505f764c21149b9986dd3ebff1ac
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,58 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Game Framework
|
||||
// Copyright © 2013-2021 Jiang Yin. All rights reserved.
|
||||
// Homepage: https://gameframework.cn/
|
||||
// Feedback: mailto:ellan@gameframework.cn
|
||||
//------------------------------------------------------------
|
||||
|
||||
using System.IO;
|
||||
using UnityEngine;
|
||||
|
||||
namespace StarForce.Editor.DataTableTools
|
||||
{
|
||||
public sealed partial class DataTableProcessor
|
||||
{
|
||||
private sealed class RectProcessor : GenericDataProcessor<Rect>
|
||||
{
|
||||
public override bool IsSystem
|
||||
{
|
||||
get
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public override string LanguageKeyword
|
||||
{
|
||||
get
|
||||
{
|
||||
return "Rect";
|
||||
}
|
||||
}
|
||||
|
||||
public override string[] GetTypeStrings()
|
||||
{
|
||||
return new string[]
|
||||
{
|
||||
"rect",
|
||||
"unityengine.rect"
|
||||
};
|
||||
}
|
||||
|
||||
public override Rect Parse(string value)
|
||||
{
|
||||
string[] splitedValue = value.Split(',');
|
||||
return new Rect(float.Parse(splitedValue[0]), float.Parse(splitedValue[1]), float.Parse(splitedValue[2]), float.Parse(splitedValue[3]));
|
||||
}
|
||||
|
||||
public override void WriteToStream(DataTableProcessor dataTableProcessor, BinaryWriter binaryWriter, string value)
|
||||
{
|
||||
Rect rect = Parse(value);
|
||||
binaryWriter.Write(rect.x);
|
||||
binaryWriter.Write(rect.y);
|
||||
binaryWriter.Write(rect.width);
|
||||
binaryWriter.Write(rect.height);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
-11
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 235589b35d4744a4d8ef100da517e0ce
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
-52
@@ -1,52 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Game Framework
|
||||
// Copyright © 2013-2021 Jiang Yin. All rights reserved.
|
||||
// Homepage: https://gameframework.cn/
|
||||
// Feedback: mailto:ellan@gameframework.cn
|
||||
//------------------------------------------------------------
|
||||
|
||||
using System.IO;
|
||||
|
||||
namespace StarForce.Editor.DataTableTools
|
||||
{
|
||||
public sealed partial class DataTableProcessor
|
||||
{
|
||||
private sealed class SByteProcessor : GenericDataProcessor<sbyte>
|
||||
{
|
||||
public override bool IsSystem
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public override string LanguageKeyword
|
||||
{
|
||||
get
|
||||
{
|
||||
return "sbyte";
|
||||
}
|
||||
}
|
||||
|
||||
public override string[] GetTypeStrings()
|
||||
{
|
||||
return new string[]
|
||||
{
|
||||
"sbyte",
|
||||
"system.sbyte"
|
||||
};
|
||||
}
|
||||
|
||||
public override sbyte Parse(string value)
|
||||
{
|
||||
return sbyte.Parse(value);
|
||||
}
|
||||
|
||||
public override void WriteToStream(DataTableProcessor dataTableProcessor, BinaryWriter binaryWriter, string value)
|
||||
{
|
||||
binaryWriter.Write(Parse(value));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
-11
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 49f8d16f80f1ec046bfcae38be8c96a7
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
-53
@@ -1,53 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Game Framework
|
||||
// Copyright © 2013-2021 Jiang Yin. All rights reserved.
|
||||
// Homepage: https://gameframework.cn/
|
||||
// Feedback: mailto:ellan@gameframework.cn
|
||||
//------------------------------------------------------------
|
||||
|
||||
using System.IO;
|
||||
|
||||
namespace StarForce.Editor.DataTableTools
|
||||
{
|
||||
public sealed partial class DataTableProcessor
|
||||
{
|
||||
private sealed class SingleProcessor : GenericDataProcessor<float>
|
||||
{
|
||||
public override bool IsSystem
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public override string LanguageKeyword
|
||||
{
|
||||
get
|
||||
{
|
||||
return "float";
|
||||
}
|
||||
}
|
||||
|
||||
public override string[] GetTypeStrings()
|
||||
{
|
||||
return new string[]
|
||||
{
|
||||
"float",
|
||||
"single",
|
||||
"system.single"
|
||||
};
|
||||
}
|
||||
|
||||
public override float Parse(string value)
|
||||
{
|
||||
return float.Parse(value);
|
||||
}
|
||||
|
||||
public override void WriteToStream(DataTableProcessor dataTableProcessor, BinaryWriter binaryWriter, string value)
|
||||
{
|
||||
binaryWriter.Write(Parse(value));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
-11
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4c1502c70e1294543b14df45c7841a73
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
-52
@@ -1,52 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Game Framework
|
||||
// Copyright © 2013-2021 Jiang Yin. All rights reserved.
|
||||
// Homepage: https://gameframework.cn/
|
||||
// Feedback: mailto:ellan@gameframework.cn
|
||||
//------------------------------------------------------------
|
||||
|
||||
using System.IO;
|
||||
|
||||
namespace StarForce.Editor.DataTableTools
|
||||
{
|
||||
public sealed partial class DataTableProcessor
|
||||
{
|
||||
private sealed class StringProcessor : GenericDataProcessor<string>
|
||||
{
|
||||
public override bool IsSystem
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public override string LanguageKeyword
|
||||
{
|
||||
get
|
||||
{
|
||||
return "string";
|
||||
}
|
||||
}
|
||||
|
||||
public override string[] GetTypeStrings()
|
||||
{
|
||||
return new string[]
|
||||
{
|
||||
"string",
|
||||
"system.string"
|
||||
};
|
||||
}
|
||||
|
||||
public override string Parse(string value)
|
||||
{
|
||||
return value;
|
||||
}
|
||||
|
||||
public override void WriteToStream(DataTableProcessor dataTableProcessor, BinaryWriter binaryWriter, string value)
|
||||
{
|
||||
binaryWriter.Write(Parse(value));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
-11
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d502b9a1939b46246bd8e4c107b77744
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
-53
@@ -1,53 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Game Framework
|
||||
// Copyright © 2013-2021 Jiang Yin. All rights reserved.
|
||||
// Homepage: https://gameframework.cn/
|
||||
// Feedback: mailto:ellan@gameframework.cn
|
||||
//------------------------------------------------------------
|
||||
|
||||
using System.IO;
|
||||
|
||||
namespace StarForce.Editor.DataTableTools
|
||||
{
|
||||
public sealed partial class DataTableProcessor
|
||||
{
|
||||
private sealed class UInt16Processor : GenericDataProcessor<ushort>
|
||||
{
|
||||
public override bool IsSystem
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public override string LanguageKeyword
|
||||
{
|
||||
get
|
||||
{
|
||||
return "ushort";
|
||||
}
|
||||
}
|
||||
|
||||
public override string[] GetTypeStrings()
|
||||
{
|
||||
return new string[]
|
||||
{
|
||||
"ushort",
|
||||
"uint16",
|
||||
"system.uint16"
|
||||
};
|
||||
}
|
||||
|
||||
public override ushort Parse(string value)
|
||||
{
|
||||
return ushort.Parse(value);
|
||||
}
|
||||
|
||||
public override void WriteToStream(DataTableProcessor dataTableProcessor, BinaryWriter binaryWriter, string value)
|
||||
{
|
||||
binaryWriter.Write(Parse(value));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
-11
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 20f758534f1981b4593f97deb2a5ae25
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
-53
@@ -1,53 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Game Framework
|
||||
// Copyright © 2013-2021 Jiang Yin. All rights reserved.
|
||||
// Homepage: https://gameframework.cn/
|
||||
// Feedback: mailto:ellan@gameframework.cn
|
||||
//------------------------------------------------------------
|
||||
|
||||
using System.IO;
|
||||
|
||||
namespace StarForce.Editor.DataTableTools
|
||||
{
|
||||
public sealed partial class DataTableProcessor
|
||||
{
|
||||
private sealed class UInt32Processor : GenericDataProcessor<uint>
|
||||
{
|
||||
public override bool IsSystem
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public override string LanguageKeyword
|
||||
{
|
||||
get
|
||||
{
|
||||
return "uint";
|
||||
}
|
||||
}
|
||||
|
||||
public override string[] GetTypeStrings()
|
||||
{
|
||||
return new string[]
|
||||
{
|
||||
"uint",
|
||||
"uint32",
|
||||
"system.uint32"
|
||||
};
|
||||
}
|
||||
|
||||
public override uint Parse(string value)
|
||||
{
|
||||
return uint.Parse(value);
|
||||
}
|
||||
|
||||
public override void WriteToStream(DataTableProcessor dataTableProcessor, BinaryWriter binaryWriter, string value)
|
||||
{
|
||||
binaryWriter.Write7BitEncodedUInt32(Parse(value));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
-11
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: fd3c289549d93924ea928ea558436a57
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
-53
@@ -1,53 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Game Framework
|
||||
// Copyright © 2013-2021 Jiang Yin. All rights reserved.
|
||||
// Homepage: https://gameframework.cn/
|
||||
// Feedback: mailto:ellan@gameframework.cn
|
||||
//------------------------------------------------------------
|
||||
|
||||
using System.IO;
|
||||
|
||||
namespace StarForce.Editor.DataTableTools
|
||||
{
|
||||
public sealed partial class DataTableProcessor
|
||||
{
|
||||
private sealed class UInt64Processor : GenericDataProcessor<ulong>
|
||||
{
|
||||
public override bool IsSystem
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public override string LanguageKeyword
|
||||
{
|
||||
get
|
||||
{
|
||||
return "ulong";
|
||||
}
|
||||
}
|
||||
|
||||
public override string[] GetTypeStrings()
|
||||
{
|
||||
return new string[]
|
||||
{
|
||||
"ulong",
|
||||
"uint64",
|
||||
"system.uint64"
|
||||
};
|
||||
}
|
||||
|
||||
public override ulong Parse(string value)
|
||||
{
|
||||
return ulong.Parse(value);
|
||||
}
|
||||
|
||||
public override void WriteToStream(DataTableProcessor dataTableProcessor, BinaryWriter binaryWriter, string value)
|
||||
{
|
||||
binaryWriter.Write7BitEncodedUInt64(Parse(value));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
-11
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 23d841306167268488c7c5a8bb8cf685
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
-56
@@ -1,56 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Game Framework
|
||||
// Copyright © 2013-2021 Jiang Yin. All rights reserved.
|
||||
// Homepage: https://gameframework.cn/
|
||||
// Feedback: mailto:ellan@gameframework.cn
|
||||
//------------------------------------------------------------
|
||||
|
||||
using System.IO;
|
||||
using UnityEngine;
|
||||
|
||||
namespace StarForce.Editor.DataTableTools
|
||||
{
|
||||
public sealed partial class DataTableProcessor
|
||||
{
|
||||
private sealed class Vector2Processor : GenericDataProcessor<Vector2>
|
||||
{
|
||||
public override bool IsSystem
|
||||
{
|
||||
get
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public override string LanguageKeyword
|
||||
{
|
||||
get
|
||||
{
|
||||
return "Vector2";
|
||||
}
|
||||
}
|
||||
|
||||
public override string[] GetTypeStrings()
|
||||
{
|
||||
return new string[]
|
||||
{
|
||||
"vector2",
|
||||
"unityengine.vector2"
|
||||
};
|
||||
}
|
||||
|
||||
public override Vector2 Parse(string value)
|
||||
{
|
||||
string[] splitedValue = value.Split(',');
|
||||
return new Vector2(float.Parse(splitedValue[0]), float.Parse(splitedValue[1]));
|
||||
}
|
||||
|
||||
public override void WriteToStream(DataTableProcessor dataTableProcessor, BinaryWriter binaryWriter, string value)
|
||||
{
|
||||
Vector2 vector2 = Parse(value);
|
||||
binaryWriter.Write(vector2.x);
|
||||
binaryWriter.Write(vector2.y);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
-11
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 165df2a7d4a52984282f1c3bc87d5aaa
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
-57
@@ -1,57 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Game Framework
|
||||
// Copyright © 2013-2021 Jiang Yin. All rights reserved.
|
||||
// Homepage: https://gameframework.cn/
|
||||
// Feedback: mailto:ellan@gameframework.cn
|
||||
//------------------------------------------------------------
|
||||
|
||||
using System.IO;
|
||||
using UnityEngine;
|
||||
|
||||
namespace StarForce.Editor.DataTableTools
|
||||
{
|
||||
public sealed partial class DataTableProcessor
|
||||
{
|
||||
private sealed class Vector3Processor : GenericDataProcessor<Vector3>
|
||||
{
|
||||
public override bool IsSystem
|
||||
{
|
||||
get
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public override string LanguageKeyword
|
||||
{
|
||||
get
|
||||
{
|
||||
return "Vector3";
|
||||
}
|
||||
}
|
||||
|
||||
public override string[] GetTypeStrings()
|
||||
{
|
||||
return new string[]
|
||||
{
|
||||
"vector3",
|
||||
"unityengine.vector3"
|
||||
};
|
||||
}
|
||||
|
||||
public override Vector3 Parse(string value)
|
||||
{
|
||||
string[] splitedValue = value.Split(',');
|
||||
return new Vector3(float.Parse(splitedValue[0]), float.Parse(splitedValue[1]), float.Parse(splitedValue[2]));
|
||||
}
|
||||
|
||||
public override void WriteToStream(DataTableProcessor dataTableProcessor, BinaryWriter binaryWriter, string value)
|
||||
{
|
||||
Vector3 vector3 = Parse(value);
|
||||
binaryWriter.Write(vector3.x);
|
||||
binaryWriter.Write(vector3.y);
|
||||
binaryWriter.Write(vector3.z);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
-11
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d45ef71d28b25f047ab0f4d4acac8b42
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
-58
@@ -1,58 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Game Framework
|
||||
// Copyright © 2013-2021 Jiang Yin. All rights reserved.
|
||||
// Homepage: https://gameframework.cn/
|
||||
// Feedback: mailto:ellan@gameframework.cn
|
||||
//------------------------------------------------------------
|
||||
|
||||
using System.IO;
|
||||
using UnityEngine;
|
||||
|
||||
namespace StarForce.Editor.DataTableTools
|
||||
{
|
||||
public sealed partial class DataTableProcessor
|
||||
{
|
||||
private sealed class Vector4Processor : GenericDataProcessor<Vector4>
|
||||
{
|
||||
public override bool IsSystem
|
||||
{
|
||||
get
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public override string LanguageKeyword
|
||||
{
|
||||
get
|
||||
{
|
||||
return "Vector4";
|
||||
}
|
||||
}
|
||||
|
||||
public override string[] GetTypeStrings()
|
||||
{
|
||||
return new string[]
|
||||
{
|
||||
"vector4",
|
||||
"unityengine.vector4"
|
||||
};
|
||||
}
|
||||
|
||||
public override Vector4 Parse(string value)
|
||||
{
|
||||
string[] splitedValue = value.Split(',');
|
||||
return new Vector4(float.Parse(splitedValue[0]), float.Parse(splitedValue[1]), float.Parse(splitedValue[2]), float.Parse(splitedValue[3]));
|
||||
}
|
||||
|
||||
public override void WriteToStream(DataTableProcessor dataTableProcessor, BinaryWriter binaryWriter, string value)
|
||||
{
|
||||
Vector4 vector4 = Parse(value);
|
||||
binaryWriter.Write(vector4.x);
|
||||
binaryWriter.Write(vector4.y);
|
||||
binaryWriter.Write(vector4.z);
|
||||
binaryWriter.Write(vector4.w);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
-11
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 40409bde40a898b48af91126d343c4ae
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,498 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Game Framework
|
||||
// Copyright © 2013-2021 Jiang Yin. All rights reserved.
|
||||
// Homepage: https://gameframework.cn/
|
||||
// Feedback: mailto:ellan@gameframework.cn
|
||||
//------------------------------------------------------------
|
||||
|
||||
using GameFramework;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using UnityEngine;
|
||||
|
||||
namespace StarForce.Editor.DataTableTools
|
||||
{
|
||||
public sealed partial class DataTableProcessor
|
||||
{
|
||||
private const string CommentLineSeparator = "#";
|
||||
private static readonly char[] DataSplitSeparators = new char[] { '\t' };
|
||||
private static readonly char[] DataTrimSeparators = new char[] { '\"' };
|
||||
|
||||
private readonly string[] m_NameRow;
|
||||
private readonly string[] m_TypeRow;
|
||||
private readonly string[] m_DefaultValueRow;
|
||||
private readonly string[] m_CommentRow;
|
||||
private readonly int m_ContentStartRow;
|
||||
private readonly int m_IdColumn;
|
||||
|
||||
private readonly DataProcessor[] m_DataProcessor;
|
||||
private readonly string[][] m_RawValues;
|
||||
private readonly string[] m_Strings;
|
||||
|
||||
private string m_CodeTemplate;
|
||||
private DataTableCodeGenerator m_CodeGenerator;
|
||||
|
||||
public DataTableProcessor(string dataTableFileName, Encoding encoding, int nameRow, int typeRow, int? defaultValueRow, int? commentRow, int contentStartRow, int idColumn)
|
||||
{
|
||||
if (string.IsNullOrEmpty(dataTableFileName))
|
||||
{
|
||||
throw new GameFrameworkException("Data table file name is invalid.");
|
||||
}
|
||||
|
||||
if (!dataTableFileName.EndsWith(".txt", StringComparison.Ordinal))
|
||||
{
|
||||
throw new GameFrameworkException(Utility.Text.Format("Data table file '{0}' is not a txt.", dataTableFileName));
|
||||
}
|
||||
|
||||
if (!File.Exists(dataTableFileName))
|
||||
{
|
||||
throw new GameFrameworkException(Utility.Text.Format("Data table file '{0}' is not exist.", dataTableFileName));
|
||||
}
|
||||
|
||||
string[] lines = File.ReadAllLines(dataTableFileName, encoding);
|
||||
int rawRowCount = lines.Length;
|
||||
|
||||
int rawColumnCount = 0;
|
||||
List<string[]> rawValues = new List<string[]>();
|
||||
for (int i = 0; i < lines.Length; i++)
|
||||
{
|
||||
string[] rawValue = lines[i].Split(DataSplitSeparators);
|
||||
for (int j = 0; j < rawValue.Length; j++)
|
||||
{
|
||||
rawValue[j] = rawValue[j].Trim(DataTrimSeparators);
|
||||
}
|
||||
|
||||
if (i == 0)
|
||||
{
|
||||
rawColumnCount = rawValue.Length;
|
||||
}
|
||||
else if (rawValue.Length != rawColumnCount)
|
||||
{
|
||||
throw new GameFrameworkException(Utility.Text.Format("Data table file '{0}', raw Column is '{2}', but line '{1}' column is '{3}'.", dataTableFileName, i, rawColumnCount, rawValue.Length));
|
||||
}
|
||||
|
||||
rawValues.Add(rawValue);
|
||||
}
|
||||
|
||||
m_RawValues = rawValues.ToArray();
|
||||
|
||||
if (nameRow < 0)
|
||||
{
|
||||
throw new GameFrameworkException(Utility.Text.Format("Name row '{0}' is invalid.", nameRow));
|
||||
}
|
||||
|
||||
if (typeRow < 0)
|
||||
{
|
||||
throw new GameFrameworkException(Utility.Text.Format("Type row '{0}' is invalid.", typeRow));
|
||||
}
|
||||
|
||||
if (contentStartRow < 0)
|
||||
{
|
||||
throw new GameFrameworkException(Utility.Text.Format("Content start row '{0}' is invalid.", contentStartRow));
|
||||
}
|
||||
|
||||
if (idColumn < 0)
|
||||
{
|
||||
throw new GameFrameworkException(Utility.Text.Format("Id column '{0}' is invalid.", idColumn));
|
||||
}
|
||||
|
||||
if (nameRow >= rawRowCount)
|
||||
{
|
||||
throw new GameFrameworkException(Utility.Text.Format("Name row '{0}' >= raw row count '{1}' is not allow.", nameRow, rawRowCount));
|
||||
}
|
||||
|
||||
if (typeRow >= rawRowCount)
|
||||
{
|
||||
throw new GameFrameworkException(Utility.Text.Format("Type row '{0}' >= raw row count '{1}' is not allow.", typeRow, rawRowCount));
|
||||
}
|
||||
|
||||
if (defaultValueRow.HasValue && defaultValueRow.Value >= rawRowCount)
|
||||
{
|
||||
throw new GameFrameworkException(Utility.Text.Format("Default value row '{0}' >= raw row count '{1}' is not allow.", defaultValueRow.Value, rawRowCount));
|
||||
}
|
||||
|
||||
if (commentRow.HasValue && commentRow.Value >= rawRowCount)
|
||||
{
|
||||
throw new GameFrameworkException(Utility.Text.Format("Comment row '{0}' >= raw row count '{1}' is not allow.", commentRow.Value, rawRowCount));
|
||||
}
|
||||
|
||||
if (contentStartRow > rawRowCount)
|
||||
{
|
||||
throw new GameFrameworkException(Utility.Text.Format("Content start row '{0}' > raw row count '{1}' is not allow.", contentStartRow, rawRowCount));
|
||||
}
|
||||
|
||||
if (idColumn >= rawColumnCount)
|
||||
{
|
||||
throw new GameFrameworkException(Utility.Text.Format("Id column '{0}' >= raw column count '{1}' is not allow.", idColumn, rawColumnCount));
|
||||
}
|
||||
|
||||
m_NameRow = m_RawValues[nameRow];
|
||||
m_TypeRow = m_RawValues[typeRow];
|
||||
m_DefaultValueRow = defaultValueRow.HasValue ? m_RawValues[defaultValueRow.Value] : null;
|
||||
m_CommentRow = commentRow.HasValue ? m_RawValues[commentRow.Value] : null;
|
||||
m_ContentStartRow = contentStartRow;
|
||||
m_IdColumn = idColumn;
|
||||
|
||||
m_DataProcessor = new DataProcessor[rawColumnCount];
|
||||
for (int i = 0; i < rawColumnCount; i++)
|
||||
{
|
||||
if (i == IdColumn)
|
||||
{
|
||||
m_DataProcessor[i] = DataProcessorUtility.GetDataProcessor("id");
|
||||
}
|
||||
else
|
||||
{
|
||||
m_DataProcessor[i] = DataProcessorUtility.GetDataProcessor(m_TypeRow[i]);
|
||||
}
|
||||
}
|
||||
|
||||
Dictionary<string, int> strings = new Dictionary<string, int>(StringComparer.Ordinal);
|
||||
for (int i = contentStartRow; i < rawRowCount; i++)
|
||||
{
|
||||
if (IsCommentRow(i))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
for (int j = 0; j < rawColumnCount; j++)
|
||||
{
|
||||
if (m_DataProcessor[j].LanguageKeyword != "string")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
string str = m_RawValues[i][j];
|
||||
if (strings.ContainsKey(str))
|
||||
{
|
||||
strings[str]++;
|
||||
}
|
||||
else
|
||||
{
|
||||
strings[str] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
m_Strings = strings.OrderBy(value => value.Key).OrderByDescending(value => value.Value).Select(value => value.Key).ToArray();
|
||||
|
||||
m_CodeTemplate = null;
|
||||
m_CodeGenerator = null;
|
||||
}
|
||||
|
||||
public int RawRowCount
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_RawValues.Length;
|
||||
}
|
||||
}
|
||||
|
||||
public int RawColumnCount
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_RawValues.Length > 0 ? m_RawValues[0].Length : 0;
|
||||
}
|
||||
}
|
||||
|
||||
public int StringCount
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_Strings.Length;
|
||||
}
|
||||
}
|
||||
|
||||
public int ContentStartRow
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_ContentStartRow;
|
||||
}
|
||||
}
|
||||
|
||||
public int IdColumn
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_IdColumn;
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsIdColumn(int rawColumn)
|
||||
{
|
||||
if (rawColumn < 0 || rawColumn >= RawColumnCount)
|
||||
{
|
||||
throw new GameFrameworkException(Utility.Text.Format("Raw column '{0}' is out of range.", rawColumn));
|
||||
}
|
||||
|
||||
return m_DataProcessor[rawColumn].IsId;
|
||||
}
|
||||
|
||||
public bool IsCommentRow(int rawRow)
|
||||
{
|
||||
if (rawRow < 0 || rawRow >= RawRowCount)
|
||||
{
|
||||
throw new GameFrameworkException(Utility.Text.Format("Raw row '{0}' is out of range.", rawRow));
|
||||
}
|
||||
|
||||
return GetValue(rawRow, 0).StartsWith(CommentLineSeparator, StringComparison.Ordinal);
|
||||
}
|
||||
|
||||
public bool IsCommentColumn(int rawColumn)
|
||||
{
|
||||
if (rawColumn < 0 || rawColumn >= RawColumnCount)
|
||||
{
|
||||
throw new GameFrameworkException(Utility.Text.Format("Raw column '{0}' is out of range.", rawColumn));
|
||||
}
|
||||
|
||||
return string.IsNullOrEmpty(GetName(rawColumn)) || m_DataProcessor[rawColumn].IsComment;
|
||||
}
|
||||
|
||||
public string GetName(int rawColumn)
|
||||
{
|
||||
if (rawColumn < 0 || rawColumn >= RawColumnCount)
|
||||
{
|
||||
throw new GameFrameworkException(Utility.Text.Format("Raw column '{0}' is out of range.", rawColumn));
|
||||
}
|
||||
|
||||
if (IsIdColumn(rawColumn))
|
||||
{
|
||||
return "Id";
|
||||
}
|
||||
|
||||
return m_NameRow[rawColumn];
|
||||
}
|
||||
|
||||
public bool IsSystem(int rawColumn)
|
||||
{
|
||||
if (rawColumn < 0 || rawColumn >= RawColumnCount)
|
||||
{
|
||||
throw new GameFrameworkException(Utility.Text.Format("Raw column '{0}' is out of range.", rawColumn));
|
||||
}
|
||||
|
||||
return m_DataProcessor[rawColumn].IsSystem;
|
||||
}
|
||||
|
||||
public System.Type GetType(int rawColumn)
|
||||
{
|
||||
if (rawColumn < 0 || rawColumn >= RawColumnCount)
|
||||
{
|
||||
throw new GameFrameworkException(Utility.Text.Format("Raw column '{0}' is out of range.", rawColumn));
|
||||
}
|
||||
|
||||
return m_DataProcessor[rawColumn].Type;
|
||||
}
|
||||
|
||||
public string GetLanguageKeyword(int rawColumn)
|
||||
{
|
||||
if (rawColumn < 0 || rawColumn >= RawColumnCount)
|
||||
{
|
||||
throw new GameFrameworkException(Utility.Text.Format("Raw column '{0}' is out of range.", rawColumn));
|
||||
}
|
||||
|
||||
return m_DataProcessor[rawColumn].LanguageKeyword;
|
||||
}
|
||||
|
||||
public string GetDefaultValue(int rawColumn)
|
||||
{
|
||||
if (rawColumn < 0 || rawColumn >= RawColumnCount)
|
||||
{
|
||||
throw new GameFrameworkException(Utility.Text.Format("Raw column '{0}' is out of range.", rawColumn));
|
||||
}
|
||||
|
||||
return m_DefaultValueRow != null ? m_DefaultValueRow[rawColumn] : null;
|
||||
}
|
||||
|
||||
public string GetComment(int rawColumn)
|
||||
{
|
||||
if (rawColumn < 0 || rawColumn >= RawColumnCount)
|
||||
{
|
||||
throw new GameFrameworkException(Utility.Text.Format("Raw column '{0}' is out of range.", rawColumn));
|
||||
}
|
||||
|
||||
return m_CommentRow != null ? m_CommentRow[rawColumn] : null;
|
||||
}
|
||||
|
||||
public string GetValue(int rawRow, int rawColumn)
|
||||
{
|
||||
if (rawRow < 0 || rawRow >= RawRowCount)
|
||||
{
|
||||
throw new GameFrameworkException(Utility.Text.Format("Raw row '{0}' is out of range.", rawRow));
|
||||
}
|
||||
|
||||
if (rawColumn < 0 || rawColumn >= RawColumnCount)
|
||||
{
|
||||
throw new GameFrameworkException(Utility.Text.Format("Raw column '{0}' is out of range.", rawColumn));
|
||||
}
|
||||
|
||||
return m_RawValues[rawRow][rawColumn];
|
||||
}
|
||||
|
||||
public string GetString(int index)
|
||||
{
|
||||
if (index < 0 || index >= StringCount)
|
||||
{
|
||||
throw new GameFrameworkException(Utility.Text.Format("String index '{0}' is out of range.", index));
|
||||
}
|
||||
|
||||
return m_Strings[index];
|
||||
}
|
||||
|
||||
public int GetStringIndex(string str)
|
||||
{
|
||||
for (int i = 0; i < StringCount; i++)
|
||||
{
|
||||
if (m_Strings[i] == str)
|
||||
{
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
public bool GenerateDataFile(string outputFileName)
|
||||
{
|
||||
if (string.IsNullOrEmpty(outputFileName))
|
||||
{
|
||||
throw new GameFrameworkException("Output file name is invalid.");
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
using (FileStream fileStream = new FileStream(outputFileName, FileMode.Create, FileAccess.Write))
|
||||
{
|
||||
using (BinaryWriter binaryWriter = new BinaryWriter(fileStream, Encoding.UTF8))
|
||||
{
|
||||
for (int rawRow = ContentStartRow; rawRow < RawRowCount; rawRow++)
|
||||
{
|
||||
if (IsCommentRow(rawRow))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
byte[] bytes = GetRowBytes(outputFileName, rawRow);
|
||||
binaryWriter.Write7BitEncodedInt32(bytes.Length);
|
||||
binaryWriter.Write(bytes);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Debug.Log(Utility.Text.Format("Parse data table '{0}' success.", outputFileName));
|
||||
return true;
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
Debug.LogError(Utility.Text.Format("Parse data table '{0}' failure, exception is '{1}'.", outputFileName, exception));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public bool SetCodeTemplate(string codeTemplateFileName, Encoding encoding)
|
||||
{
|
||||
try
|
||||
{
|
||||
m_CodeTemplate = File.ReadAllText(codeTemplateFileName, encoding);
|
||||
Debug.Log(Utility.Text.Format("Set code template '{0}' success.", codeTemplateFileName));
|
||||
return true;
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
Debug.LogError(Utility.Text.Format("Set code template '{0}' failure, exception is '{1}'.", codeTemplateFileName, exception));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public void SetCodeGenerator(DataTableCodeGenerator codeGenerator)
|
||||
{
|
||||
m_CodeGenerator = codeGenerator;
|
||||
}
|
||||
|
||||
public bool GenerateCodeFile(string outputFileName, Encoding encoding, object userData = null)
|
||||
{
|
||||
if (string.IsNullOrEmpty(m_CodeTemplate))
|
||||
{
|
||||
throw new GameFrameworkException("You must set code template first.");
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(outputFileName))
|
||||
{
|
||||
throw new GameFrameworkException("Output file name is invalid.");
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder(m_CodeTemplate);
|
||||
if (m_CodeGenerator != null)
|
||||
{
|
||||
m_CodeGenerator(this, stringBuilder, userData);
|
||||
}
|
||||
|
||||
using (FileStream fileStream = new FileStream(outputFileName, FileMode.Create, FileAccess.Write))
|
||||
{
|
||||
using (StreamWriter stream = new StreamWriter(fileStream, encoding))
|
||||
{
|
||||
stream.Write(stringBuilder.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
Debug.Log(Utility.Text.Format("Generate code file '{0}' success.", outputFileName));
|
||||
return true;
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
Debug.LogError(Utility.Text.Format("Generate code file '{0}' failure, exception is '{1}'.", outputFileName, exception));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private byte[] GetRowBytes(string outputFileName, int rawRow)
|
||||
{
|
||||
using (MemoryStream memoryStream = new MemoryStream())
|
||||
{
|
||||
using (BinaryWriter binaryWriter = new BinaryWriter(memoryStream, Encoding.UTF8))
|
||||
{
|
||||
for (int rawColumn = 0; rawColumn < RawColumnCount; rawColumn++)
|
||||
{
|
||||
if (IsCommentColumn(rawColumn))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
m_DataProcessor[rawColumn].WriteToStream(this, binaryWriter, GetValue(rawRow, rawColumn));
|
||||
}
|
||||
catch
|
||||
{
|
||||
if (m_DataProcessor[rawColumn].IsId || string.IsNullOrEmpty(GetDefaultValue(rawColumn)))
|
||||
{
|
||||
Debug.LogError(Utility.Text.Format("Parse raw value failure. OutputFileName='{0}' RawRow='{1}' RowColumn='{2}' Name='{3}' Type='{4}' RawValue='{5}'", outputFileName, rawRow, rawColumn, GetName(rawColumn), GetLanguageKeyword(rawColumn), GetValue(rawRow, rawColumn)));
|
||||
return null;
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogWarning(Utility.Text.Format("Parse raw value failure, will try default value. OutputFileName='{0}' RawRow='{1}' RowColumn='{2}' Name='{3}' Type='{4}' RawValue='{5}'", outputFileName, rawRow, rawColumn, GetName(rawColumn), GetLanguageKeyword(rawColumn), GetValue(rawRow, rawColumn)));
|
||||
try
|
||||
{
|
||||
m_DataProcessor[rawColumn].WriteToStream(this, binaryWriter, GetDefaultValue(rawColumn));
|
||||
}
|
||||
catch
|
||||
{
|
||||
Debug.LogError(Utility.Text.Format("Parse default value failure. OutputFileName='{0}' RawRow='{1}' RowColumn='{2}' Name='{3}' Type='{4}' RawValue='{5}'", outputFileName, rawRow, rawColumn, GetName(rawColumn), GetLanguageKeyword(rawColumn), GetComment(rawColumn)));
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return memoryStream.ToArray();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 81b27209918096743b988ea62b39d109
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,278 @@
|
||||
#if UNITY_EDITOR
|
||||
using System;
|
||||
using System.Linq;
|
||||
using CustomComponent;
|
||||
using DataTable;
|
||||
using Definition.DataStruct;
|
||||
using Entity;
|
||||
using Game.Utility;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace StarForce.Editor
|
||||
{
|
||||
public class PlayerBuffConsoleWindow : EditorWindow
|
||||
{
|
||||
private const string WindowTitle = "Player Buff Console";
|
||||
|
||||
private string _searchText = string.Empty;
|
||||
private int _selectedIndex;
|
||||
private int _addCount = 1;
|
||||
private Vector2 _scroll;
|
||||
private DRProp[] _allProps = Array.Empty<DRProp>();
|
||||
private DRProp[] _filteredProps = Array.Empty<DRProp>();
|
||||
private string[] _displayNames = Array.Empty<string>();
|
||||
|
||||
private float _spawnRateScaleInput = 1f;
|
||||
private float _extendDurationSeconds = 30f;
|
||||
|
||||
[MenuItem("StarForce/Debug/Player Buff Console")]
|
||||
private static void Open()
|
||||
{
|
||||
GetWindow<PlayerBuffConsoleWindow>(WindowTitle);
|
||||
}
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
RefreshPropList();
|
||||
EditorApplication.playModeStateChanged += OnPlayModeStateChanged;
|
||||
}
|
||||
|
||||
private void OnDisable()
|
||||
{
|
||||
EditorApplication.playModeStateChanged -= OnPlayModeStateChanged;
|
||||
}
|
||||
|
||||
private void OnGUI()
|
||||
{
|
||||
EditorGUILayout.LabelField("Player Buff Console (Editor Only)", EditorStyles.boldLabel);
|
||||
EditorGUILayout.Space(4f);
|
||||
|
||||
using (new EditorGUI.DisabledScope(!EditorApplication.isPlaying))
|
||||
{
|
||||
DrawBuffSection();
|
||||
|
||||
EditorGUILayout.Space(8f);
|
||||
EditorGUILayout.LabelField(string.Empty, GUI.skin.horizontalSlider);
|
||||
EditorGUILayout.Space(8f);
|
||||
|
||||
DrawBattleControlSection();
|
||||
}
|
||||
|
||||
if (!EditorApplication.isPlaying)
|
||||
{
|
||||
EditorGUILayout.HelpBox("Enter Play mode to use debug controls.", MessageType.Info);
|
||||
}
|
||||
}
|
||||
|
||||
private void DrawBuffSection()
|
||||
{
|
||||
EditorGUILayout.LabelField("Buff Debug", EditorStyles.boldLabel);
|
||||
DrawToolbar();
|
||||
DrawBuffSelector();
|
||||
DrawSelectedBuffPreview();
|
||||
DrawBuffActions();
|
||||
}
|
||||
|
||||
private void DrawBattleControlSection()
|
||||
{
|
||||
EditorGUILayout.LabelField("Battle Debug", EditorStyles.boldLabel);
|
||||
|
||||
EnemyManagerComponent enemyManager = GameEntry.EnemyManager;
|
||||
Player player = FindPlayer();
|
||||
if (enemyManager == null)
|
||||
{
|
||||
EditorGUILayout.HelpBox("EnemyManager is unavailable.", MessageType.Warning);
|
||||
return;
|
||||
}
|
||||
|
||||
EditorGUILayout.LabelField("Current Spawn Rate Scale", enemyManager.SpawnRateScale.ToString("F2"));
|
||||
EditorGUILayout.LabelField("Battle Time",
|
||||
$"{enemyManager.ElapsedBattleTime:F1}s / {enemyManager.BattleDuration:F1}s");
|
||||
|
||||
_spawnRateScaleInput = Mathf.Clamp(EditorGUILayout.FloatField("Spawn Rate Scale", _spawnRateScaleInput), 0.1f,
|
||||
50f);
|
||||
_extendDurationSeconds = Mathf.Clamp(EditorGUILayout.FloatField("Add Duration (Seconds)", _extendDurationSeconds),
|
||||
1f, 3600f);
|
||||
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
if (GUILayout.Button("Apply Spawn Rate"))
|
||||
{
|
||||
enemyManager.SetSpawnRateScale(_spawnRateScaleInput);
|
||||
ShowNotification(new GUIContent($"Spawn rate scale = {enemyManager.SpawnRateScale:F2}"));
|
||||
}
|
||||
|
||||
if (GUILayout.Button("x0.5"))
|
||||
{
|
||||
_spawnRateScaleInput = Mathf.Max(0.1f, enemyManager.SpawnRateScale * 0.5f);
|
||||
enemyManager.SetSpawnRateScale(_spawnRateScaleInput);
|
||||
}
|
||||
|
||||
if (GUILayout.Button("x2"))
|
||||
{
|
||||
_spawnRateScaleInput = enemyManager.SpawnRateScale * 2f;
|
||||
enemyManager.SetSpawnRateScale(_spawnRateScaleInput);
|
||||
}
|
||||
EditorGUILayout.EndHorizontal();
|
||||
|
||||
if (GUILayout.Button("Add Battle Duration"))
|
||||
{
|
||||
enemyManager.AddBattleDuration(_extendDurationSeconds);
|
||||
ShowNotification(new GUIContent($"+{_extendDurationSeconds:F0}s Battle Duration"));
|
||||
}
|
||||
|
||||
EditorGUILayout.Space(6f);
|
||||
EditorGUILayout.LabelField("Player Weapon", player == null ? "Player not found" : (player.WeaponEnabled ? "Enabled" : "Disabled"));
|
||||
using (new EditorGUI.DisabledScope(player == null))
|
||||
{
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
if (GUILayout.Button("Disable Weapons"))
|
||||
{
|
||||
player.SetWeaponEnabled(false);
|
||||
ShowNotification(new GUIContent("Player weapons disabled"));
|
||||
}
|
||||
|
||||
if (GUILayout.Button("Enable Weapons"))
|
||||
{
|
||||
player.SetWeaponEnabled(true);
|
||||
ShowNotification(new GUIContent("Player weapons enabled"));
|
||||
}
|
||||
|
||||
EditorGUILayout.EndHorizontal();
|
||||
}
|
||||
}
|
||||
|
||||
private void DrawToolbar()
|
||||
{
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
_searchText = EditorGUILayout.TextField("Search", _searchText);
|
||||
if (GUILayout.Button("Refresh", GUILayout.Width(80f)))
|
||||
{
|
||||
RefreshPropList();
|
||||
}
|
||||
|
||||
EditorGUILayout.EndHorizontal();
|
||||
}
|
||||
|
||||
private void DrawBuffSelector()
|
||||
{
|
||||
ApplyFilter(_searchText);
|
||||
|
||||
if (_displayNames.Length == 0)
|
||||
{
|
||||
EditorGUILayout.HelpBox("No Buff data found. Ensure data tables are loaded.", MessageType.Warning);
|
||||
return;
|
||||
}
|
||||
|
||||
_selectedIndex = Mathf.Clamp(_selectedIndex, 0, _displayNames.Length - 1);
|
||||
_selectedIndex = EditorGUILayout.Popup("Buff", _selectedIndex, _displayNames);
|
||||
}
|
||||
|
||||
private void DrawSelectedBuffPreview()
|
||||
{
|
||||
DRProp selectedProp = GetSelectedProp();
|
||||
if (selectedProp == null) return;
|
||||
|
||||
_scroll = EditorGUILayout.BeginScrollView(_scroll, GUILayout.Height(120f));
|
||||
EditorGUILayout.LabelField("Title", selectedProp.Title);
|
||||
EditorGUILayout.LabelField("Rarity", selectedProp.Rarity.ToString());
|
||||
EditorGUILayout.LabelField("Description");
|
||||
EditorGUILayout.HelpBox(ItemDescUtility.CreatePropDescription(selectedProp.Modifiers), MessageType.None);
|
||||
EditorGUILayout.EndScrollView();
|
||||
}
|
||||
|
||||
private void DrawBuffActions()
|
||||
{
|
||||
DRProp selectedProp = GetSelectedProp();
|
||||
if (selectedProp == null) return;
|
||||
|
||||
_addCount = Mathf.Clamp(EditorGUILayout.IntField("Add Count", _addCount), 1, 99);
|
||||
if (!GUILayout.Button("Add Buff To Player", GUILayout.Height(28f))) return;
|
||||
|
||||
Player player = FindPlayer();
|
||||
if (player == null)
|
||||
{
|
||||
ShowNotification(new GUIContent("Player not found"));
|
||||
return;
|
||||
}
|
||||
|
||||
for (int i = 0; i < _addCount; i++)
|
||||
{
|
||||
player.AddProp(new PropItem(selectedProp.Modifiers, selectedProp.Rarity, selectedProp.Title,
|
||||
selectedProp.IconAssetName));
|
||||
}
|
||||
|
||||
ShowNotification(new GUIContent($"Added Buff: {selectedProp.Title} x{_addCount}"));
|
||||
}
|
||||
|
||||
private void RefreshPropList()
|
||||
{
|
||||
if (!EditorApplication.isPlaying || GameEntry.DataTable == null)
|
||||
{
|
||||
_allProps = Array.Empty<DRProp>();
|
||||
_filteredProps = Array.Empty<DRProp>();
|
||||
_displayNames = Array.Empty<string>();
|
||||
return;
|
||||
}
|
||||
|
||||
var table = GameEntry.DataTable.GetDataTable<DRProp>();
|
||||
_allProps = table != null ? table.ToArray() : Array.Empty<DRProp>();
|
||||
_selectedIndex = 0;
|
||||
ApplyFilter(_searchText);
|
||||
}
|
||||
|
||||
private void ApplyFilter(string searchText)
|
||||
{
|
||||
if (_allProps == null || _allProps.Length == 0)
|
||||
{
|
||||
_filteredProps = Array.Empty<DRProp>();
|
||||
_displayNames = Array.Empty<string>();
|
||||
return;
|
||||
}
|
||||
|
||||
if (string.IsNullOrWhiteSpace(searchText))
|
||||
{
|
||||
_filteredProps = _allProps;
|
||||
}
|
||||
else
|
||||
{
|
||||
string keyword = searchText.Trim();
|
||||
_filteredProps = _allProps.Where(p =>
|
||||
p != null &&
|
||||
(p.Title?.IndexOf(keyword, StringComparison.OrdinalIgnoreCase) >= 0 ||
|
||||
p.Id.ToString().Contains(keyword))).ToArray();
|
||||
}
|
||||
|
||||
_displayNames = _filteredProps.Select(p => $"[{p.Id}] {p.Title} ({p.Rarity})").ToArray();
|
||||
if (_displayNames.Length == 0)
|
||||
{
|
||||
_selectedIndex = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
_selectedIndex = Mathf.Clamp(_selectedIndex, 0, _displayNames.Length - 1);
|
||||
}
|
||||
|
||||
private DRProp GetSelectedProp()
|
||||
{
|
||||
if (_filteredProps == null || _filteredProps.Length == 0) return null;
|
||||
_selectedIndex = Mathf.Clamp(_selectedIndex, 0, _filteredProps.Length - 1);
|
||||
return _filteredProps[_selectedIndex];
|
||||
}
|
||||
|
||||
private static Player FindPlayer()
|
||||
{
|
||||
return UnityEngine.Object.FindObjectOfType<Player>();
|
||||
}
|
||||
|
||||
private void OnPlayModeStateChanged(PlayModeStateChange state)
|
||||
{
|
||||
if (state == PlayModeStateChange.EnteredPlayMode || state == PlayModeStateChange.EnteredEditMode)
|
||||
{
|
||||
RefreshPropList();
|
||||
Repaint();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 00bc8bc968fa2134095a36a43f326d56
|
||||
guid: e43be978219545f294fbc211e32e8196
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
Reference in New Issue
Block a user