diff --git a/Assets/Gen/Bait.cs b/Assets/Gen/Bait.cs
new file mode 100644
index 0000000..25184f3
--- /dev/null
+++ b/Assets/Gen/Bait.cs
@@ -0,0 +1,66 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using Luban;
+using SimpleJSON;
+
+
+namespace cfg
+{
+public sealed partial class Bait : Luban.BeanBase
+{
+ public Bait(JSONNode _buf)
+ {
+ { if(!_buf["id"].IsNumber) { throw new SerializationException(); } Id = _buf["id"]; }
+ { if(!_buf["efficacy_base"].IsNumber) { throw new SerializationException(); } EfficacyBase = _buf["efficacy_base"]; }
+ { var __json0 = _buf["arr"]; if(!__json0.IsArray) { throw new SerializationException(); } Arr = new System.Collections.Generic.List(__json0.Count); foreach(JSONNode __e0 in __json0.Children) { int __v0; { if(!__e0.IsNumber) { throw new SerializationException(); } __v0 = __e0; } Arr.Add(__v0); } }
+ { if(!_buf["strength"].IsNumber) { throw new SerializationException(); } Strength = _buf["strength"]; }
+ }
+
+ public static Bait DeserializeBait(JSONNode _buf)
+ {
+ return new Bait(_buf);
+ }
+
+ ///
+ /// Id
+ ///
+ public readonly int Id;
+ ///
+ /// 吸引力
+ ///
+ public readonly int EfficacyBase;
+ ///
+ /// 导线圈
+ ///
+ public readonly System.Collections.Generic.List Arr;
+ ///
+ /// 强度
+ ///
+ public readonly int Strength;
+
+ public const int __ID__ = 2062794;
+ public override int GetTypeId() => __ID__;
+
+ public void ResolveRef(Tables tables)
+ {
+ }
+
+ public override string ToString()
+ {
+ return "{ "
+ + "id:" + Id + ","
+ + "efficacyBase:" + EfficacyBase + ","
+ + "arr:" + Luban.StringUtil.CollectionToString(Arr) + ","
+ + "strength:" + Strength + ","
+ + "}";
+ }
+}
+}
+
diff --git a/Assets/Gen/BasicConfig.cs b/Assets/Gen/BasicConfig.cs
new file mode 100644
index 0000000..0fe0890
--- /dev/null
+++ b/Assets/Gen/BasicConfig.cs
@@ -0,0 +1,69 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using Luban;
+using SimpleJSON;
+
+
+namespace cfg
+{
+public sealed partial class BasicConfig : Luban.BeanBase
+{
+ public BasicConfig(JSONNode _buf)
+ {
+ { if(!_buf["x1"].IsNumber) { throw new SerializationException(); } X1 = _buf["x1"]; }
+ { if(!_buf["x2"].IsNumber) { throw new SerializationException(); } X2 = _buf["x2"]; }
+ { if(!_buf["x3"].IsNumber) { throw new SerializationException(); } X3 = _buf["x3"]; }
+ { if(!_buf["x4"].IsNumber) { throw new SerializationException(); } X4 = _buf["x4"]; }
+ { if(!_buf["x5"].IsNumber) { throw new SerializationException(); } X5 = _buf["x5"]; }
+ { if(!_buf["x6"].IsNumber) { throw new SerializationException(); } X6 = _buf["x6"]; }
+ { var __json0 = _buf["x7"]; if(!__json0.IsArray) { throw new SerializationException(); } X7 = new System.Collections.Generic.List(__json0.Count); foreach(JSONNode __e0 in __json0.Children) { int __v0; { if(!__e0.IsNumber) { throw new SerializationException(); } __v0 = __e0; } X7.Add(__v0); } }
+ }
+
+ public static BasicConfig DeserializeBasicConfig(JSONNode _buf)
+ {
+ return new BasicConfig(_buf);
+ }
+
+ ///
+ /// 参数1
+ ///
+ public readonly int X1;
+ ///
+ /// 道具
+ ///
+ public readonly int X2;
+ public readonly int X3;
+ public readonly int X4;
+ public readonly int X5;
+ public readonly int X6;
+ public readonly System.Collections.Generic.List X7;
+
+ public const int __ID__ = 378573040;
+ public override int GetTypeId() => __ID__;
+
+ public void ResolveRef(Tables tables)
+ {
+ }
+
+ public override string ToString()
+ {
+ return "{ "
+ + "x1:" + X1 + ","
+ + "x2:" + X2 + ","
+ + "x3:" + X3 + ","
+ + "x4:" + X4 + ","
+ + "x5:" + X5 + ","
+ + "x6:" + X6 + ","
+ + "x7:" + Luban.StringUtil.CollectionToString(X7) + ","
+ + "}";
+ }
+}
+}
+
diff --git a/Assets/Gen/Bobber.cs b/Assets/Gen/Bobber.cs
new file mode 100644
index 0000000..aa3c2af
--- /dev/null
+++ b/Assets/Gen/Bobber.cs
@@ -0,0 +1,60 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using Luban;
+using SimpleJSON;
+
+
+namespace cfg
+{
+public sealed partial class Bobber : Luban.BeanBase
+{
+ public Bobber(JSONNode _buf)
+ {
+ { if(!_buf["id"].IsNumber) { throw new SerializationException(); } Id = _buf["id"]; }
+ { if(!_buf["displacement"].IsNumber) { throw new SerializationException(); } Displacement = _buf["displacement"]; }
+ { var __json0 = _buf["night_light"]; if(!__json0.IsArray) { throw new SerializationException(); } NightLight = new System.Collections.Generic.List(__json0.Count); foreach(JSONNode __e0 in __json0.Children) { float __v0; { if(!__e0.IsNumber) { throw new SerializationException(); } __v0 = __e0; } NightLight.Add(__v0); } }
+ }
+
+ public static Bobber DeserializeBobber(JSONNode _buf)
+ {
+ return new Bobber(_buf);
+ }
+
+ ///
+ /// Id
+ ///
+ public readonly int Id;
+ ///
+ /// 位移
+ ///
+ public readonly int Displacement;
+ ///
+ /// 是否夜光
+ ///
+ public readonly System.Collections.Generic.List NightLight;
+
+ public const int __ID__ = 1995051738;
+ public override int GetTypeId() => __ID__;
+
+ public void ResolveRef(Tables tables)
+ {
+ }
+
+ public override string ToString()
+ {
+ return "{ "
+ + "id:" + Id + ","
+ + "displacement:" + Displacement + ","
+ + "nightLight:" + Luban.StringUtil.CollectionToString(NightLight) + ","
+ + "}";
+ }
+}
+}
+
diff --git a/Assets/Gen/Feeder.cs b/Assets/Gen/Feeder.cs
new file mode 100644
index 0000000..501d2f7
--- /dev/null
+++ b/Assets/Gen/Feeder.cs
@@ -0,0 +1,60 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using Luban;
+using SimpleJSON;
+
+
+namespace cfg
+{
+public sealed partial class Feeder : Luban.BeanBase
+{
+ public Feeder(JSONNode _buf)
+ {
+ { if(!_buf["id"].IsNumber) { throw new SerializationException(); } Id = _buf["id"]; }
+ { if(!_buf["capacity"].IsNumber) { throw new SerializationException(); } Capacity = _buf["capacity"]; }
+ { if(!_buf["weight"].IsNumber) { throw new SerializationException(); } Weight = _buf["weight"]; }
+ }
+
+ public static Feeder DeserializeFeeder(JSONNode _buf)
+ {
+ return new Feeder(_buf);
+ }
+
+ ///
+ /// Id
+ ///
+ public readonly int Id;
+ ///
+ /// 能力
+ ///
+ public readonly int Capacity;
+ ///
+ /// 重量(克)
+ ///
+ public readonly int Weight;
+
+ public const int __ID__ = 2100424427;
+ public override int GetTypeId() => __ID__;
+
+ public void ResolveRef(Tables tables)
+ {
+ }
+
+ public override string ToString()
+ {
+ return "{ "
+ + "id:" + Id + ","
+ + "capacity:" + Capacity + ","
+ + "weight:" + Weight + ","
+ + "}";
+ }
+}
+}
+
diff --git a/Assets/Gen/Fish.cs b/Assets/Gen/Fish.cs
new file mode 100644
index 0000000..45ce5fc
--- /dev/null
+++ b/Assets/Gen/Fish.cs
@@ -0,0 +1,78 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using Luban;
+using SimpleJSON;
+
+
+namespace cfg
+{
+public sealed partial class Fish : Luban.BeanBase
+{
+ public Fish(JSONNode _buf)
+ {
+ { if(!_buf["id"].IsNumber) { throw new SerializationException(); } Id = _buf["id"]; }
+ { if(!_buf["name"].IsString) { throw new SerializationException(); } Name = _buf["name"]; }
+ { if(!_buf["model"].IsString) { throw new SerializationException(); } Model = _buf["model"]; }
+ { if(!_buf["min_weight"].IsNumber) { throw new SerializationException(); } MinWeight = _buf["min_weight"]; }
+ { if(!_buf["max_weight"].IsNumber) { throw new SerializationException(); } MaxWeight = _buf["max_weight"]; }
+ { if(!_buf["accept"].IsNumber) { throw new SerializationException(); } Accept = _buf["accept"]; }
+ }
+
+ public static Fish DeserializeFish(JSONNode _buf)
+ {
+ return new Fish(_buf);
+ }
+
+ ///
+ /// Id
+ ///
+ public readonly int Id;
+ ///
+ /// 鱼名字
+ ///
+ public readonly string Name;
+ ///
+ /// 模型
+ ///
+ public readonly string Model;
+ ///
+ /// 最小重量(克)
+ ///
+ public readonly int MinWeight;
+ ///
+ /// 最大重量(克)
+ ///
+ public readonly int MaxWeight;
+ ///
+ /// 接受的鱼饵配置组
+ ///
+ public readonly int Accept;
+
+ public const int __ID__ = 2189944;
+ public override int GetTypeId() => __ID__;
+
+ public void ResolveRef(Tables tables)
+ {
+ }
+
+ public override string ToString()
+ {
+ return "{ "
+ + "id:" + Id + ","
+ + "name:" + Name + ","
+ + "model:" + Model + ","
+ + "minWeight:" + MinWeight + ","
+ + "maxWeight:" + MaxWeight + ","
+ + "accept:" + Accept + ","
+ + "}";
+ }
+}
+}
+
diff --git a/Assets/Gen/Hook.cs b/Assets/Gen/Hook.cs
new file mode 100644
index 0000000..6c76067
--- /dev/null
+++ b/Assets/Gen/Hook.cs
@@ -0,0 +1,54 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using Luban;
+using SimpleJSON;
+
+
+namespace cfg
+{
+public sealed partial class Hook : Luban.BeanBase
+{
+ public Hook(JSONNode _buf)
+ {
+ { if(!_buf["id"].IsNumber) { throw new SerializationException(); } Id = _buf["id"]; }
+ { if(!_buf["ding"].IsNumber) { throw new SerializationException(); } Ding = _buf["ding"]; }
+ }
+
+ public static Hook DeserializeHook(JSONNode _buf)
+ {
+ return new Hook(_buf);
+ }
+
+ ///
+ /// Id
+ ///
+ public readonly int Id;
+ ///
+ /// 长钉
+ ///
+ public readonly int Ding;
+
+ public const int __ID__ = 2255171;
+ public override int GetTypeId() => __ID__;
+
+ public void ResolveRef(Tables tables)
+ {
+ }
+
+ public override string ToString()
+ {
+ return "{ "
+ + "id:" + Id + ","
+ + "ding:" + Ding + ","
+ + "}";
+ }
+}
+}
+
diff --git a/Assets/Gen/InitItemConfig.cs b/Assets/Gen/InitItemConfig.cs
new file mode 100644
index 0000000..562cb4e
--- /dev/null
+++ b/Assets/Gen/InitItemConfig.cs
@@ -0,0 +1,54 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using Luban;
+using SimpleJSON;
+
+
+namespace cfg
+{
+public sealed partial class InitItemConfig : Luban.BeanBase
+{
+ public InitItemConfig(JSONNode _buf)
+ {
+ { if(!_buf["id"].IsNumber) { throw new SerializationException(); } Id = _buf["id"]; }
+ { if(!_buf["count"].IsNumber) { throw new SerializationException(); } Count = _buf["count"]; }
+ }
+
+ public static InitItemConfig DeserializeInitItemConfig(JSONNode _buf)
+ {
+ return new InitItemConfig(_buf);
+ }
+
+ ///
+ /// Id
+ ///
+ public readonly int Id;
+ ///
+ /// 数量
+ ///
+ public readonly int Count;
+
+ public const int __ID__ = 1451166085;
+ public override int GetTypeId() => __ID__;
+
+ public void ResolveRef(Tables tables)
+ {
+ }
+
+ public override string ToString()
+ {
+ return "{ "
+ + "id:" + Id + ","
+ + "count:" + Count + ","
+ + "}";
+ }
+}
+}
+
diff --git a/Assets/Gen/Item.cs b/Assets/Gen/Item.cs
new file mode 100644
index 0000000..f6e13b6
--- /dev/null
+++ b/Assets/Gen/Item.cs
@@ -0,0 +1,96 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using Luban;
+using SimpleJSON;
+
+
+namespace cfg
+{
+public sealed partial class Item : Luban.BeanBase
+{
+ public Item(JSONNode _buf)
+ {
+ { if(!_buf["id"].IsNumber) { throw new SerializationException(); } Id = _buf["id"]; }
+ { if(!_buf["model"].IsString) { throw new SerializationException(); } Model = _buf["model"]; }
+ { if(!_buf["type"].IsNumber) { throw new SerializationException(); } Type = _buf["type"]; }
+ { if(!_buf["quality"].IsNumber) { throw new SerializationException(); } Quality = _buf["quality"]; }
+ { if(!_buf["brand"].IsNumber) { throw new SerializationException(); } Brand = _buf["brand"]; }
+ { if(!_buf["weight"].IsNumber) { throw new SerializationException(); } Weight = _buf["weight"]; }
+ { if(!_buf["length"].IsNumber) { throw new SerializationException(); } Length = _buf["length"]; }
+ { if(!_buf["max"].IsNumber) { throw new SerializationException(); } Max = _buf["max"]; }
+ { if(!_buf["auto_use"].IsNumber) { throw new SerializationException(); } AutoUse = _buf["auto_use"]; }
+ }
+
+ public static Item DeserializeItem(JSONNode _buf)
+ {
+ return new Item(_buf);
+ }
+
+ ///
+ /// Id
+ ///
+ public readonly int Id;
+ ///
+ /// 模型
+ ///
+ public readonly string Model;
+ ///
+ /// 子类型
+ ///
+ public readonly int Type;
+ ///
+ /// 品质
+ ///
+ public readonly int Quality;
+ ///
+ /// 品牌
+ ///
+ public readonly int Brand;
+ ///
+ /// 重量(克)
+ ///
+ public readonly int Weight;
+ ///
+ /// 长度(毫米)
+ ///
+ public readonly int Length;
+ ///
+ /// 最大堆叠数量
+ ///
+ public readonly int Max;
+ ///
+ /// 获得自动使用
+ ///
+ public readonly int AutoUse;
+
+ public const int __ID__ = 2289459;
+ public override int GetTypeId() => __ID__;
+
+ public void ResolveRef(Tables tables)
+ {
+ }
+
+ public override string ToString()
+ {
+ return "{ "
+ + "id:" + Id + ","
+ + "model:" + Model + ","
+ + "type:" + Type + ","
+ + "quality:" + Quality + ","
+ + "brand:" + Brand + ","
+ + "weight:" + Weight + ","
+ + "length:" + Length + ","
+ + "max:" + Max + ","
+ + "autoUse:" + AutoUse + ","
+ + "}";
+ }
+}
+}
+
diff --git a/Assets/Gen/Line.cs b/Assets/Gen/Line.cs
new file mode 100644
index 0000000..3eb9440
--- /dev/null
+++ b/Assets/Gen/Line.cs
@@ -0,0 +1,60 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using Luban;
+using SimpleJSON;
+
+
+namespace cfg
+{
+public sealed partial class Line : Luban.BeanBase
+{
+ public Line(JSONNode _buf)
+ {
+ { if(!_buf["id"].IsNumber) { throw new SerializationException(); } Id = _buf["id"]; }
+ { if(!_buf["strength"].IsNumber) { throw new SerializationException(); } Strength = _buf["strength"]; }
+ { if(!_buf["size"].IsNumber) { throw new SerializationException(); } Size = _buf["size"]; }
+ }
+
+ public static Line DeserializeLine(JSONNode _buf)
+ {
+ return new Line(_buf);
+ }
+
+ ///
+ /// Id
+ ///
+ public readonly int Id;
+ ///
+ /// 强度
+ ///
+ public readonly int Strength;
+ ///
+ /// 尺寸
+ ///
+ public readonly int Size;
+
+ public const int __ID__ = 2368532;
+ public override int GetTypeId() => __ID__;
+
+ public void ResolveRef(Tables tables)
+ {
+ }
+
+ public override string ToString()
+ {
+ return "{ "
+ + "id:" + Id + ","
+ + "strength:" + Strength + ","
+ + "size:" + Size + ","
+ + "}";
+ }
+}
+}
+
diff --git a/Assets/Gen/Lure.cs b/Assets/Gen/Lure.cs
new file mode 100644
index 0000000..4baae52
--- /dev/null
+++ b/Assets/Gen/Lure.cs
@@ -0,0 +1,66 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using Luban;
+using SimpleJSON;
+
+
+namespace cfg
+{
+public sealed partial class Lure : Luban.BeanBase
+{
+ public Lure(JSONNode _buf)
+ {
+ { if(!_buf["id"].IsNumber) { throw new SerializationException(); } Id = _buf["id"]; }
+ { var __json0 = _buf["hook"]; if(!__json0.IsArray) { throw new SerializationException(); } Hook = new System.Collections.Generic.List(__json0.Count); foreach(JSONNode __e0 in __json0.Children) { int __v0; { if(!__e0.IsNumber) { throw new SerializationException(); } __v0 = __e0; } Hook.Add(__v0); } }
+ { if(!_buf["hook_num"].IsNumber) { throw new SerializationException(); } HookNum = _buf["hook_num"]; }
+ { if(!_buf["efficacy_base"].IsNumber) { throw new SerializationException(); } EfficacyBase = _buf["efficacy_base"]; }
+ }
+
+ public static Lure DeserializeLure(JSONNode _buf)
+ {
+ return new Lure(_buf);
+ }
+
+ ///
+ /// Id
+ ///
+ public readonly int Id;
+ ///
+ /// 鱼钩
+ ///
+ public readonly System.Collections.Generic.List Hook;
+ ///
+ /// 装配鱼钩数量
+ ///
+ public readonly int HookNum;
+ ///
+ /// 吸引力
+ ///
+ public readonly int EfficacyBase;
+
+ public const int __ID__ = 2380188;
+ public override int GetTypeId() => __ID__;
+
+ public void ResolveRef(Tables tables)
+ {
+ }
+
+ public override string ToString()
+ {
+ return "{ "
+ + "id:" + Id + ","
+ + "hook:" + Luban.StringUtil.CollectionToString(Hook) + ","
+ + "hookNum:" + HookNum + ","
+ + "efficacyBase:" + EfficacyBase + ","
+ + "}";
+ }
+}
+}
+
diff --git a/Assets/Gen/Reel.cs b/Assets/Gen/Reel.cs
new file mode 100644
index 0000000..6c8899e
--- /dev/null
+++ b/Assets/Gen/Reel.cs
@@ -0,0 +1,66 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using Luban;
+using SimpleJSON;
+
+
+namespace cfg
+{
+public sealed partial class Reel : Luban.BeanBase
+{
+ public Reel(JSONNode _buf)
+ {
+ { if(!_buf["id"].IsNumber) { throw new SerializationException(); } Id = _buf["id"]; }
+ { if(!_buf["reel_type"].IsNumber) { throw new SerializationException(); } ReelType = _buf["reel_type"]; }
+ { var __json0 = _buf["gear_ratio"]; if(!__json0.IsArray) { throw new SerializationException(); } GearRatio = new System.Collections.Generic.List(__json0.Count); foreach(JSONNode __e0 in __json0.Children) { float __v0; { if(!__e0.IsNumber) { throw new SerializationException(); } __v0 = __e0; } GearRatio.Add(__v0); } }
+ { if(!_buf["strength"].IsNumber) { throw new SerializationException(); } Strength = _buf["strength"]; }
+ }
+
+ public static Reel DeserializeReel(JSONNode _buf)
+ {
+ return new Reel(_buf);
+ }
+
+ ///
+ /// Id
+ ///
+ public readonly int Id;
+ ///
+ /// 鱼轮类型
+ ///
+ public readonly int ReelType;
+ ///
+ /// 组件比
+ ///
+ public readonly System.Collections.Generic.List GearRatio;
+ ///
+ /// 强度
+ ///
+ public readonly int Strength;
+
+ public const int __ID__ = 2543162;
+ public override int GetTypeId() => __ID__;
+
+ public void ResolveRef(Tables tables)
+ {
+ }
+
+ public override string ToString()
+ {
+ return "{ "
+ + "id:" + Id + ","
+ + "reelType:" + ReelType + ","
+ + "gearRatio:" + Luban.StringUtil.CollectionToString(GearRatio) + ","
+ + "strength:" + Strength + ","
+ + "}";
+ }
+}
+}
+
diff --git a/Assets/Gen/Rod.cs b/Assets/Gen/Rod.cs
new file mode 100644
index 0000000..8df3bec
--- /dev/null
+++ b/Assets/Gen/Rod.cs
@@ -0,0 +1,78 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using Luban;
+using SimpleJSON;
+
+
+namespace cfg
+{
+public sealed partial class Rod : Luban.BeanBase
+{
+ public Rod(JSONNode _buf)
+ {
+ { if(!_buf["id"].IsNumber) { throw new SerializationException(); } Id = _buf["id"]; }
+ { if(!_buf["rod_type"].IsNumber) { throw new SerializationException(); } RodType = _buf["rod_type"]; }
+ { if(!_buf["ring"].IsNumber) { throw new SerializationException(); } Ring = _buf["ring"]; }
+ { if(!_buf["strength"].IsNumber) { throw new SerializationException(); } Strength = _buf["strength"]; }
+ { if(!_buf["max_range"].IsNumber) { throw new SerializationException(); } MaxRange = _buf["max_range"]; }
+ { if(!_buf["construction_type"].IsNumber) { throw new SerializationException(); } ConstructionType = _buf["construction_type"]; }
+ }
+
+ public static Rod DeserializeRod(JSONNode _buf)
+ {
+ return new Rod(_buf);
+ }
+
+ ///
+ /// Id
+ ///
+ public readonly int Id;
+ ///
+ /// 鱼竿类型
+ ///
+ public readonly int RodType;
+ ///
+ /// 导线圈
+ ///
+ public readonly int Ring;
+ ///
+ /// 强度
+ ///
+ public readonly int Strength;
+ ///
+ /// 最大范围
+ ///
+ public readonly int MaxRange;
+ ///
+ /// 结构类型
+ ///
+ public readonly int ConstructionType;
+
+ public const int __ID__ = 82343;
+ public override int GetTypeId() => __ID__;
+
+ public void ResolveRef(Tables tables)
+ {
+ }
+
+ public override string ToString()
+ {
+ return "{ "
+ + "id:" + Id + ","
+ + "rodType:" + RodType + ","
+ + "ring:" + Ring + ","
+ + "strength:" + Strength + ","
+ + "maxRange:" + MaxRange + ","
+ + "constructionType:" + ConstructionType + ","
+ + "}";
+ }
+}
+}
+
diff --git a/Assets/Gen/Tables.cs b/Assets/Gen/Tables.cs
new file mode 100644
index 0000000..277a1ed
--- /dev/null
+++ b/Assets/Gen/Tables.cs
@@ -0,0 +1,100 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using Luban;
+using SimpleJSON;
+
+namespace cfg
+{
+public partial class Tables
+{
+ ///
+ /// 鱼饵
+ ///
+ public TbBait TbBait {get; }
+ ///
+ /// 全局常量配置表
+ ///
+ public TbBasicConfig TbBasicConfig {get; }
+ ///
+ /// 浮漂
+ ///
+ public TbBobber TbBobber {get; }
+ ///
+ /// 菲德
+ ///
+ public TbFeeder TbFeeder {get; }
+ ///
+ /// 鱼
+ ///
+ public TbFish TbFish {get; }
+ ///
+ /// 鱼钩
+ ///
+ public TbHook TbHook {get; }
+ ///
+ /// 初始物品表
+ ///
+ public TbInitItemConfig TbInitItemConfig {get; }
+ ///
+ /// 物品表
+ ///
+ public TbItem TbItem {get; }
+ ///
+ /// 鱼线
+ ///
+ public TbLine TbLine {get; }
+ ///
+ /// 路亚饵
+ ///
+ public TbLure TbLure {get; }
+ ///
+ /// 渔轮
+ ///
+ public TbReel TbReel {get; }
+ ///
+ /// 鱼竿
+ ///
+ public TbRod TbRod {get; }
+
+ public Tables(System.Func loader)
+ {
+ TbBait = new TbBait(loader("tbbait"));
+ TbBasicConfig = new TbBasicConfig(loader("tbbasicconfig"));
+ TbBobber = new TbBobber(loader("tbbobber"));
+ TbFeeder = new TbFeeder(loader("tbfeeder"));
+ TbFish = new TbFish(loader("tbfish"));
+ TbHook = new TbHook(loader("tbhook"));
+ TbInitItemConfig = new TbInitItemConfig(loader("tbinititemconfig"));
+ TbItem = new TbItem(loader("tbitem"));
+ TbLine = new TbLine(loader("tbline"));
+ TbLure = new TbLure(loader("tblure"));
+ TbReel = new TbReel(loader("tbreel"));
+ TbRod = new TbRod(loader("tbrod"));
+ ResolveRef();
+ }
+
+ private void ResolveRef()
+ {
+ TbBait.ResolveRef(this);
+ TbBasicConfig.ResolveRef(this);
+ TbBobber.ResolveRef(this);
+ TbFeeder.ResolveRef(this);
+ TbFish.ResolveRef(this);
+ TbHook.ResolveRef(this);
+ TbInitItemConfig.ResolveRef(this);
+ TbItem.ResolveRef(this);
+ TbLine.ResolveRef(this);
+ TbLure.ResolveRef(this);
+ TbReel.ResolveRef(this);
+ TbRod.ResolveRef(this);
+ }
+}
+
+}
diff --git a/Assets/Gen/TbBait.cs b/Assets/Gen/TbBait.cs
new file mode 100644
index 0000000..d3c303b
--- /dev/null
+++ b/Assets/Gen/TbBait.cs
@@ -0,0 +1,57 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using Luban;
+using SimpleJSON;
+
+
+namespace cfg
+{
+///
+/// 鱼饵
+///
+public partial class TbBait
+{
+ private readonly System.Collections.Generic.Dictionary _dataMap;
+ private readonly System.Collections.Generic.List _dataList;
+
+ public TbBait(JSONNode _buf)
+ {
+ int count = _buf.Count;
+ _dataMap = new System.Collections.Generic.Dictionary(count);
+ _dataList = new System.Collections.Generic.List(count);
+
+ foreach(JSONNode _ele in _buf.Children)
+ {
+ Bait _v;
+ { if(!_ele.IsObject) { throw new SerializationException(); } _v = global::cfg.Bait.DeserializeBait(_ele); }
+ _dataList.Add(_v);
+ _dataMap.Add(_v.Id, _v);
+ }
+ }
+
+ public System.Collections.Generic.Dictionary DataMap => _dataMap;
+ public System.Collections.Generic.List DataList => _dataList;
+
+ public Bait GetOrDefault(int key) => _dataMap.TryGetValue(key, out var v) ? v : default;
+ public Bait Get(int key) => _dataMap[key];
+ public Bait this[int key] => _dataMap[key];
+
+ public void ResolveRef(Tables tables)
+ {
+ foreach(var _v in _dataList)
+ {
+ _v.ResolveRef(tables);
+ }
+ }
+
+}
+
+}
+
diff --git a/Assets/Gen/TbBasicConfig.cs b/Assets/Gen/TbBasicConfig.cs
new file mode 100644
index 0000000..e61119d
--- /dev/null
+++ b/Assets/Gen/TbBasicConfig.cs
@@ -0,0 +1,57 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using Luban;
+using SimpleJSON;
+
+
+namespace cfg
+{
+///
+/// 全局常量配置表
+///
+public partial class TbBasicConfig
+{
+ private readonly System.Collections.Generic.Dictionary _dataMap;
+ private readonly System.Collections.Generic.List _dataList;
+
+ public TbBasicConfig(JSONNode _buf)
+ {
+ int count = _buf.Count;
+ _dataMap = new System.Collections.Generic.Dictionary(count);
+ _dataList = new System.Collections.Generic.List(count);
+
+ foreach(JSONNode _ele in _buf.Children)
+ {
+ BasicConfig _v;
+ { if(!_ele.IsObject) { throw new SerializationException(); } _v = global::cfg.BasicConfig.DeserializeBasicConfig(_ele); }
+ _dataList.Add(_v);
+ _dataMap.Add(_v.X1, _v);
+ }
+ }
+
+ public System.Collections.Generic.Dictionary DataMap => _dataMap;
+ public System.Collections.Generic.List DataList => _dataList;
+
+ public BasicConfig GetOrDefault(int key) => _dataMap.TryGetValue(key, out var v) ? v : default;
+ public BasicConfig Get(int key) => _dataMap[key];
+ public BasicConfig this[int key] => _dataMap[key];
+
+ public void ResolveRef(Tables tables)
+ {
+ foreach(var _v in _dataList)
+ {
+ _v.ResolveRef(tables);
+ }
+ }
+
+}
+
+}
+
diff --git a/Assets/Gen/TbBobber.cs b/Assets/Gen/TbBobber.cs
new file mode 100644
index 0000000..a4465a4
--- /dev/null
+++ b/Assets/Gen/TbBobber.cs
@@ -0,0 +1,57 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using Luban;
+using SimpleJSON;
+
+
+namespace cfg
+{
+///
+/// 浮漂
+///
+public partial class TbBobber
+{
+ private readonly System.Collections.Generic.Dictionary _dataMap;
+ private readonly System.Collections.Generic.List _dataList;
+
+ public TbBobber(JSONNode _buf)
+ {
+ int count = _buf.Count;
+ _dataMap = new System.Collections.Generic.Dictionary(count);
+ _dataList = new System.Collections.Generic.List(count);
+
+ foreach(JSONNode _ele in _buf.Children)
+ {
+ Bobber _v;
+ { if(!_ele.IsObject) { throw new SerializationException(); } _v = global::cfg.Bobber.DeserializeBobber(_ele); }
+ _dataList.Add(_v);
+ _dataMap.Add(_v.Id, _v);
+ }
+ }
+
+ public System.Collections.Generic.Dictionary DataMap => _dataMap;
+ public System.Collections.Generic.List DataList => _dataList;
+
+ public Bobber GetOrDefault(int key) => _dataMap.TryGetValue(key, out var v) ? v : default;
+ public Bobber Get(int key) => _dataMap[key];
+ public Bobber this[int key] => _dataMap[key];
+
+ public void ResolveRef(Tables tables)
+ {
+ foreach(var _v in _dataList)
+ {
+ _v.ResolveRef(tables);
+ }
+ }
+
+}
+
+}
+
diff --git a/Assets/Gen/TbFeeder.cs b/Assets/Gen/TbFeeder.cs
new file mode 100644
index 0000000..79cd761
--- /dev/null
+++ b/Assets/Gen/TbFeeder.cs
@@ -0,0 +1,57 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using Luban;
+using SimpleJSON;
+
+
+namespace cfg
+{
+///
+/// 菲德
+///
+public partial class TbFeeder
+{
+ private readonly System.Collections.Generic.Dictionary _dataMap;
+ private readonly System.Collections.Generic.List _dataList;
+
+ public TbFeeder(JSONNode _buf)
+ {
+ int count = _buf.Count;
+ _dataMap = new System.Collections.Generic.Dictionary(count);
+ _dataList = new System.Collections.Generic.List(count);
+
+ foreach(JSONNode _ele in _buf.Children)
+ {
+ Feeder _v;
+ { if(!_ele.IsObject) { throw new SerializationException(); } _v = global::cfg.Feeder.DeserializeFeeder(_ele); }
+ _dataList.Add(_v);
+ _dataMap.Add(_v.Id, _v);
+ }
+ }
+
+ public System.Collections.Generic.Dictionary DataMap => _dataMap;
+ public System.Collections.Generic.List DataList => _dataList;
+
+ public Feeder GetOrDefault(int key) => _dataMap.TryGetValue(key, out var v) ? v : default;
+ public Feeder Get(int key) => _dataMap[key];
+ public Feeder this[int key] => _dataMap[key];
+
+ public void ResolveRef(Tables tables)
+ {
+ foreach(var _v in _dataList)
+ {
+ _v.ResolveRef(tables);
+ }
+ }
+
+}
+
+}
+
diff --git a/Assets/Gen/TbFish.cs b/Assets/Gen/TbFish.cs
new file mode 100644
index 0000000..dab119c
--- /dev/null
+++ b/Assets/Gen/TbFish.cs
@@ -0,0 +1,57 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using Luban;
+using SimpleJSON;
+
+
+namespace cfg
+{
+///
+/// 鱼
+///
+public partial class TbFish
+{
+ private readonly System.Collections.Generic.Dictionary _dataMap;
+ private readonly System.Collections.Generic.List _dataList;
+
+ public TbFish(JSONNode _buf)
+ {
+ int count = _buf.Count;
+ _dataMap = new System.Collections.Generic.Dictionary(count);
+ _dataList = new System.Collections.Generic.List(count);
+
+ foreach(JSONNode _ele in _buf.Children)
+ {
+ Fish _v;
+ { if(!_ele.IsObject) { throw new SerializationException(); } _v = global::cfg.Fish.DeserializeFish(_ele); }
+ _dataList.Add(_v);
+ _dataMap.Add(_v.Id, _v);
+ }
+ }
+
+ public System.Collections.Generic.Dictionary DataMap => _dataMap;
+ public System.Collections.Generic.List DataList => _dataList;
+
+ public Fish GetOrDefault(int key) => _dataMap.TryGetValue(key, out var v) ? v : default;
+ public Fish Get(int key) => _dataMap[key];
+ public Fish this[int key] => _dataMap[key];
+
+ public void ResolveRef(Tables tables)
+ {
+ foreach(var _v in _dataList)
+ {
+ _v.ResolveRef(tables);
+ }
+ }
+
+}
+
+}
+
diff --git a/Assets/Gen/TbHook.cs b/Assets/Gen/TbHook.cs
new file mode 100644
index 0000000..efff1fd
--- /dev/null
+++ b/Assets/Gen/TbHook.cs
@@ -0,0 +1,57 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using Luban;
+using SimpleJSON;
+
+
+namespace cfg
+{
+///
+/// 鱼钩
+///
+public partial class TbHook
+{
+ private readonly System.Collections.Generic.Dictionary _dataMap;
+ private readonly System.Collections.Generic.List _dataList;
+
+ public TbHook(JSONNode _buf)
+ {
+ int count = _buf.Count;
+ _dataMap = new System.Collections.Generic.Dictionary(count);
+ _dataList = new System.Collections.Generic.List(count);
+
+ foreach(JSONNode _ele in _buf.Children)
+ {
+ Hook _v;
+ { if(!_ele.IsObject) { throw new SerializationException(); } _v = global::cfg.Hook.DeserializeHook(_ele); }
+ _dataList.Add(_v);
+ _dataMap.Add(_v.Id, _v);
+ }
+ }
+
+ public System.Collections.Generic.Dictionary DataMap => _dataMap;
+ public System.Collections.Generic.List DataList => _dataList;
+
+ public Hook GetOrDefault(int key) => _dataMap.TryGetValue(key, out var v) ? v : default;
+ public Hook Get(int key) => _dataMap[key];
+ public Hook this[int key] => _dataMap[key];
+
+ public void ResolveRef(Tables tables)
+ {
+ foreach(var _v in _dataList)
+ {
+ _v.ResolveRef(tables);
+ }
+ }
+
+}
+
+}
+
diff --git a/Assets/Gen/TbInitItemConfig.cs b/Assets/Gen/TbInitItemConfig.cs
new file mode 100644
index 0000000..457469f
--- /dev/null
+++ b/Assets/Gen/TbInitItemConfig.cs
@@ -0,0 +1,57 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using Luban;
+using SimpleJSON;
+
+
+namespace cfg
+{
+///
+/// 初始物品表
+///
+public partial class TbInitItemConfig
+{
+ private readonly System.Collections.Generic.Dictionary _dataMap;
+ private readonly System.Collections.Generic.List _dataList;
+
+ public TbInitItemConfig(JSONNode _buf)
+ {
+ int count = _buf.Count;
+ _dataMap = new System.Collections.Generic.Dictionary(count);
+ _dataList = new System.Collections.Generic.List(count);
+
+ foreach(JSONNode _ele in _buf.Children)
+ {
+ InitItemConfig _v;
+ { if(!_ele.IsObject) { throw new SerializationException(); } _v = global::cfg.InitItemConfig.DeserializeInitItemConfig(_ele); }
+ _dataList.Add(_v);
+ _dataMap.Add(_v.Id, _v);
+ }
+ }
+
+ public System.Collections.Generic.Dictionary DataMap => _dataMap;
+ public System.Collections.Generic.List DataList => _dataList;
+
+ public InitItemConfig GetOrDefault(int key) => _dataMap.TryGetValue(key, out var v) ? v : default;
+ public InitItemConfig Get(int key) => _dataMap[key];
+ public InitItemConfig this[int key] => _dataMap[key];
+
+ public void ResolveRef(Tables tables)
+ {
+ foreach(var _v in _dataList)
+ {
+ _v.ResolveRef(tables);
+ }
+ }
+
+}
+
+}
+
diff --git a/Assets/Gen/TbItem.cs b/Assets/Gen/TbItem.cs
new file mode 100644
index 0000000..77cb058
--- /dev/null
+++ b/Assets/Gen/TbItem.cs
@@ -0,0 +1,57 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using Luban;
+using SimpleJSON;
+
+
+namespace cfg
+{
+///
+/// 物品表
+///
+public partial class TbItem
+{
+ private readonly System.Collections.Generic.Dictionary _dataMap;
+ private readonly System.Collections.Generic.List- _dataList;
+
+ public TbItem(JSONNode _buf)
+ {
+ int count = _buf.Count;
+ _dataMap = new System.Collections.Generic.Dictionary(count);
+ _dataList = new System.Collections.Generic.List
- (count);
+
+ foreach(JSONNode _ele in _buf.Children)
+ {
+ Item _v;
+ { if(!_ele.IsObject) { throw new SerializationException(); } _v = global::cfg.Item.DeserializeItem(_ele); }
+ _dataList.Add(_v);
+ _dataMap.Add(_v.Id, _v);
+ }
+ }
+
+ public System.Collections.Generic.Dictionary DataMap => _dataMap;
+ public System.Collections.Generic.List
- DataList => _dataList;
+
+ public Item GetOrDefault(int key) => _dataMap.TryGetValue(key, out var v) ? v : default;
+ public Item Get(int key) => _dataMap[key];
+ public Item this[int key] => _dataMap[key];
+
+ public void ResolveRef(Tables tables)
+ {
+ foreach(var _v in _dataList)
+ {
+ _v.ResolveRef(tables);
+ }
+ }
+
+}
+
+}
+
diff --git a/Assets/Gen/TbLine.cs b/Assets/Gen/TbLine.cs
new file mode 100644
index 0000000..7ff461a
--- /dev/null
+++ b/Assets/Gen/TbLine.cs
@@ -0,0 +1,57 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using Luban;
+using SimpleJSON;
+
+
+namespace cfg
+{
+///
+/// 鱼线
+///
+public partial class TbLine
+{
+ private readonly System.Collections.Generic.Dictionary _dataMap;
+ private readonly System.Collections.Generic.List _dataList;
+
+ public TbLine(JSONNode _buf)
+ {
+ int count = _buf.Count;
+ _dataMap = new System.Collections.Generic.Dictionary(count);
+ _dataList = new System.Collections.Generic.List(count);
+
+ foreach(JSONNode _ele in _buf.Children)
+ {
+ Line _v;
+ { if(!_ele.IsObject) { throw new SerializationException(); } _v = global::cfg.Line.DeserializeLine(_ele); }
+ _dataList.Add(_v);
+ _dataMap.Add(_v.Id, _v);
+ }
+ }
+
+ public System.Collections.Generic.Dictionary DataMap => _dataMap;
+ public System.Collections.Generic.List DataList => _dataList;
+
+ public Line GetOrDefault(int key) => _dataMap.TryGetValue(key, out var v) ? v : default;
+ public Line Get(int key) => _dataMap[key];
+ public Line this[int key] => _dataMap[key];
+
+ public void ResolveRef(Tables tables)
+ {
+ foreach(var _v in _dataList)
+ {
+ _v.ResolveRef(tables);
+ }
+ }
+
+}
+
+}
+
diff --git a/Assets/Gen/TbLure.cs b/Assets/Gen/TbLure.cs
new file mode 100644
index 0000000..1a7e78d
--- /dev/null
+++ b/Assets/Gen/TbLure.cs
@@ -0,0 +1,57 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using Luban;
+using SimpleJSON;
+
+
+namespace cfg
+{
+///
+/// 路亚饵
+///
+public partial class TbLure
+{
+ private readonly System.Collections.Generic.Dictionary _dataMap;
+ private readonly System.Collections.Generic.List _dataList;
+
+ public TbLure(JSONNode _buf)
+ {
+ int count = _buf.Count;
+ _dataMap = new System.Collections.Generic.Dictionary(count);
+ _dataList = new System.Collections.Generic.List(count);
+
+ foreach(JSONNode _ele in _buf.Children)
+ {
+ Lure _v;
+ { if(!_ele.IsObject) { throw new SerializationException(); } _v = global::cfg.Lure.DeserializeLure(_ele); }
+ _dataList.Add(_v);
+ _dataMap.Add(_v.Id, _v);
+ }
+ }
+
+ public System.Collections.Generic.Dictionary DataMap => _dataMap;
+ public System.Collections.Generic.List DataList => _dataList;
+
+ public Lure GetOrDefault(int key) => _dataMap.TryGetValue(key, out var v) ? v : default;
+ public Lure Get(int key) => _dataMap[key];
+ public Lure this[int key] => _dataMap[key];
+
+ public void ResolveRef(Tables tables)
+ {
+ foreach(var _v in _dataList)
+ {
+ _v.ResolveRef(tables);
+ }
+ }
+
+}
+
+}
+
diff --git a/Assets/Gen/TbReel.cs b/Assets/Gen/TbReel.cs
new file mode 100644
index 0000000..d7c5281
--- /dev/null
+++ b/Assets/Gen/TbReel.cs
@@ -0,0 +1,57 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using Luban;
+using SimpleJSON;
+
+
+namespace cfg
+{
+///
+/// 渔轮
+///
+public partial class TbReel
+{
+ private readonly System.Collections.Generic.Dictionary _dataMap;
+ private readonly System.Collections.Generic.List _dataList;
+
+ public TbReel(JSONNode _buf)
+ {
+ int count = _buf.Count;
+ _dataMap = new System.Collections.Generic.Dictionary(count);
+ _dataList = new System.Collections.Generic.List(count);
+
+ foreach(JSONNode _ele in _buf.Children)
+ {
+ Reel _v;
+ { if(!_ele.IsObject) { throw new SerializationException(); } _v = global::cfg.Reel.DeserializeReel(_ele); }
+ _dataList.Add(_v);
+ _dataMap.Add(_v.Id, _v);
+ }
+ }
+
+ public System.Collections.Generic.Dictionary DataMap => _dataMap;
+ public System.Collections.Generic.List DataList => _dataList;
+
+ public Reel GetOrDefault(int key) => _dataMap.TryGetValue(key, out var v) ? v : default;
+ public Reel Get(int key) => _dataMap[key];
+ public Reel this[int key] => _dataMap[key];
+
+ public void ResolveRef(Tables tables)
+ {
+ foreach(var _v in _dataList)
+ {
+ _v.ResolveRef(tables);
+ }
+ }
+
+}
+
+}
+
diff --git a/Assets/Gen/TbRod.cs b/Assets/Gen/TbRod.cs
new file mode 100644
index 0000000..fbb0983
--- /dev/null
+++ b/Assets/Gen/TbRod.cs
@@ -0,0 +1,57 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using Luban;
+using SimpleJSON;
+
+
+namespace cfg
+{
+///
+/// 鱼竿
+///
+public partial class TbRod
+{
+ private readonly System.Collections.Generic.Dictionary _dataMap;
+ private readonly System.Collections.Generic.List _dataList;
+
+ public TbRod(JSONNode _buf)
+ {
+ int count = _buf.Count;
+ _dataMap = new System.Collections.Generic.Dictionary(count);
+ _dataList = new System.Collections.Generic.List(count);
+
+ foreach(JSONNode _ele in _buf.Children)
+ {
+ Rod _v;
+ { if(!_ele.IsObject) { throw new SerializationException(); } _v = global::cfg.Rod.DeserializeRod(_ele); }
+ _dataList.Add(_v);
+ _dataMap.Add(_v.Id, _v);
+ }
+ }
+
+ public System.Collections.Generic.Dictionary DataMap => _dataMap;
+ public System.Collections.Generic.List DataList => _dataList;
+
+ public Rod GetOrDefault(int key) => _dataMap.TryGetValue(key, out var v) ? v : default;
+ public Rod Get(int key) => _dataMap[key];
+ public Rod this[int key] => _dataMap[key];
+
+ public void ResolveRef(Tables tables)
+ {
+ foreach(var _v in _dataList)
+ {
+ _v.ResolveRef(tables);
+ }
+ }
+
+}
+
+}
+
diff --git a/Assets/Gen/vector2.cs b/Assets/Gen/vector2.cs
new file mode 100644
index 0000000..949d955
--- /dev/null
+++ b/Assets/Gen/vector2.cs
@@ -0,0 +1,46 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using Luban;
+using SimpleJSON;
+
+
+namespace cfg
+{
+public partial struct vector2
+{
+ public vector2(JSONNode _buf)
+ {
+ { if(!_buf["x"].IsNumber) { throw new SerializationException(); } X = _buf["x"]; }
+ { if(!_buf["y"].IsNumber) { throw new SerializationException(); } Y = _buf["y"]; }
+ }
+
+ public static vector2 Deserializevector2(JSONNode _buf)
+ {
+ return new vector2(_buf);
+ }
+
+ public readonly float X;
+ public readonly float Y;
+
+
+ public void ResolveRef(Tables tables)
+ {
+ }
+
+ public override string ToString()
+ {
+ return "{ "
+ + "x:" + X + ","
+ + "y:" + Y + ","
+ + "}";
+ }
+}
+}
+
diff --git a/Assets/Gen/vector3.cs b/Assets/Gen/vector3.cs
new file mode 100644
index 0000000..25db620
--- /dev/null
+++ b/Assets/Gen/vector3.cs
@@ -0,0 +1,49 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using Luban;
+using SimpleJSON;
+
+
+namespace cfg
+{
+public partial struct vector3
+{
+ public vector3(JSONNode _buf)
+ {
+ { if(!_buf["x"].IsNumber) { throw new SerializationException(); } X = _buf["x"]; }
+ { if(!_buf["y"].IsNumber) { throw new SerializationException(); } Y = _buf["y"]; }
+ { if(!_buf["z"].IsNumber) { throw new SerializationException(); } Z = _buf["z"]; }
+ }
+
+ public static vector3 Deserializevector3(JSONNode _buf)
+ {
+ return new vector3(_buf);
+ }
+
+ public readonly float X;
+ public readonly float Y;
+ public readonly float Z;
+
+
+ public void ResolveRef(Tables tables)
+ {
+ }
+
+ public override string ToString()
+ {
+ return "{ "
+ + "x:" + X + ","
+ + "y:" + Y + ","
+ + "z:" + Z + ","
+ + "}";
+ }
+}
+}
+
diff --git a/Assets/Gen/vector4.cs b/Assets/Gen/vector4.cs
new file mode 100644
index 0000000..915b4ad
--- /dev/null
+++ b/Assets/Gen/vector4.cs
@@ -0,0 +1,52 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using Luban;
+using SimpleJSON;
+
+
+namespace cfg
+{
+public partial struct vector4
+{
+ public vector4(JSONNode _buf)
+ {
+ { if(!_buf["x"].IsNumber) { throw new SerializationException(); } X = _buf["x"]; }
+ { if(!_buf["y"].IsNumber) { throw new SerializationException(); } Y = _buf["y"]; }
+ { if(!_buf["z"].IsNumber) { throw new SerializationException(); } Z = _buf["z"]; }
+ { if(!_buf["w"].IsNumber) { throw new SerializationException(); } W = _buf["w"]; }
+ }
+
+ public static vector4 Deserializevector4(JSONNode _buf)
+ {
+ return new vector4(_buf);
+ }
+
+ public readonly float X;
+ public readonly float Y;
+ public readonly float Z;
+ public readonly float W;
+
+
+ public void ResolveRef(Tables tables)
+ {
+ }
+
+ public override string ToString()
+ {
+ return "{ "
+ + "x:" + X + ","
+ + "y:" + Y + ","
+ + "z:" + Z + ","
+ + "w:" + W + ","
+ + "}";
+ }
+}
+}
+
diff --git a/BasicConfig.xlsx b/BasicConfig.xlsx
deleted file mode 100644
index cc00822..0000000
Binary files a/BasicConfig.xlsx and /dev/null differ
diff --git a/Datas/#Bait-鱼饵.xlsx b/Datas/#Bait-鱼饵.xlsx
new file mode 100644
index 0000000..87bfe18
Binary files /dev/null and b/Datas/#Bait-鱼饵.xlsx differ
diff --git a/Datas/#BasicConfig-全局常量配置表.xlsx b/Datas/#BasicConfig-全局常量配置表.xlsx
new file mode 100644
index 0000000..72ff493
Binary files /dev/null and b/Datas/#BasicConfig-全局常量配置表.xlsx differ
diff --git a/Datas/#Bobber-浮漂.xlsx b/Datas/#Bobber-浮漂.xlsx
new file mode 100644
index 0000000..8279666
Binary files /dev/null and b/Datas/#Bobber-浮漂.xlsx differ
diff --git a/Datas/#Feeder-菲德.xlsx b/Datas/#Feeder-菲德.xlsx
new file mode 100644
index 0000000..afcc85c
Binary files /dev/null and b/Datas/#Feeder-菲德.xlsx differ
diff --git a/Datas/#Fish-鱼.xlsx b/Datas/#Fish-鱼.xlsx
new file mode 100644
index 0000000..84fcb67
Binary files /dev/null and b/Datas/#Fish-鱼.xlsx differ
diff --git a/Datas/#Hook-鱼钩.xlsx b/Datas/#Hook-鱼钩.xlsx
new file mode 100644
index 0000000..75ba482
Binary files /dev/null and b/Datas/#Hook-鱼钩.xlsx differ
diff --git a/Datas/#InitItemConfig-初始物品表.xlsx b/Datas/#InitItemConfig-初始物品表.xlsx
new file mode 100644
index 0000000..5966179
Binary files /dev/null and b/Datas/#InitItemConfig-初始物品表.xlsx differ
diff --git a/Datas/#Item-物品表.xlsx b/Datas/#Item-物品表.xlsx
new file mode 100644
index 0000000..15abb58
Binary files /dev/null and b/Datas/#Item-物品表.xlsx differ
diff --git a/Datas/#Line-鱼线.xlsx b/Datas/#Line-鱼线.xlsx
new file mode 100644
index 0000000..fbae9c9
Binary files /dev/null and b/Datas/#Line-鱼线.xlsx differ
diff --git a/Datas/#Lure-路亚饵.xlsx b/Datas/#Lure-路亚饵.xlsx
new file mode 100644
index 0000000..bcab06b
Binary files /dev/null and b/Datas/#Lure-路亚饵.xlsx differ
diff --git a/Datas/#Reel-渔轮.xlsx b/Datas/#Reel-渔轮.xlsx
new file mode 100644
index 0000000..fc3e65e
Binary files /dev/null and b/Datas/#Reel-渔轮.xlsx differ
diff --git a/Datas/#Rod-鱼竿.xlsx b/Datas/#Rod-鱼竿.xlsx
new file mode 100644
index 0000000..1f4354f
Binary files /dev/null and b/Datas/#Rod-鱼竿.xlsx differ
diff --git a/Datas/__beans__.xlsx b/Datas/__beans__.xlsx
new file mode 100644
index 0000000..6fc990b
Binary files /dev/null and b/Datas/__beans__.xlsx differ
diff --git a/Datas/__enums__.xlsx b/Datas/__enums__.xlsx
new file mode 100644
index 0000000..a005698
Binary files /dev/null and b/Datas/__enums__.xlsx differ
diff --git a/Datas/__tables__.xlsx b/Datas/__tables__.xlsx
new file mode 100644
index 0000000..164c792
Binary files /dev/null and b/Datas/__tables__.xlsx differ
diff --git a/Defines/builtin.xml b/Defines/builtin.xml
new file mode 100644
index 0000000..e535ff4
--- /dev/null
+++ b/Defines/builtin.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/FishConfig.xlsx b/FishConfig.xlsx
deleted file mode 100644
index 608d6ec..0000000
Binary files a/FishConfig.xlsx and /dev/null differ
diff --git a/Gear.xlsx b/Gear.xlsx
deleted file mode 100644
index 689d6f8..0000000
Binary files a/Gear.xlsx and /dev/null differ
diff --git a/Item.xlsx b/Item.xlsx
deleted file mode 100644
index 73a5316..0000000
Binary files a/Item.xlsx and /dev/null differ
diff --git a/Luban/CommandLine.dll b/Luban/CommandLine.dll
new file mode 100644
index 0000000..3eab2be
Binary files /dev/null and b/Luban/CommandLine.dll differ
diff --git a/Luban/ExcelDataReader.dll b/Luban/ExcelDataReader.dll
new file mode 100644
index 0000000..c730b00
Binary files /dev/null and b/Luban/ExcelDataReader.dll differ
diff --git a/Luban/Google.Protobuf.dll b/Luban/Google.Protobuf.dll
new file mode 100644
index 0000000..3cd0950
Binary files /dev/null and b/Luban/Google.Protobuf.dll differ
diff --git a/Luban/Luban.Bson.deps.json b/Luban/Luban.Bson.deps.json
new file mode 100644
index 0000000..e2df5d0
--- /dev/null
+++ b/Luban/Luban.Bson.deps.json
@@ -0,0 +1,107 @@
+{
+ "runtimeTarget": {
+ "name": ".NETCoreApp,Version=v8.0",
+ "signature": ""
+ },
+ "compilationOptions": {},
+ "targets": {
+ ".NETCoreApp,Version=v8.0": {
+ "Luban.Bson/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0",
+ "Newtonsoft.Json.Bson": "1.0.3"
+ },
+ "runtime": {
+ "Luban.Bson.dll": {}
+ }
+ },
+ "Newtonsoft.Json/13.0.1": {
+ "runtime": {
+ "lib/netstandard2.0/Newtonsoft.Json.dll": {
+ "assemblyVersion": "13.0.0.0",
+ "fileVersion": "13.0.1.25517"
+ }
+ }
+ },
+ "Newtonsoft.Json.Bson/1.0.3": {
+ "dependencies": {
+ "Newtonsoft.Json": "13.0.1"
+ },
+ "runtime": {
+ "lib/netstandard2.0/Newtonsoft.Json.Bson.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.3.29904"
+ }
+ }
+ },
+ "NLog/5.3.4": {
+ "runtime": {
+ "lib/netstandard2.0/NLog.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.3.4.2778"
+ }
+ }
+ },
+ "Scriban/5.12.0": {
+ "runtime": {
+ "lib/net7.0/Scriban.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.12.0.0"
+ }
+ }
+ },
+ "Luban.Core/1.0.0": {
+ "dependencies": {
+ "NLog": "5.3.4",
+ "Scriban": "5.12.0"
+ },
+ "runtime": {
+ "Luban.Core.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ }
+ }
+ },
+ "libraries": {
+ "Luban.Bson/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Newtonsoft.Json/13.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==",
+ "path": "newtonsoft.json/13.0.1",
+ "hashPath": "newtonsoft.json.13.0.1.nupkg.sha512"
+ },
+ "Newtonsoft.Json.Bson/1.0.3": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-bCcwagnHfYnhwQfY1criEcn6Hy9PtBuVnZu0pA8hmRhuR3jI/8WxVgoVAdNw9BJ3JHkxmWJzpj/AQy+PMMLqxg==",
+ "path": "newtonsoft.json.bson/1.0.3",
+ "hashPath": "newtonsoft.json.bson.1.0.3.nupkg.sha512"
+ },
+ "NLog/5.3.4": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-gLy7+O1hEYJXIlcTr1/VWjGXrZTQFZzYNO18IWasD64pNwz0BreV+nHLxWKXWZzERRzoKnsk2XYtwLkTVk7J1A==",
+ "path": "nlog/5.3.4",
+ "hashPath": "nlog.5.3.4.nupkg.sha512"
+ },
+ "Scriban/5.12.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-/YTTCxjBIpfwX3MKMT4JMFVl1jX4IHW7zih+Bg3cTIkzGnbFt+B3l/k90ILDw6DRiFE7T+VxEyls7zk4p029ng==",
+ "path": "scriban/5.12.0",
+ "hashPath": "scriban.5.12.0.nupkg.sha512"
+ },
+ "Luban.Core/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/Luban/Luban.Bson.dll b/Luban/Luban.Bson.dll
new file mode 100644
index 0000000..f0ac039
Binary files /dev/null and b/Luban/Luban.Bson.dll differ
diff --git a/Luban/Luban.Bson.pdb b/Luban/Luban.Bson.pdb
new file mode 100644
index 0000000..f66e260
Binary files /dev/null and b/Luban/Luban.Bson.pdb differ
diff --git a/Luban/Luban.CSharp.deps.json b/Luban/Luban.CSharp.deps.json
new file mode 100644
index 0000000..fdab829
--- /dev/null
+++ b/Luban/Luban.CSharp.deps.json
@@ -0,0 +1,73 @@
+{
+ "runtimeTarget": {
+ "name": ".NETCoreApp,Version=v8.0",
+ "signature": ""
+ },
+ "compilationOptions": {},
+ "targets": {
+ ".NETCoreApp,Version=v8.0": {
+ "Luban.CSharp/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0",
+ "Luban.DataValidator.Builtin": "1.0.0"
+ },
+ "runtime": {
+ "Luban.CSharp.dll": {}
+ }
+ },
+ "NLog/5.3.4": {
+ "runtime": {
+ "lib/netstandard2.0/NLog.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.3.4.2778"
+ }
+ }
+ },
+ "Scriban/5.12.0": {
+ "runtime": {
+ "lib/net7.0/Scriban.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.12.0.0"
+ }
+ }
+ },
+ "Luban.DataValidator.Builtin/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0"
+ },
+ "runtime": {
+ "Luban.DataValidator.Builtin.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ }
+ }
+ },
+ "libraries": {
+ "Luban.CSharp/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "NLog/5.3.4": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-gLy7+O1hEYJXIlcTr1/VWjGXrZTQFZzYNO18IWasD64pNwz0BreV+nHLxWKXWZzERRzoKnsk2XYtwLkTVk7J1A==",
+ "path": "nlog/5.3.4",
+ "hashPath": "nlog.5.3.4.nupkg.sha512"
+ },
+ "Scriban/5.12.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-/YTTCxjBIpfwX3MKMT4JMFVl1jX4IHW7zih+Bg3cTIkzGnbFt+B3l/k90ILDw6DRiFE7T+VxEyls7zk4p029ng==",
+ "path": "scriban/5.12.0",
+ "hashPath": "scriban.5.12.0.nupkg.sha512"
+ },
+ "Luban.DataValidator.Builtin/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/Luban/Luban.CSharp.dll b/Luban/Luban.CSharp.dll
new file mode 100644
index 0000000..8922928
Binary files /dev/null and b/Luban/Luban.CSharp.dll differ
diff --git a/Luban/Luban.CSharp.pdb b/Luban/Luban.CSharp.pdb
new file mode 100644
index 0000000..44b074c
Binary files /dev/null and b/Luban/Luban.CSharp.pdb differ
diff --git a/Luban/Luban.Core.deps.json b/Luban/Luban.Core.deps.json
new file mode 100644
index 0000000..03f0487
--- /dev/null
+++ b/Luban/Luban.Core.deps.json
@@ -0,0 +1,57 @@
+{
+ "runtimeTarget": {
+ "name": ".NETCoreApp,Version=v8.0",
+ "signature": ""
+ },
+ "compilationOptions": {},
+ "targets": {
+ ".NETCoreApp,Version=v8.0": {
+ "Luban.Core/1.0.0": {
+ "dependencies": {
+ "NLog": "5.3.4",
+ "Scriban": "5.12.0"
+ },
+ "runtime": {
+ "Luban.Core.dll": {}
+ }
+ },
+ "NLog/5.3.4": {
+ "runtime": {
+ "lib/netstandard2.0/NLog.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.3.4.2778"
+ }
+ }
+ },
+ "Scriban/5.12.0": {
+ "runtime": {
+ "lib/net7.0/Scriban.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.12.0.0"
+ }
+ }
+ }
+ }
+ },
+ "libraries": {
+ "Luban.Core/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "NLog/5.3.4": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-gLy7+O1hEYJXIlcTr1/VWjGXrZTQFZzYNO18IWasD64pNwz0BreV+nHLxWKXWZzERRzoKnsk2XYtwLkTVk7J1A==",
+ "path": "nlog/5.3.4",
+ "hashPath": "nlog.5.3.4.nupkg.sha512"
+ },
+ "Scriban/5.12.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-/YTTCxjBIpfwX3MKMT4JMFVl1jX4IHW7zih+Bg3cTIkzGnbFt+B3l/k90ILDw6DRiFE7T+VxEyls7zk4p029ng==",
+ "path": "scriban/5.12.0",
+ "hashPath": "scriban.5.12.0.nupkg.sha512"
+ }
+ }
+}
\ No newline at end of file
diff --git a/Luban/Luban.Core.dll b/Luban/Luban.Core.dll
new file mode 100644
index 0000000..ca4bf9d
Binary files /dev/null and b/Luban/Luban.Core.dll differ
diff --git a/Luban/Luban.Core.pdb b/Luban/Luban.Core.pdb
new file mode 100644
index 0000000..d12ceec
Binary files /dev/null and b/Luban/Luban.Core.pdb differ
diff --git a/Luban/Luban.Cpp.deps.json b/Luban/Luban.Cpp.deps.json
new file mode 100644
index 0000000..f01523e
--- /dev/null
+++ b/Luban/Luban.Cpp.deps.json
@@ -0,0 +1,73 @@
+{
+ "runtimeTarget": {
+ "name": ".NETCoreApp,Version=v8.0",
+ "signature": ""
+ },
+ "compilationOptions": {},
+ "targets": {
+ ".NETCoreApp,Version=v8.0": {
+ "Luban.Cpp/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0"
+ },
+ "runtime": {
+ "Luban.Cpp.dll": {}
+ }
+ },
+ "NLog/5.3.4": {
+ "runtime": {
+ "lib/netstandard2.0/NLog.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.3.4.2778"
+ }
+ }
+ },
+ "Scriban/5.12.0": {
+ "runtime": {
+ "lib/net7.0/Scriban.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.12.0.0"
+ }
+ }
+ },
+ "Luban.Core/1.0.0": {
+ "dependencies": {
+ "NLog": "5.3.4",
+ "Scriban": "5.12.0"
+ },
+ "runtime": {
+ "Luban.Core.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ }
+ }
+ },
+ "libraries": {
+ "Luban.Cpp/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "NLog/5.3.4": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-gLy7+O1hEYJXIlcTr1/VWjGXrZTQFZzYNO18IWasD64pNwz0BreV+nHLxWKXWZzERRzoKnsk2XYtwLkTVk7J1A==",
+ "path": "nlog/5.3.4",
+ "hashPath": "nlog.5.3.4.nupkg.sha512"
+ },
+ "Scriban/5.12.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-/YTTCxjBIpfwX3MKMT4JMFVl1jX4IHW7zih+Bg3cTIkzGnbFt+B3l/k90ILDw6DRiFE7T+VxEyls7zk4p029ng==",
+ "path": "scriban/5.12.0",
+ "hashPath": "scriban.5.12.0.nupkg.sha512"
+ },
+ "Luban.Core/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/Luban/Luban.Cpp.dll b/Luban/Luban.Cpp.dll
new file mode 100644
index 0000000..8299105
Binary files /dev/null and b/Luban/Luban.Cpp.dll differ
diff --git a/Luban/Luban.Cpp.pdb b/Luban/Luban.Cpp.pdb
new file mode 100644
index 0000000..bb6a781
Binary files /dev/null and b/Luban/Luban.Cpp.pdb differ
diff --git a/Luban/Luban.Dart.deps.json b/Luban/Luban.Dart.deps.json
new file mode 100644
index 0000000..a9857b1
--- /dev/null
+++ b/Luban/Luban.Dart.deps.json
@@ -0,0 +1,73 @@
+{
+ "runtimeTarget": {
+ "name": ".NETCoreApp,Version=v8.0",
+ "signature": ""
+ },
+ "compilationOptions": {},
+ "targets": {
+ ".NETCoreApp,Version=v8.0": {
+ "Luban.Dart/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0"
+ },
+ "runtime": {
+ "Luban.Dart.dll": {}
+ }
+ },
+ "NLog/5.3.4": {
+ "runtime": {
+ "lib/netstandard2.0/NLog.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.3.4.2778"
+ }
+ }
+ },
+ "Scriban/5.12.0": {
+ "runtime": {
+ "lib/net7.0/Scriban.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.12.0.0"
+ }
+ }
+ },
+ "Luban.Core/1.0.0": {
+ "dependencies": {
+ "NLog": "5.3.4",
+ "Scriban": "5.12.0"
+ },
+ "runtime": {
+ "Luban.Core.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ }
+ }
+ },
+ "libraries": {
+ "Luban.Dart/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "NLog/5.3.4": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-gLy7+O1hEYJXIlcTr1/VWjGXrZTQFZzYNO18IWasD64pNwz0BreV+nHLxWKXWZzERRzoKnsk2XYtwLkTVk7J1A==",
+ "path": "nlog/5.3.4",
+ "hashPath": "nlog.5.3.4.nupkg.sha512"
+ },
+ "Scriban/5.12.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-/YTTCxjBIpfwX3MKMT4JMFVl1jX4IHW7zih+Bg3cTIkzGnbFt+B3l/k90ILDw6DRiFE7T+VxEyls7zk4p029ng==",
+ "path": "scriban/5.12.0",
+ "hashPath": "scriban.5.12.0.nupkg.sha512"
+ },
+ "Luban.Core/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/Luban/Luban.Dart.dll b/Luban/Luban.Dart.dll
new file mode 100644
index 0000000..34cca6e
Binary files /dev/null and b/Luban/Luban.Dart.dll differ
diff --git a/Luban/Luban.Dart.pdb b/Luban/Luban.Dart.pdb
new file mode 100644
index 0000000..2ded607
Binary files /dev/null and b/Luban/Luban.Dart.pdb differ
diff --git a/Luban/Luban.DataLoader.Builtin.deps.json b/Luban/Luban.DataLoader.Builtin.deps.json
new file mode 100644
index 0000000..62beda5
--- /dev/null
+++ b/Luban/Luban.DataLoader.Builtin.deps.json
@@ -0,0 +1,547 @@
+{
+ "runtimeTarget": {
+ "name": ".NETCoreApp,Version=v8.0",
+ "signature": ""
+ },
+ "compilationOptions": {},
+ "targets": {
+ ".NETCoreApp,Version=v8.0": {
+ "Luban.DataLoader.Builtin/1.0.0": {
+ "dependencies": {
+ "ExcelDataReader": "3.7.0",
+ "Luban.Core": "1.0.0",
+ "NeoLua": "1.3.14",
+ "Ude.NetStandard": "1.2.0",
+ "YamlDotNet.NetCore": "1.0.0"
+ },
+ "runtime": {
+ "Luban.DataLoader.Builtin.dll": {}
+ }
+ },
+ "ExcelDataReader/3.7.0": {
+ "runtime": {
+ "lib/netstandard2.1/ExcelDataReader.dll": {
+ "assemblyVersion": "3.7.0.0",
+ "fileVersion": "3.7.0.0"
+ }
+ }
+ },
+ "Microsoft.CSharp/4.5.0": {},
+ "Microsoft.NETCore.Platforms/1.0.1": {},
+ "Microsoft.NETCore.Targets/1.0.1": {},
+ "NeoLua/1.3.14": {
+ "dependencies": {
+ "Microsoft.CSharp": "4.5.0"
+ },
+ "runtime": {
+ "lib/net5.0/Neo.Lua.dll": {
+ "assemblyVersion": "5.3.0.0",
+ "fileVersion": "1.3.14.0"
+ }
+ },
+ "resources": {
+ "lib/net5.0/de/Neo.Lua.resources.dll": {
+ "locale": "de"
+ }
+ }
+ },
+ "NLog/5.3.4": {
+ "runtime": {
+ "lib/netstandard2.0/NLog.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.3.4.2778"
+ }
+ }
+ },
+ "Scriban/5.12.0": {
+ "runtime": {
+ "lib/net7.0/Scriban.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.12.0.0"
+ }
+ }
+ },
+ "System.Collections/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Diagnostics.Debug/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Diagnostics.Tools/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Globalization/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.IO/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Text.Encoding": "4.0.11",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.Linq/4.1.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0"
+ }
+ },
+ "System.Linq.Expressions/4.1.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Globalization": "4.0.11",
+ "System.IO": "4.1.0",
+ "System.Linq": "4.1.0",
+ "System.ObjectModel": "4.0.12",
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit": "4.0.1",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Emit.Lightweight": "4.0.1",
+ "System.Reflection.Extensions": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Reflection.TypeExtensions": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.ObjectModel/4.0.12": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.Reflection/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.IO": "4.1.0",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit/4.0.1": {
+ "dependencies": {
+ "System.IO": "4.1.0",
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit.ILGeneration/4.0.1": {
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit.Lightweight/4.0.1": {
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Extensions/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Primitives/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.TypeExtensions/4.1.0": {
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Resources.ResourceManager/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Globalization": "4.0.11",
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Runtime/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1"
+ }
+ },
+ "System.Runtime.Extensions/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Runtime.Serialization.Primitives/4.1.1": {
+ "dependencies": {
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Text.Encoding/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Text.Encoding.Extensions/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Text.Encoding": "4.0.11"
+ }
+ },
+ "System.Text.RegularExpressions/4.1.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Globalization": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.Threading/4.0.11": {
+ "dependencies": {
+ "System.Runtime": "4.1.0",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.Threading.Tasks/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "Ude.NetStandard/1.2.0": {
+ "runtime": {
+ "lib/netstandard2.0/Ude.NetStandard.dll": {
+ "assemblyVersion": "1.0.2.0",
+ "fileVersion": "1.0.2.0"
+ }
+ }
+ },
+ "YamlDotNet.NetCore/1.0.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Diagnostics.Tools": "4.0.1",
+ "System.Globalization": "4.0.11",
+ "System.Linq": "4.1.0",
+ "System.Linq.Expressions": "4.1.0",
+ "System.ObjectModel": "4.0.12",
+ "System.Reflection.Extensions": "4.0.1",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Runtime.Serialization.Primitives": "4.1.1",
+ "System.Text.Encoding.Extensions": "4.0.11",
+ "System.Text.RegularExpressions": "4.1.0"
+ },
+ "runtime": {
+ "lib/netstandard1.0/YamlDotNet.NetCore.dll": {
+ "assemblyVersion": "0.0.1.0",
+ "fileVersion": "0.0.0.0"
+ }
+ }
+ },
+ "Luban.Core/1.0.0": {
+ "dependencies": {
+ "NLog": "5.3.4",
+ "Scriban": "5.12.0"
+ },
+ "runtime": {
+ "Luban.Core.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ }
+ }
+ },
+ "libraries": {
+ "Luban.DataLoader.Builtin/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "ExcelDataReader/3.7.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-AMv3oDETRHSRyXC17rBtKH45qIfFyo433LMeaMB3u4RNr/c9Luuc0Z+JMP6+3Cx9n4wXqFqcrEIVxrf/GgYnZg==",
+ "path": "exceldatareader/3.7.0",
+ "hashPath": "exceldatareader.3.7.0.nupkg.sha512"
+ },
+ "Microsoft.CSharp/4.5.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-kaj6Wb4qoMuH3HySFJhxwQfe8R/sJsNJnANrvv8WdFPMoNbKY5htfNscv+LHCu5ipz+49m2e+WQXpLXr9XYemQ==",
+ "path": "microsoft.csharp/4.5.0",
+ "hashPath": "microsoft.csharp.4.5.0.nupkg.sha512"
+ },
+ "Microsoft.NETCore.Platforms/1.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-2G6OjjJzwBfNOO8myRV/nFrbTw5iA+DEm0N+qUqhrOmaVtn4pC77h38I1jsXGw5VH55+dPfQsqHD0We9sCl9FQ==",
+ "path": "microsoft.netcore.platforms/1.0.1",
+ "hashPath": "microsoft.netcore.platforms.1.0.1.nupkg.sha512"
+ },
+ "Microsoft.NETCore.Targets/1.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-rkn+fKobF/cbWfnnfBOQHKVKIOpxMZBvlSHkqDWgBpwGDcLRduvs3D9OLGeV6GWGvVwNlVi2CBbTjuPmtHvyNw==",
+ "path": "microsoft.netcore.targets/1.0.1",
+ "hashPath": "microsoft.netcore.targets.1.0.1.nupkg.sha512"
+ },
+ "NeoLua/1.3.14": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-BXIUN+ePY2wx3ZGiSmR8KZKD85s01pXI690orrB3u/biB8R0nalziGw+iGbPBq1Cuz8Upggpw2ERF84POXWTCQ==",
+ "path": "neolua/1.3.14",
+ "hashPath": "neolua.1.3.14.nupkg.sha512"
+ },
+ "NLog/5.3.4": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-gLy7+O1hEYJXIlcTr1/VWjGXrZTQFZzYNO18IWasD64pNwz0BreV+nHLxWKXWZzERRzoKnsk2XYtwLkTVk7J1A==",
+ "path": "nlog/5.3.4",
+ "hashPath": "nlog.5.3.4.nupkg.sha512"
+ },
+ "Scriban/5.12.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-/YTTCxjBIpfwX3MKMT4JMFVl1jX4IHW7zih+Bg3cTIkzGnbFt+B3l/k90ILDw6DRiFE7T+VxEyls7zk4p029ng==",
+ "path": "scriban/5.12.0",
+ "hashPath": "scriban.5.12.0.nupkg.sha512"
+ },
+ "System.Collections/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-YUJGz6eFKqS0V//mLt25vFGrrCvOnsXjlvFQs+KimpwNxug9x0Pzy4PlFMU3Q2IzqAa9G2L4LsK3+9vCBK7oTg==",
+ "path": "system.collections/4.0.11",
+ "hashPath": "system.collections.4.0.11.nupkg.sha512"
+ },
+ "System.Diagnostics.Debug/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-w5U95fVKHY4G8ASs/K5iK3J5LY+/dLFd4vKejsnI/ZhBsWS9hQakfx3Zr7lRWKg4tAw9r4iktyvsTagWkqYCiw==",
+ "path": "system.diagnostics.debug/4.0.11",
+ "hashPath": "system.diagnostics.debug.4.0.11.nupkg.sha512"
+ },
+ "System.Diagnostics.Tools/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-xBfJ8pnd4C17dWaC9FM6aShzbJcRNMChUMD42I6772KGGrqaFdumwhn9OdM68erj1ueNo3xdQ1EwiFjK5k8p0g==",
+ "path": "system.diagnostics.tools/4.0.1",
+ "hashPath": "system.diagnostics.tools.4.0.1.nupkg.sha512"
+ },
+ "System.Globalization/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-B95h0YLEL2oSnwF/XjqSWKnwKOy/01VWkNlsCeMTFJLLabflpGV26nK164eRs5GiaRSBGpOxQ3pKoSnnyZN5pg==",
+ "path": "system.globalization/4.0.11",
+ "hashPath": "system.globalization.4.0.11.nupkg.sha512"
+ },
+ "System.IO/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-3KlTJceQc3gnGIaHZ7UBZO26SHL1SHE4ddrmiwumFnId+CEHP+O8r386tZKaE6zlk5/mF8vifMBzHj9SaXN+mQ==",
+ "path": "system.io/4.1.0",
+ "hashPath": "system.io.4.1.0.nupkg.sha512"
+ },
+ "System.Linq/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-bQ0iYFOQI0nuTnt+NQADns6ucV4DUvMdwN6CbkB1yj8i7arTGiTN5eok1kQwdnnNWSDZfIUySQY+J3d5KjWn0g==",
+ "path": "system.linq/4.1.0",
+ "hashPath": "system.linq.4.1.0.nupkg.sha512"
+ },
+ "System.Linq.Expressions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-I+y02iqkgmCAyfbqOmSDOgqdZQ5tTj80Akm5BPSS8EeB0VGWdy6X1KCoYe8Pk6pwDoAKZUOdLVxnTJcExiv5zw==",
+ "path": "system.linq.expressions/4.1.0",
+ "hashPath": "system.linq.expressions.4.1.0.nupkg.sha512"
+ },
+ "System.ObjectModel/4.0.12": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-tAgJM1xt3ytyMoW4qn4wIqgJYm7L7TShRZG4+Q4Qsi2PCcj96pXN7nRywS9KkB3p/xDUjc2HSwP9SROyPYDYKQ==",
+ "path": "system.objectmodel/4.0.12",
+ "hashPath": "system.objectmodel.4.0.12.nupkg.sha512"
+ },
+ "System.Reflection/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-JCKANJ0TI7kzoQzuwB/OoJANy1Lg338B6+JVacPl4TpUwi3cReg3nMLplMq2uqYfHFQpKIlHAUVAJlImZz/4ng==",
+ "path": "system.reflection/4.1.0",
+ "hashPath": "system.reflection.4.1.0.nupkg.sha512"
+ },
+ "System.Reflection.Emit/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-P2wqAj72fFjpP6wb9nSfDqNBMab+2ovzSDzUZK7MVIm54tBJEPr9jWfSjjoTpPwj1LeKcmX3vr0ttyjSSFM47g==",
+ "path": "system.reflection.emit/4.0.1",
+ "hashPath": "system.reflection.emit.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Emit.ILGeneration/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-Ov6dU8Bu15Bc7zuqttgHF12J5lwSWyTf1S+FJouUXVMSqImLZzYaQ+vRr1rQ0OZ0HqsrwWl4dsKHELckQkVpgA==",
+ "path": "system.reflection.emit.ilgeneration/4.0.1",
+ "hashPath": "system.reflection.emit.ilgeneration.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Emit.Lightweight/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-sSzHHXueZ5Uh0OLpUQprhr+ZYJrLPA2Cmr4gn0wj9+FftNKXx8RIMKvO9qnjk2ebPYUjZ+F2ulGdPOsvj+MEjA==",
+ "path": "system.reflection.emit.lightweight/4.0.1",
+ "hashPath": "system.reflection.emit.lightweight.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Extensions/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-GYrtRsZcMuHF3sbmRHfMYpvxZoIN2bQGrYGerUiWLEkqdEUQZhH3TRSaC/oI4wO0II1RKBPlpIa1TOMxIcOOzQ==",
+ "path": "system.reflection.extensions/4.0.1",
+ "hashPath": "system.reflection.extensions.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Primitives/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-4inTox4wTBaDhB7V3mPvp9XlCbeGYWVEM9/fXALd52vNEAVisc1BoVWQPuUuD0Ga//dNbA/WeMy9u9mzLxGTHQ==",
+ "path": "system.reflection.primitives/4.0.1",
+ "hashPath": "system.reflection.primitives.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.TypeExtensions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-tsQ/ptQ3H5FYfON8lL4MxRk/8kFyE0A+tGPXmVP967cT/gzLHYxIejIYSxp4JmIeFHVP78g/F2FE1mUUTbDtrg==",
+ "path": "system.reflection.typeextensions/4.1.0",
+ "hashPath": "system.reflection.typeextensions.4.1.0.nupkg.sha512"
+ },
+ "System.Resources.ResourceManager/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-TxwVeUNoTgUOdQ09gfTjvW411MF+w9MBYL7AtNVc+HtBCFlutPLhUCdZjNkjbhj3bNQWMdHboF0KIWEOjJssbA==",
+ "path": "system.resources.resourcemanager/4.0.1",
+ "hashPath": "system.resources.resourcemanager.4.0.1.nupkg.sha512"
+ },
+ "System.Runtime/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-v6c/4Yaa9uWsq+JMhnOFewrYkgdNHNG2eMKuNqRn8P733rNXeRCGvV5FkkjBXn2dbVkPXOsO0xjsEeM1q2zC0g==",
+ "path": "system.runtime/4.1.0",
+ "hashPath": "system.runtime.4.1.0.nupkg.sha512"
+ },
+ "System.Runtime.Extensions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-CUOHjTT/vgP0qGW22U4/hDlOqXmcPq5YicBaXdUR2UiUoLwBT+olO6we4DVbq57jeX5uXH2uerVZhf0qGj+sVQ==",
+ "path": "system.runtime.extensions/4.1.0",
+ "hashPath": "system.runtime.extensions.4.1.0.nupkg.sha512"
+ },
+ "System.Runtime.Serialization.Primitives/4.1.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-HZ6Du5QrTG8MNJbf4e4qMO3JRAkIboGT5Fk804uZtg3Gq516S7hAqTm2UZKUHa7/6HUGdVy3AqMQKbns06G/cg==",
+ "path": "system.runtime.serialization.primitives/4.1.1",
+ "hashPath": "system.runtime.serialization.primitives.4.1.1.nupkg.sha512"
+ },
+ "System.Text.Encoding/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-U3gGeMlDZXxCEiY4DwVLSacg+DFWCvoiX+JThA/rvw37Sqrku7sEFeVBBBMBnfB6FeZHsyDx85HlKL19x0HtZA==",
+ "path": "system.text.encoding/4.0.11",
+ "hashPath": "system.text.encoding.4.0.11.nupkg.sha512"
+ },
+ "System.Text.Encoding.Extensions/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-jtbiTDtvfLYgXn8PTfWI+SiBs51rrmO4AAckx4KR6vFK9Wzf6tI8kcRdsYQNwriUeQ1+CtQbM1W4cMbLXnj/OQ==",
+ "path": "system.text.encoding.extensions/4.0.11",
+ "hashPath": "system.text.encoding.extensions.4.0.11.nupkg.sha512"
+ },
+ "System.Text.RegularExpressions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-i88YCXpRTjCnoSQZtdlHkAOx4KNNik4hMy83n0+Ftlb7jvV6ZiZWMpnEZHhjBp6hQVh8gWd/iKNPzlPF7iyA2g==",
+ "path": "system.text.regularexpressions/4.1.0",
+ "hashPath": "system.text.regularexpressions.4.1.0.nupkg.sha512"
+ },
+ "System.Threading/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-N+3xqIcg3VDKyjwwCGaZ9HawG9aC6cSDI+s7ROma310GQo8vilFZa86hqKppwTHleR/G0sfOzhvgnUxWCR/DrQ==",
+ "path": "system.threading/4.0.11",
+ "hashPath": "system.threading.4.0.11.nupkg.sha512"
+ },
+ "System.Threading.Tasks/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-k1S4Gc6IGwtHGT8188RSeGaX86Qw/wnrgNLshJvsdNUOPP9etMmo8S07c+UlOAx4K/xLuN9ivA1bD0LVurtIxQ==",
+ "path": "system.threading.tasks/4.0.11",
+ "hashPath": "system.threading.tasks.4.0.11.nupkg.sha512"
+ },
+ "Ude.NetStandard/1.2.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-zRWpPAxBg3lNdm4UiKixTe+DFPoNid9CILggTCy/0WR2WKETe17kTWhiiIpLB2k5IEgnvA0QLfKlvd6Tvu0pzA==",
+ "path": "ude.netstandard/1.2.0",
+ "hashPath": "ude.netstandard.1.2.0.nupkg.sha512"
+ },
+ "YamlDotNet.NetCore/1.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-vPiKF4Yf02MS96Nzwcr8+WrvlhTx+camOgUzxhazU0hCzs2ESetWDCxaIT/MYdAw2oONYem1ow9PXWJjHkRUDw==",
+ "path": "yamldotnet.netcore/1.0.0",
+ "hashPath": "yamldotnet.netcore.1.0.0.nupkg.sha512"
+ },
+ "Luban.Core/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/Luban/Luban.DataLoader.Builtin.dll b/Luban/Luban.DataLoader.Builtin.dll
new file mode 100644
index 0000000..5c4db85
Binary files /dev/null and b/Luban/Luban.DataLoader.Builtin.dll differ
diff --git a/Luban/Luban.DataLoader.Builtin.pdb b/Luban/Luban.DataLoader.Builtin.pdb
new file mode 100644
index 0000000..5725f13
Binary files /dev/null and b/Luban/Luban.DataLoader.Builtin.pdb differ
diff --git a/Luban/Luban.DataTarget.Builtin.deps.json b/Luban/Luban.DataTarget.Builtin.deps.json
new file mode 100644
index 0000000..45659dd
--- /dev/null
+++ b/Luban/Luban.DataTarget.Builtin.deps.json
@@ -0,0 +1,564 @@
+{
+ "runtimeTarget": {
+ "name": ".NETCoreApp,Version=v8.0",
+ "signature": ""
+ },
+ "compilationOptions": {},
+ "targets": {
+ ".NETCoreApp,Version=v8.0": {
+ "Luban.DataTarget.Builtin/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0",
+ "Luban.DataLoader.Builtin": "1.0.0"
+ },
+ "runtime": {
+ "Luban.DataTarget.Builtin.dll": {}
+ }
+ },
+ "ExcelDataReader/3.7.0": {
+ "runtime": {
+ "lib/netstandard2.1/ExcelDataReader.dll": {
+ "assemblyVersion": "3.7.0.0",
+ "fileVersion": "3.7.0.0"
+ }
+ }
+ },
+ "Microsoft.CSharp/4.5.0": {},
+ "Microsoft.NETCore.Platforms/1.0.1": {},
+ "Microsoft.NETCore.Targets/1.0.1": {},
+ "NeoLua/1.3.14": {
+ "dependencies": {
+ "Microsoft.CSharp": "4.5.0"
+ },
+ "runtime": {
+ "lib/net5.0/Neo.Lua.dll": {
+ "assemblyVersion": "5.3.0.0",
+ "fileVersion": "1.3.14.0"
+ }
+ },
+ "resources": {
+ "lib/net5.0/de/Neo.Lua.resources.dll": {
+ "locale": "de"
+ }
+ }
+ },
+ "NLog/5.3.4": {
+ "runtime": {
+ "lib/netstandard2.0/NLog.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.3.4.2778"
+ }
+ }
+ },
+ "Scriban/5.12.0": {
+ "runtime": {
+ "lib/net7.0/Scriban.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.12.0.0"
+ }
+ }
+ },
+ "System.Collections/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Diagnostics.Debug/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Diagnostics.Tools/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Globalization/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.IO/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Text.Encoding": "4.0.11",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.Linq/4.1.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0"
+ }
+ },
+ "System.Linq.Expressions/4.1.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Globalization": "4.0.11",
+ "System.IO": "4.1.0",
+ "System.Linq": "4.1.0",
+ "System.ObjectModel": "4.0.12",
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit": "4.0.1",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Emit.Lightweight": "4.0.1",
+ "System.Reflection.Extensions": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Reflection.TypeExtensions": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.ObjectModel/4.0.12": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.Reflection/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.IO": "4.1.0",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit/4.0.1": {
+ "dependencies": {
+ "System.IO": "4.1.0",
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit.ILGeneration/4.0.1": {
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit.Lightweight/4.0.1": {
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Extensions/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Primitives/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.TypeExtensions/4.1.0": {
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Resources.ResourceManager/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Globalization": "4.0.11",
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Runtime/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1"
+ }
+ },
+ "System.Runtime.Extensions/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Runtime.Serialization.Primitives/4.1.1": {
+ "dependencies": {
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Text.Encoding/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Text.Encoding.Extensions/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Text.Encoding": "4.0.11"
+ }
+ },
+ "System.Text.RegularExpressions/4.1.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Globalization": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.Threading/4.0.11": {
+ "dependencies": {
+ "System.Runtime": "4.1.0",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.Threading.Tasks/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "Ude.NetStandard/1.2.0": {
+ "runtime": {
+ "lib/netstandard2.0/Ude.NetStandard.dll": {
+ "assemblyVersion": "1.0.2.0",
+ "fileVersion": "1.0.2.0"
+ }
+ }
+ },
+ "YamlDotNet.NetCore/1.0.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Diagnostics.Tools": "4.0.1",
+ "System.Globalization": "4.0.11",
+ "System.Linq": "4.1.0",
+ "System.Linq.Expressions": "4.1.0",
+ "System.ObjectModel": "4.0.12",
+ "System.Reflection.Extensions": "4.0.1",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Runtime.Serialization.Primitives": "4.1.1",
+ "System.Text.Encoding.Extensions": "4.0.11",
+ "System.Text.RegularExpressions": "4.1.0"
+ },
+ "runtime": {
+ "lib/netstandard1.0/YamlDotNet.NetCore.dll": {
+ "assemblyVersion": "0.0.1.0",
+ "fileVersion": "0.0.0.0"
+ }
+ }
+ },
+ "Luban.Core/1.0.0": {
+ "dependencies": {
+ "NLog": "5.3.4",
+ "Scriban": "5.12.0"
+ },
+ "runtime": {
+ "Luban.Core.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Luban.DataLoader.Builtin/1.0.0": {
+ "dependencies": {
+ "ExcelDataReader": "3.7.0",
+ "Luban.Core": "1.0.0",
+ "NeoLua": "1.3.14",
+ "Ude.NetStandard": "1.2.0",
+ "YamlDotNet.NetCore": "1.0.0"
+ },
+ "runtime": {
+ "Luban.DataLoader.Builtin.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ }
+ }
+ },
+ "libraries": {
+ "Luban.DataTarget.Builtin/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "ExcelDataReader/3.7.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-AMv3oDETRHSRyXC17rBtKH45qIfFyo433LMeaMB3u4RNr/c9Luuc0Z+JMP6+3Cx9n4wXqFqcrEIVxrf/GgYnZg==",
+ "path": "exceldatareader/3.7.0",
+ "hashPath": "exceldatareader.3.7.0.nupkg.sha512"
+ },
+ "Microsoft.CSharp/4.5.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-kaj6Wb4qoMuH3HySFJhxwQfe8R/sJsNJnANrvv8WdFPMoNbKY5htfNscv+LHCu5ipz+49m2e+WQXpLXr9XYemQ==",
+ "path": "microsoft.csharp/4.5.0",
+ "hashPath": "microsoft.csharp.4.5.0.nupkg.sha512"
+ },
+ "Microsoft.NETCore.Platforms/1.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-2G6OjjJzwBfNOO8myRV/nFrbTw5iA+DEm0N+qUqhrOmaVtn4pC77h38I1jsXGw5VH55+dPfQsqHD0We9sCl9FQ==",
+ "path": "microsoft.netcore.platforms/1.0.1",
+ "hashPath": "microsoft.netcore.platforms.1.0.1.nupkg.sha512"
+ },
+ "Microsoft.NETCore.Targets/1.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-rkn+fKobF/cbWfnnfBOQHKVKIOpxMZBvlSHkqDWgBpwGDcLRduvs3D9OLGeV6GWGvVwNlVi2CBbTjuPmtHvyNw==",
+ "path": "microsoft.netcore.targets/1.0.1",
+ "hashPath": "microsoft.netcore.targets.1.0.1.nupkg.sha512"
+ },
+ "NeoLua/1.3.14": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-BXIUN+ePY2wx3ZGiSmR8KZKD85s01pXI690orrB3u/biB8R0nalziGw+iGbPBq1Cuz8Upggpw2ERF84POXWTCQ==",
+ "path": "neolua/1.3.14",
+ "hashPath": "neolua.1.3.14.nupkg.sha512"
+ },
+ "NLog/5.3.4": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-gLy7+O1hEYJXIlcTr1/VWjGXrZTQFZzYNO18IWasD64pNwz0BreV+nHLxWKXWZzERRzoKnsk2XYtwLkTVk7J1A==",
+ "path": "nlog/5.3.4",
+ "hashPath": "nlog.5.3.4.nupkg.sha512"
+ },
+ "Scriban/5.12.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-/YTTCxjBIpfwX3MKMT4JMFVl1jX4IHW7zih+Bg3cTIkzGnbFt+B3l/k90ILDw6DRiFE7T+VxEyls7zk4p029ng==",
+ "path": "scriban/5.12.0",
+ "hashPath": "scriban.5.12.0.nupkg.sha512"
+ },
+ "System.Collections/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-YUJGz6eFKqS0V//mLt25vFGrrCvOnsXjlvFQs+KimpwNxug9x0Pzy4PlFMU3Q2IzqAa9G2L4LsK3+9vCBK7oTg==",
+ "path": "system.collections/4.0.11",
+ "hashPath": "system.collections.4.0.11.nupkg.sha512"
+ },
+ "System.Diagnostics.Debug/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-w5U95fVKHY4G8ASs/K5iK3J5LY+/dLFd4vKejsnI/ZhBsWS9hQakfx3Zr7lRWKg4tAw9r4iktyvsTagWkqYCiw==",
+ "path": "system.diagnostics.debug/4.0.11",
+ "hashPath": "system.diagnostics.debug.4.0.11.nupkg.sha512"
+ },
+ "System.Diagnostics.Tools/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-xBfJ8pnd4C17dWaC9FM6aShzbJcRNMChUMD42I6772KGGrqaFdumwhn9OdM68erj1ueNo3xdQ1EwiFjK5k8p0g==",
+ "path": "system.diagnostics.tools/4.0.1",
+ "hashPath": "system.diagnostics.tools.4.0.1.nupkg.sha512"
+ },
+ "System.Globalization/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-B95h0YLEL2oSnwF/XjqSWKnwKOy/01VWkNlsCeMTFJLLabflpGV26nK164eRs5GiaRSBGpOxQ3pKoSnnyZN5pg==",
+ "path": "system.globalization/4.0.11",
+ "hashPath": "system.globalization.4.0.11.nupkg.sha512"
+ },
+ "System.IO/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-3KlTJceQc3gnGIaHZ7UBZO26SHL1SHE4ddrmiwumFnId+CEHP+O8r386tZKaE6zlk5/mF8vifMBzHj9SaXN+mQ==",
+ "path": "system.io/4.1.0",
+ "hashPath": "system.io.4.1.0.nupkg.sha512"
+ },
+ "System.Linq/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-bQ0iYFOQI0nuTnt+NQADns6ucV4DUvMdwN6CbkB1yj8i7arTGiTN5eok1kQwdnnNWSDZfIUySQY+J3d5KjWn0g==",
+ "path": "system.linq/4.1.0",
+ "hashPath": "system.linq.4.1.0.nupkg.sha512"
+ },
+ "System.Linq.Expressions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-I+y02iqkgmCAyfbqOmSDOgqdZQ5tTj80Akm5BPSS8EeB0VGWdy6X1KCoYe8Pk6pwDoAKZUOdLVxnTJcExiv5zw==",
+ "path": "system.linq.expressions/4.1.0",
+ "hashPath": "system.linq.expressions.4.1.0.nupkg.sha512"
+ },
+ "System.ObjectModel/4.0.12": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-tAgJM1xt3ytyMoW4qn4wIqgJYm7L7TShRZG4+Q4Qsi2PCcj96pXN7nRywS9KkB3p/xDUjc2HSwP9SROyPYDYKQ==",
+ "path": "system.objectmodel/4.0.12",
+ "hashPath": "system.objectmodel.4.0.12.nupkg.sha512"
+ },
+ "System.Reflection/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-JCKANJ0TI7kzoQzuwB/OoJANy1Lg338B6+JVacPl4TpUwi3cReg3nMLplMq2uqYfHFQpKIlHAUVAJlImZz/4ng==",
+ "path": "system.reflection/4.1.0",
+ "hashPath": "system.reflection.4.1.0.nupkg.sha512"
+ },
+ "System.Reflection.Emit/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-P2wqAj72fFjpP6wb9nSfDqNBMab+2ovzSDzUZK7MVIm54tBJEPr9jWfSjjoTpPwj1LeKcmX3vr0ttyjSSFM47g==",
+ "path": "system.reflection.emit/4.0.1",
+ "hashPath": "system.reflection.emit.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Emit.ILGeneration/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-Ov6dU8Bu15Bc7zuqttgHF12J5lwSWyTf1S+FJouUXVMSqImLZzYaQ+vRr1rQ0OZ0HqsrwWl4dsKHELckQkVpgA==",
+ "path": "system.reflection.emit.ilgeneration/4.0.1",
+ "hashPath": "system.reflection.emit.ilgeneration.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Emit.Lightweight/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-sSzHHXueZ5Uh0OLpUQprhr+ZYJrLPA2Cmr4gn0wj9+FftNKXx8RIMKvO9qnjk2ebPYUjZ+F2ulGdPOsvj+MEjA==",
+ "path": "system.reflection.emit.lightweight/4.0.1",
+ "hashPath": "system.reflection.emit.lightweight.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Extensions/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-GYrtRsZcMuHF3sbmRHfMYpvxZoIN2bQGrYGerUiWLEkqdEUQZhH3TRSaC/oI4wO0II1RKBPlpIa1TOMxIcOOzQ==",
+ "path": "system.reflection.extensions/4.0.1",
+ "hashPath": "system.reflection.extensions.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Primitives/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-4inTox4wTBaDhB7V3mPvp9XlCbeGYWVEM9/fXALd52vNEAVisc1BoVWQPuUuD0Ga//dNbA/WeMy9u9mzLxGTHQ==",
+ "path": "system.reflection.primitives/4.0.1",
+ "hashPath": "system.reflection.primitives.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.TypeExtensions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-tsQ/ptQ3H5FYfON8lL4MxRk/8kFyE0A+tGPXmVP967cT/gzLHYxIejIYSxp4JmIeFHVP78g/F2FE1mUUTbDtrg==",
+ "path": "system.reflection.typeextensions/4.1.0",
+ "hashPath": "system.reflection.typeextensions.4.1.0.nupkg.sha512"
+ },
+ "System.Resources.ResourceManager/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-TxwVeUNoTgUOdQ09gfTjvW411MF+w9MBYL7AtNVc+HtBCFlutPLhUCdZjNkjbhj3bNQWMdHboF0KIWEOjJssbA==",
+ "path": "system.resources.resourcemanager/4.0.1",
+ "hashPath": "system.resources.resourcemanager.4.0.1.nupkg.sha512"
+ },
+ "System.Runtime/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-v6c/4Yaa9uWsq+JMhnOFewrYkgdNHNG2eMKuNqRn8P733rNXeRCGvV5FkkjBXn2dbVkPXOsO0xjsEeM1q2zC0g==",
+ "path": "system.runtime/4.1.0",
+ "hashPath": "system.runtime.4.1.0.nupkg.sha512"
+ },
+ "System.Runtime.Extensions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-CUOHjTT/vgP0qGW22U4/hDlOqXmcPq5YicBaXdUR2UiUoLwBT+olO6we4DVbq57jeX5uXH2uerVZhf0qGj+sVQ==",
+ "path": "system.runtime.extensions/4.1.0",
+ "hashPath": "system.runtime.extensions.4.1.0.nupkg.sha512"
+ },
+ "System.Runtime.Serialization.Primitives/4.1.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-HZ6Du5QrTG8MNJbf4e4qMO3JRAkIboGT5Fk804uZtg3Gq516S7hAqTm2UZKUHa7/6HUGdVy3AqMQKbns06G/cg==",
+ "path": "system.runtime.serialization.primitives/4.1.1",
+ "hashPath": "system.runtime.serialization.primitives.4.1.1.nupkg.sha512"
+ },
+ "System.Text.Encoding/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-U3gGeMlDZXxCEiY4DwVLSacg+DFWCvoiX+JThA/rvw37Sqrku7sEFeVBBBMBnfB6FeZHsyDx85HlKL19x0HtZA==",
+ "path": "system.text.encoding/4.0.11",
+ "hashPath": "system.text.encoding.4.0.11.nupkg.sha512"
+ },
+ "System.Text.Encoding.Extensions/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-jtbiTDtvfLYgXn8PTfWI+SiBs51rrmO4AAckx4KR6vFK9Wzf6tI8kcRdsYQNwriUeQ1+CtQbM1W4cMbLXnj/OQ==",
+ "path": "system.text.encoding.extensions/4.0.11",
+ "hashPath": "system.text.encoding.extensions.4.0.11.nupkg.sha512"
+ },
+ "System.Text.RegularExpressions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-i88YCXpRTjCnoSQZtdlHkAOx4KNNik4hMy83n0+Ftlb7jvV6ZiZWMpnEZHhjBp6hQVh8gWd/iKNPzlPF7iyA2g==",
+ "path": "system.text.regularexpressions/4.1.0",
+ "hashPath": "system.text.regularexpressions.4.1.0.nupkg.sha512"
+ },
+ "System.Threading/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-N+3xqIcg3VDKyjwwCGaZ9HawG9aC6cSDI+s7ROma310GQo8vilFZa86hqKppwTHleR/G0sfOzhvgnUxWCR/DrQ==",
+ "path": "system.threading/4.0.11",
+ "hashPath": "system.threading.4.0.11.nupkg.sha512"
+ },
+ "System.Threading.Tasks/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-k1S4Gc6IGwtHGT8188RSeGaX86Qw/wnrgNLshJvsdNUOPP9etMmo8S07c+UlOAx4K/xLuN9ivA1bD0LVurtIxQ==",
+ "path": "system.threading.tasks/4.0.11",
+ "hashPath": "system.threading.tasks.4.0.11.nupkg.sha512"
+ },
+ "Ude.NetStandard/1.2.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-zRWpPAxBg3lNdm4UiKixTe+DFPoNid9CILggTCy/0WR2WKETe17kTWhiiIpLB2k5IEgnvA0QLfKlvd6Tvu0pzA==",
+ "path": "ude.netstandard/1.2.0",
+ "hashPath": "ude.netstandard.1.2.0.nupkg.sha512"
+ },
+ "YamlDotNet.NetCore/1.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-vPiKF4Yf02MS96Nzwcr8+WrvlhTx+camOgUzxhazU0hCzs2ESetWDCxaIT/MYdAw2oONYem1ow9PXWJjHkRUDw==",
+ "path": "yamldotnet.netcore/1.0.0",
+ "hashPath": "yamldotnet.netcore.1.0.0.nupkg.sha512"
+ },
+ "Luban.Core/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Luban.DataLoader.Builtin/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/Luban/Luban.DataTarget.Builtin.dll b/Luban/Luban.DataTarget.Builtin.dll
new file mode 100644
index 0000000..5958514
Binary files /dev/null and b/Luban/Luban.DataTarget.Builtin.dll differ
diff --git a/Luban/Luban.DataTarget.Builtin.pdb b/Luban/Luban.DataTarget.Builtin.pdb
new file mode 100644
index 0000000..98cdc9c
Binary files /dev/null and b/Luban/Luban.DataTarget.Builtin.pdb differ
diff --git a/Luban/Luban.DataValidator.Builtin.deps.json b/Luban/Luban.DataValidator.Builtin.deps.json
new file mode 100644
index 0000000..0616312
--- /dev/null
+++ b/Luban/Luban.DataValidator.Builtin.deps.json
@@ -0,0 +1,73 @@
+{
+ "runtimeTarget": {
+ "name": ".NETCoreApp,Version=v8.0",
+ "signature": ""
+ },
+ "compilationOptions": {},
+ "targets": {
+ ".NETCoreApp,Version=v8.0": {
+ "Luban.DataValidator.Builtin/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0"
+ },
+ "runtime": {
+ "Luban.DataValidator.Builtin.dll": {}
+ }
+ },
+ "NLog/5.3.4": {
+ "runtime": {
+ "lib/netstandard2.0/NLog.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.3.4.2778"
+ }
+ }
+ },
+ "Scriban/5.12.0": {
+ "runtime": {
+ "lib/net7.0/Scriban.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.12.0.0"
+ }
+ }
+ },
+ "Luban.Core/1.0.0": {
+ "dependencies": {
+ "NLog": "5.3.4",
+ "Scriban": "5.12.0"
+ },
+ "runtime": {
+ "Luban.Core.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ }
+ }
+ },
+ "libraries": {
+ "Luban.DataValidator.Builtin/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "NLog/5.3.4": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-gLy7+O1hEYJXIlcTr1/VWjGXrZTQFZzYNO18IWasD64pNwz0BreV+nHLxWKXWZzERRzoKnsk2XYtwLkTVk7J1A==",
+ "path": "nlog/5.3.4",
+ "hashPath": "nlog.5.3.4.nupkg.sha512"
+ },
+ "Scriban/5.12.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-/YTTCxjBIpfwX3MKMT4JMFVl1jX4IHW7zih+Bg3cTIkzGnbFt+B3l/k90ILDw6DRiFE7T+VxEyls7zk4p029ng==",
+ "path": "scriban/5.12.0",
+ "hashPath": "scriban.5.12.0.nupkg.sha512"
+ },
+ "Luban.Core/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/Luban/Luban.DataValidator.Builtin.dll b/Luban/Luban.DataValidator.Builtin.dll
new file mode 100644
index 0000000..ddd91c5
Binary files /dev/null and b/Luban/Luban.DataValidator.Builtin.dll differ
diff --git a/Luban/Luban.DataValidator.Builtin.pdb b/Luban/Luban.DataValidator.Builtin.pdb
new file mode 100644
index 0000000..c5e9001
Binary files /dev/null and b/Luban/Luban.DataValidator.Builtin.pdb differ
diff --git a/Luban/Luban.FlatBuffers.deps.json b/Luban/Luban.FlatBuffers.deps.json
new file mode 100644
index 0000000..d7e57c1
--- /dev/null
+++ b/Luban/Luban.FlatBuffers.deps.json
@@ -0,0 +1,581 @@
+{
+ "runtimeTarget": {
+ "name": ".NETCoreApp,Version=v8.0",
+ "signature": ""
+ },
+ "compilationOptions": {},
+ "targets": {
+ ".NETCoreApp,Version=v8.0": {
+ "Luban.FlatBuffers/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0",
+ "Luban.DataTarget.Builtin": "1.0.0"
+ },
+ "runtime": {
+ "Luban.FlatBuffers.dll": {}
+ }
+ },
+ "ExcelDataReader/3.7.0": {
+ "runtime": {
+ "lib/netstandard2.1/ExcelDataReader.dll": {
+ "assemblyVersion": "3.7.0.0",
+ "fileVersion": "3.7.0.0"
+ }
+ }
+ },
+ "Microsoft.CSharp/4.5.0": {},
+ "Microsoft.NETCore.Platforms/1.0.1": {},
+ "Microsoft.NETCore.Targets/1.0.1": {},
+ "NeoLua/1.3.14": {
+ "dependencies": {
+ "Microsoft.CSharp": "4.5.0"
+ },
+ "runtime": {
+ "lib/net5.0/Neo.Lua.dll": {
+ "assemblyVersion": "5.3.0.0",
+ "fileVersion": "1.3.14.0"
+ }
+ },
+ "resources": {
+ "lib/net5.0/de/Neo.Lua.resources.dll": {
+ "locale": "de"
+ }
+ }
+ },
+ "NLog/5.3.4": {
+ "runtime": {
+ "lib/netstandard2.0/NLog.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.3.4.2778"
+ }
+ }
+ },
+ "Scriban/5.12.0": {
+ "runtime": {
+ "lib/net7.0/Scriban.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.12.0.0"
+ }
+ }
+ },
+ "System.Collections/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Diagnostics.Debug/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Diagnostics.Tools/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Globalization/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.IO/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Text.Encoding": "4.0.11",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.Linq/4.1.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0"
+ }
+ },
+ "System.Linq.Expressions/4.1.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Globalization": "4.0.11",
+ "System.IO": "4.1.0",
+ "System.Linq": "4.1.0",
+ "System.ObjectModel": "4.0.12",
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit": "4.0.1",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Emit.Lightweight": "4.0.1",
+ "System.Reflection.Extensions": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Reflection.TypeExtensions": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.ObjectModel/4.0.12": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.Reflection/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.IO": "4.1.0",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit/4.0.1": {
+ "dependencies": {
+ "System.IO": "4.1.0",
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit.ILGeneration/4.0.1": {
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit.Lightweight/4.0.1": {
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Extensions/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Primitives/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.TypeExtensions/4.1.0": {
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Resources.ResourceManager/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Globalization": "4.0.11",
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Runtime/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1"
+ }
+ },
+ "System.Runtime.Extensions/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Runtime.Serialization.Primitives/4.1.1": {
+ "dependencies": {
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Text.Encoding/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Text.Encoding.Extensions/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Text.Encoding": "4.0.11"
+ }
+ },
+ "System.Text.RegularExpressions/4.1.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Globalization": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.Threading/4.0.11": {
+ "dependencies": {
+ "System.Runtime": "4.1.0",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.Threading.Tasks/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "Ude.NetStandard/1.2.0": {
+ "runtime": {
+ "lib/netstandard2.0/Ude.NetStandard.dll": {
+ "assemblyVersion": "1.0.2.0",
+ "fileVersion": "1.0.2.0"
+ }
+ }
+ },
+ "YamlDotNet.NetCore/1.0.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Diagnostics.Tools": "4.0.1",
+ "System.Globalization": "4.0.11",
+ "System.Linq": "4.1.0",
+ "System.Linq.Expressions": "4.1.0",
+ "System.ObjectModel": "4.0.12",
+ "System.Reflection.Extensions": "4.0.1",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Runtime.Serialization.Primitives": "4.1.1",
+ "System.Text.Encoding.Extensions": "4.0.11",
+ "System.Text.RegularExpressions": "4.1.0"
+ },
+ "runtime": {
+ "lib/netstandard1.0/YamlDotNet.NetCore.dll": {
+ "assemblyVersion": "0.0.1.0",
+ "fileVersion": "0.0.0.0"
+ }
+ }
+ },
+ "Luban.Core/1.0.0": {
+ "dependencies": {
+ "NLog": "5.3.4",
+ "Scriban": "5.12.0"
+ },
+ "runtime": {
+ "Luban.Core.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Luban.DataLoader.Builtin/1.0.0": {
+ "dependencies": {
+ "ExcelDataReader": "3.7.0",
+ "Luban.Core": "1.0.0",
+ "NeoLua": "1.3.14",
+ "Ude.NetStandard": "1.2.0",
+ "YamlDotNet.NetCore": "1.0.0"
+ },
+ "runtime": {
+ "Luban.DataLoader.Builtin.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Luban.DataTarget.Builtin/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0",
+ "Luban.DataLoader.Builtin": "1.0.0"
+ },
+ "runtime": {
+ "Luban.DataTarget.Builtin.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ }
+ }
+ },
+ "libraries": {
+ "Luban.FlatBuffers/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "ExcelDataReader/3.7.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-AMv3oDETRHSRyXC17rBtKH45qIfFyo433LMeaMB3u4RNr/c9Luuc0Z+JMP6+3Cx9n4wXqFqcrEIVxrf/GgYnZg==",
+ "path": "exceldatareader/3.7.0",
+ "hashPath": "exceldatareader.3.7.0.nupkg.sha512"
+ },
+ "Microsoft.CSharp/4.5.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-kaj6Wb4qoMuH3HySFJhxwQfe8R/sJsNJnANrvv8WdFPMoNbKY5htfNscv+LHCu5ipz+49m2e+WQXpLXr9XYemQ==",
+ "path": "microsoft.csharp/4.5.0",
+ "hashPath": "microsoft.csharp.4.5.0.nupkg.sha512"
+ },
+ "Microsoft.NETCore.Platforms/1.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-2G6OjjJzwBfNOO8myRV/nFrbTw5iA+DEm0N+qUqhrOmaVtn4pC77h38I1jsXGw5VH55+dPfQsqHD0We9sCl9FQ==",
+ "path": "microsoft.netcore.platforms/1.0.1",
+ "hashPath": "microsoft.netcore.platforms.1.0.1.nupkg.sha512"
+ },
+ "Microsoft.NETCore.Targets/1.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-rkn+fKobF/cbWfnnfBOQHKVKIOpxMZBvlSHkqDWgBpwGDcLRduvs3D9OLGeV6GWGvVwNlVi2CBbTjuPmtHvyNw==",
+ "path": "microsoft.netcore.targets/1.0.1",
+ "hashPath": "microsoft.netcore.targets.1.0.1.nupkg.sha512"
+ },
+ "NeoLua/1.3.14": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-BXIUN+ePY2wx3ZGiSmR8KZKD85s01pXI690orrB3u/biB8R0nalziGw+iGbPBq1Cuz8Upggpw2ERF84POXWTCQ==",
+ "path": "neolua/1.3.14",
+ "hashPath": "neolua.1.3.14.nupkg.sha512"
+ },
+ "NLog/5.3.4": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-gLy7+O1hEYJXIlcTr1/VWjGXrZTQFZzYNO18IWasD64pNwz0BreV+nHLxWKXWZzERRzoKnsk2XYtwLkTVk7J1A==",
+ "path": "nlog/5.3.4",
+ "hashPath": "nlog.5.3.4.nupkg.sha512"
+ },
+ "Scriban/5.12.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-/YTTCxjBIpfwX3MKMT4JMFVl1jX4IHW7zih+Bg3cTIkzGnbFt+B3l/k90ILDw6DRiFE7T+VxEyls7zk4p029ng==",
+ "path": "scriban/5.12.0",
+ "hashPath": "scriban.5.12.0.nupkg.sha512"
+ },
+ "System.Collections/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-YUJGz6eFKqS0V//mLt25vFGrrCvOnsXjlvFQs+KimpwNxug9x0Pzy4PlFMU3Q2IzqAa9G2L4LsK3+9vCBK7oTg==",
+ "path": "system.collections/4.0.11",
+ "hashPath": "system.collections.4.0.11.nupkg.sha512"
+ },
+ "System.Diagnostics.Debug/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-w5U95fVKHY4G8ASs/K5iK3J5LY+/dLFd4vKejsnI/ZhBsWS9hQakfx3Zr7lRWKg4tAw9r4iktyvsTagWkqYCiw==",
+ "path": "system.diagnostics.debug/4.0.11",
+ "hashPath": "system.diagnostics.debug.4.0.11.nupkg.sha512"
+ },
+ "System.Diagnostics.Tools/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-xBfJ8pnd4C17dWaC9FM6aShzbJcRNMChUMD42I6772KGGrqaFdumwhn9OdM68erj1ueNo3xdQ1EwiFjK5k8p0g==",
+ "path": "system.diagnostics.tools/4.0.1",
+ "hashPath": "system.diagnostics.tools.4.0.1.nupkg.sha512"
+ },
+ "System.Globalization/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-B95h0YLEL2oSnwF/XjqSWKnwKOy/01VWkNlsCeMTFJLLabflpGV26nK164eRs5GiaRSBGpOxQ3pKoSnnyZN5pg==",
+ "path": "system.globalization/4.0.11",
+ "hashPath": "system.globalization.4.0.11.nupkg.sha512"
+ },
+ "System.IO/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-3KlTJceQc3gnGIaHZ7UBZO26SHL1SHE4ddrmiwumFnId+CEHP+O8r386tZKaE6zlk5/mF8vifMBzHj9SaXN+mQ==",
+ "path": "system.io/4.1.0",
+ "hashPath": "system.io.4.1.0.nupkg.sha512"
+ },
+ "System.Linq/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-bQ0iYFOQI0nuTnt+NQADns6ucV4DUvMdwN6CbkB1yj8i7arTGiTN5eok1kQwdnnNWSDZfIUySQY+J3d5KjWn0g==",
+ "path": "system.linq/4.1.0",
+ "hashPath": "system.linq.4.1.0.nupkg.sha512"
+ },
+ "System.Linq.Expressions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-I+y02iqkgmCAyfbqOmSDOgqdZQ5tTj80Akm5BPSS8EeB0VGWdy6X1KCoYe8Pk6pwDoAKZUOdLVxnTJcExiv5zw==",
+ "path": "system.linq.expressions/4.1.0",
+ "hashPath": "system.linq.expressions.4.1.0.nupkg.sha512"
+ },
+ "System.ObjectModel/4.0.12": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-tAgJM1xt3ytyMoW4qn4wIqgJYm7L7TShRZG4+Q4Qsi2PCcj96pXN7nRywS9KkB3p/xDUjc2HSwP9SROyPYDYKQ==",
+ "path": "system.objectmodel/4.0.12",
+ "hashPath": "system.objectmodel.4.0.12.nupkg.sha512"
+ },
+ "System.Reflection/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-JCKANJ0TI7kzoQzuwB/OoJANy1Lg338B6+JVacPl4TpUwi3cReg3nMLplMq2uqYfHFQpKIlHAUVAJlImZz/4ng==",
+ "path": "system.reflection/4.1.0",
+ "hashPath": "system.reflection.4.1.0.nupkg.sha512"
+ },
+ "System.Reflection.Emit/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-P2wqAj72fFjpP6wb9nSfDqNBMab+2ovzSDzUZK7MVIm54tBJEPr9jWfSjjoTpPwj1LeKcmX3vr0ttyjSSFM47g==",
+ "path": "system.reflection.emit/4.0.1",
+ "hashPath": "system.reflection.emit.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Emit.ILGeneration/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-Ov6dU8Bu15Bc7zuqttgHF12J5lwSWyTf1S+FJouUXVMSqImLZzYaQ+vRr1rQ0OZ0HqsrwWl4dsKHELckQkVpgA==",
+ "path": "system.reflection.emit.ilgeneration/4.0.1",
+ "hashPath": "system.reflection.emit.ilgeneration.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Emit.Lightweight/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-sSzHHXueZ5Uh0OLpUQprhr+ZYJrLPA2Cmr4gn0wj9+FftNKXx8RIMKvO9qnjk2ebPYUjZ+F2ulGdPOsvj+MEjA==",
+ "path": "system.reflection.emit.lightweight/4.0.1",
+ "hashPath": "system.reflection.emit.lightweight.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Extensions/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-GYrtRsZcMuHF3sbmRHfMYpvxZoIN2bQGrYGerUiWLEkqdEUQZhH3TRSaC/oI4wO0II1RKBPlpIa1TOMxIcOOzQ==",
+ "path": "system.reflection.extensions/4.0.1",
+ "hashPath": "system.reflection.extensions.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Primitives/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-4inTox4wTBaDhB7V3mPvp9XlCbeGYWVEM9/fXALd52vNEAVisc1BoVWQPuUuD0Ga//dNbA/WeMy9u9mzLxGTHQ==",
+ "path": "system.reflection.primitives/4.0.1",
+ "hashPath": "system.reflection.primitives.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.TypeExtensions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-tsQ/ptQ3H5FYfON8lL4MxRk/8kFyE0A+tGPXmVP967cT/gzLHYxIejIYSxp4JmIeFHVP78g/F2FE1mUUTbDtrg==",
+ "path": "system.reflection.typeextensions/4.1.0",
+ "hashPath": "system.reflection.typeextensions.4.1.0.nupkg.sha512"
+ },
+ "System.Resources.ResourceManager/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-TxwVeUNoTgUOdQ09gfTjvW411MF+w9MBYL7AtNVc+HtBCFlutPLhUCdZjNkjbhj3bNQWMdHboF0KIWEOjJssbA==",
+ "path": "system.resources.resourcemanager/4.0.1",
+ "hashPath": "system.resources.resourcemanager.4.0.1.nupkg.sha512"
+ },
+ "System.Runtime/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-v6c/4Yaa9uWsq+JMhnOFewrYkgdNHNG2eMKuNqRn8P733rNXeRCGvV5FkkjBXn2dbVkPXOsO0xjsEeM1q2zC0g==",
+ "path": "system.runtime/4.1.0",
+ "hashPath": "system.runtime.4.1.0.nupkg.sha512"
+ },
+ "System.Runtime.Extensions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-CUOHjTT/vgP0qGW22U4/hDlOqXmcPq5YicBaXdUR2UiUoLwBT+olO6we4DVbq57jeX5uXH2uerVZhf0qGj+sVQ==",
+ "path": "system.runtime.extensions/4.1.0",
+ "hashPath": "system.runtime.extensions.4.1.0.nupkg.sha512"
+ },
+ "System.Runtime.Serialization.Primitives/4.1.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-HZ6Du5QrTG8MNJbf4e4qMO3JRAkIboGT5Fk804uZtg3Gq516S7hAqTm2UZKUHa7/6HUGdVy3AqMQKbns06G/cg==",
+ "path": "system.runtime.serialization.primitives/4.1.1",
+ "hashPath": "system.runtime.serialization.primitives.4.1.1.nupkg.sha512"
+ },
+ "System.Text.Encoding/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-U3gGeMlDZXxCEiY4DwVLSacg+DFWCvoiX+JThA/rvw37Sqrku7sEFeVBBBMBnfB6FeZHsyDx85HlKL19x0HtZA==",
+ "path": "system.text.encoding/4.0.11",
+ "hashPath": "system.text.encoding.4.0.11.nupkg.sha512"
+ },
+ "System.Text.Encoding.Extensions/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-jtbiTDtvfLYgXn8PTfWI+SiBs51rrmO4AAckx4KR6vFK9Wzf6tI8kcRdsYQNwriUeQ1+CtQbM1W4cMbLXnj/OQ==",
+ "path": "system.text.encoding.extensions/4.0.11",
+ "hashPath": "system.text.encoding.extensions.4.0.11.nupkg.sha512"
+ },
+ "System.Text.RegularExpressions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-i88YCXpRTjCnoSQZtdlHkAOx4KNNik4hMy83n0+Ftlb7jvV6ZiZWMpnEZHhjBp6hQVh8gWd/iKNPzlPF7iyA2g==",
+ "path": "system.text.regularexpressions/4.1.0",
+ "hashPath": "system.text.regularexpressions.4.1.0.nupkg.sha512"
+ },
+ "System.Threading/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-N+3xqIcg3VDKyjwwCGaZ9HawG9aC6cSDI+s7ROma310GQo8vilFZa86hqKppwTHleR/G0sfOzhvgnUxWCR/DrQ==",
+ "path": "system.threading/4.0.11",
+ "hashPath": "system.threading.4.0.11.nupkg.sha512"
+ },
+ "System.Threading.Tasks/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-k1S4Gc6IGwtHGT8188RSeGaX86Qw/wnrgNLshJvsdNUOPP9etMmo8S07c+UlOAx4K/xLuN9ivA1bD0LVurtIxQ==",
+ "path": "system.threading.tasks/4.0.11",
+ "hashPath": "system.threading.tasks.4.0.11.nupkg.sha512"
+ },
+ "Ude.NetStandard/1.2.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-zRWpPAxBg3lNdm4UiKixTe+DFPoNid9CILggTCy/0WR2WKETe17kTWhiiIpLB2k5IEgnvA0QLfKlvd6Tvu0pzA==",
+ "path": "ude.netstandard/1.2.0",
+ "hashPath": "ude.netstandard.1.2.0.nupkg.sha512"
+ },
+ "YamlDotNet.NetCore/1.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-vPiKF4Yf02MS96Nzwcr8+WrvlhTx+camOgUzxhazU0hCzs2ESetWDCxaIT/MYdAw2oONYem1ow9PXWJjHkRUDw==",
+ "path": "yamldotnet.netcore/1.0.0",
+ "hashPath": "yamldotnet.netcore.1.0.0.nupkg.sha512"
+ },
+ "Luban.Core/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Luban.DataLoader.Builtin/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Luban.DataTarget.Builtin/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/Luban/Luban.FlatBuffers.dll b/Luban/Luban.FlatBuffers.dll
new file mode 100644
index 0000000..7e82155
Binary files /dev/null and b/Luban/Luban.FlatBuffers.dll differ
diff --git a/Luban/Luban.FlatBuffers.pdb b/Luban/Luban.FlatBuffers.pdb
new file mode 100644
index 0000000..5bcdc2a
Binary files /dev/null and b/Luban/Luban.FlatBuffers.pdb differ
diff --git a/Luban/Luban.Gdscript.deps.json b/Luban/Luban.Gdscript.deps.json
new file mode 100644
index 0000000..eec881e
--- /dev/null
+++ b/Luban/Luban.Gdscript.deps.json
@@ -0,0 +1,581 @@
+{
+ "runtimeTarget": {
+ "name": ".NETCoreApp,Version=v8.0",
+ "signature": ""
+ },
+ "compilationOptions": {},
+ "targets": {
+ ".NETCoreApp,Version=v8.0": {
+ "Luban.Gdscript/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0",
+ "Luban.DataTarget.Builtin": "1.0.0"
+ },
+ "runtime": {
+ "Luban.Gdscript.dll": {}
+ }
+ },
+ "ExcelDataReader/3.7.0": {
+ "runtime": {
+ "lib/netstandard2.1/ExcelDataReader.dll": {
+ "assemblyVersion": "3.7.0.0",
+ "fileVersion": "3.7.0.0"
+ }
+ }
+ },
+ "Microsoft.CSharp/4.5.0": {},
+ "Microsoft.NETCore.Platforms/1.0.1": {},
+ "Microsoft.NETCore.Targets/1.0.1": {},
+ "NeoLua/1.3.14": {
+ "dependencies": {
+ "Microsoft.CSharp": "4.5.0"
+ },
+ "runtime": {
+ "lib/net5.0/Neo.Lua.dll": {
+ "assemblyVersion": "5.3.0.0",
+ "fileVersion": "1.3.14.0"
+ }
+ },
+ "resources": {
+ "lib/net5.0/de/Neo.Lua.resources.dll": {
+ "locale": "de"
+ }
+ }
+ },
+ "NLog/5.3.4": {
+ "runtime": {
+ "lib/netstandard2.0/NLog.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.3.4.2778"
+ }
+ }
+ },
+ "Scriban/5.12.0": {
+ "runtime": {
+ "lib/net7.0/Scriban.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.12.0.0"
+ }
+ }
+ },
+ "System.Collections/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Diagnostics.Debug/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Diagnostics.Tools/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Globalization/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.IO/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Text.Encoding": "4.0.11",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.Linq/4.1.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0"
+ }
+ },
+ "System.Linq.Expressions/4.1.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Globalization": "4.0.11",
+ "System.IO": "4.1.0",
+ "System.Linq": "4.1.0",
+ "System.ObjectModel": "4.0.12",
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit": "4.0.1",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Emit.Lightweight": "4.0.1",
+ "System.Reflection.Extensions": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Reflection.TypeExtensions": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.ObjectModel/4.0.12": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.Reflection/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.IO": "4.1.0",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit/4.0.1": {
+ "dependencies": {
+ "System.IO": "4.1.0",
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit.ILGeneration/4.0.1": {
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit.Lightweight/4.0.1": {
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Extensions/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Primitives/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.TypeExtensions/4.1.0": {
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Resources.ResourceManager/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Globalization": "4.0.11",
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Runtime/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1"
+ }
+ },
+ "System.Runtime.Extensions/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Runtime.Serialization.Primitives/4.1.1": {
+ "dependencies": {
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Text.Encoding/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Text.Encoding.Extensions/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Text.Encoding": "4.0.11"
+ }
+ },
+ "System.Text.RegularExpressions/4.1.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Globalization": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.Threading/4.0.11": {
+ "dependencies": {
+ "System.Runtime": "4.1.0",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.Threading.Tasks/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "Ude.NetStandard/1.2.0": {
+ "runtime": {
+ "lib/netstandard2.0/Ude.NetStandard.dll": {
+ "assemblyVersion": "1.0.2.0",
+ "fileVersion": "1.0.2.0"
+ }
+ }
+ },
+ "YamlDotNet.NetCore/1.0.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Diagnostics.Tools": "4.0.1",
+ "System.Globalization": "4.0.11",
+ "System.Linq": "4.1.0",
+ "System.Linq.Expressions": "4.1.0",
+ "System.ObjectModel": "4.0.12",
+ "System.Reflection.Extensions": "4.0.1",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Runtime.Serialization.Primitives": "4.1.1",
+ "System.Text.Encoding.Extensions": "4.0.11",
+ "System.Text.RegularExpressions": "4.1.0"
+ },
+ "runtime": {
+ "lib/netstandard1.0/YamlDotNet.NetCore.dll": {
+ "assemblyVersion": "0.0.1.0",
+ "fileVersion": "0.0.0.0"
+ }
+ }
+ },
+ "Luban.Core/1.0.0": {
+ "dependencies": {
+ "NLog": "5.3.4",
+ "Scriban": "5.12.0"
+ },
+ "runtime": {
+ "Luban.Core.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Luban.DataLoader.Builtin/1.0.0": {
+ "dependencies": {
+ "ExcelDataReader": "3.7.0",
+ "Luban.Core": "1.0.0",
+ "NeoLua": "1.3.14",
+ "Ude.NetStandard": "1.2.0",
+ "YamlDotNet.NetCore": "1.0.0"
+ },
+ "runtime": {
+ "Luban.DataLoader.Builtin.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Luban.DataTarget.Builtin/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0",
+ "Luban.DataLoader.Builtin": "1.0.0"
+ },
+ "runtime": {
+ "Luban.DataTarget.Builtin.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ }
+ }
+ },
+ "libraries": {
+ "Luban.Gdscript/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "ExcelDataReader/3.7.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-AMv3oDETRHSRyXC17rBtKH45qIfFyo433LMeaMB3u4RNr/c9Luuc0Z+JMP6+3Cx9n4wXqFqcrEIVxrf/GgYnZg==",
+ "path": "exceldatareader/3.7.0",
+ "hashPath": "exceldatareader.3.7.0.nupkg.sha512"
+ },
+ "Microsoft.CSharp/4.5.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-kaj6Wb4qoMuH3HySFJhxwQfe8R/sJsNJnANrvv8WdFPMoNbKY5htfNscv+LHCu5ipz+49m2e+WQXpLXr9XYemQ==",
+ "path": "microsoft.csharp/4.5.0",
+ "hashPath": "microsoft.csharp.4.5.0.nupkg.sha512"
+ },
+ "Microsoft.NETCore.Platforms/1.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-2G6OjjJzwBfNOO8myRV/nFrbTw5iA+DEm0N+qUqhrOmaVtn4pC77h38I1jsXGw5VH55+dPfQsqHD0We9sCl9FQ==",
+ "path": "microsoft.netcore.platforms/1.0.1",
+ "hashPath": "microsoft.netcore.platforms.1.0.1.nupkg.sha512"
+ },
+ "Microsoft.NETCore.Targets/1.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-rkn+fKobF/cbWfnnfBOQHKVKIOpxMZBvlSHkqDWgBpwGDcLRduvs3D9OLGeV6GWGvVwNlVi2CBbTjuPmtHvyNw==",
+ "path": "microsoft.netcore.targets/1.0.1",
+ "hashPath": "microsoft.netcore.targets.1.0.1.nupkg.sha512"
+ },
+ "NeoLua/1.3.14": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-BXIUN+ePY2wx3ZGiSmR8KZKD85s01pXI690orrB3u/biB8R0nalziGw+iGbPBq1Cuz8Upggpw2ERF84POXWTCQ==",
+ "path": "neolua/1.3.14",
+ "hashPath": "neolua.1.3.14.nupkg.sha512"
+ },
+ "NLog/5.3.4": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-gLy7+O1hEYJXIlcTr1/VWjGXrZTQFZzYNO18IWasD64pNwz0BreV+nHLxWKXWZzERRzoKnsk2XYtwLkTVk7J1A==",
+ "path": "nlog/5.3.4",
+ "hashPath": "nlog.5.3.4.nupkg.sha512"
+ },
+ "Scriban/5.12.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-/YTTCxjBIpfwX3MKMT4JMFVl1jX4IHW7zih+Bg3cTIkzGnbFt+B3l/k90ILDw6DRiFE7T+VxEyls7zk4p029ng==",
+ "path": "scriban/5.12.0",
+ "hashPath": "scriban.5.12.0.nupkg.sha512"
+ },
+ "System.Collections/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-YUJGz6eFKqS0V//mLt25vFGrrCvOnsXjlvFQs+KimpwNxug9x0Pzy4PlFMU3Q2IzqAa9G2L4LsK3+9vCBK7oTg==",
+ "path": "system.collections/4.0.11",
+ "hashPath": "system.collections.4.0.11.nupkg.sha512"
+ },
+ "System.Diagnostics.Debug/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-w5U95fVKHY4G8ASs/K5iK3J5LY+/dLFd4vKejsnI/ZhBsWS9hQakfx3Zr7lRWKg4tAw9r4iktyvsTagWkqYCiw==",
+ "path": "system.diagnostics.debug/4.0.11",
+ "hashPath": "system.diagnostics.debug.4.0.11.nupkg.sha512"
+ },
+ "System.Diagnostics.Tools/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-xBfJ8pnd4C17dWaC9FM6aShzbJcRNMChUMD42I6772KGGrqaFdumwhn9OdM68erj1ueNo3xdQ1EwiFjK5k8p0g==",
+ "path": "system.diagnostics.tools/4.0.1",
+ "hashPath": "system.diagnostics.tools.4.0.1.nupkg.sha512"
+ },
+ "System.Globalization/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-B95h0YLEL2oSnwF/XjqSWKnwKOy/01VWkNlsCeMTFJLLabflpGV26nK164eRs5GiaRSBGpOxQ3pKoSnnyZN5pg==",
+ "path": "system.globalization/4.0.11",
+ "hashPath": "system.globalization.4.0.11.nupkg.sha512"
+ },
+ "System.IO/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-3KlTJceQc3gnGIaHZ7UBZO26SHL1SHE4ddrmiwumFnId+CEHP+O8r386tZKaE6zlk5/mF8vifMBzHj9SaXN+mQ==",
+ "path": "system.io/4.1.0",
+ "hashPath": "system.io.4.1.0.nupkg.sha512"
+ },
+ "System.Linq/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-bQ0iYFOQI0nuTnt+NQADns6ucV4DUvMdwN6CbkB1yj8i7arTGiTN5eok1kQwdnnNWSDZfIUySQY+J3d5KjWn0g==",
+ "path": "system.linq/4.1.0",
+ "hashPath": "system.linq.4.1.0.nupkg.sha512"
+ },
+ "System.Linq.Expressions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-I+y02iqkgmCAyfbqOmSDOgqdZQ5tTj80Akm5BPSS8EeB0VGWdy6X1KCoYe8Pk6pwDoAKZUOdLVxnTJcExiv5zw==",
+ "path": "system.linq.expressions/4.1.0",
+ "hashPath": "system.linq.expressions.4.1.0.nupkg.sha512"
+ },
+ "System.ObjectModel/4.0.12": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-tAgJM1xt3ytyMoW4qn4wIqgJYm7L7TShRZG4+Q4Qsi2PCcj96pXN7nRywS9KkB3p/xDUjc2HSwP9SROyPYDYKQ==",
+ "path": "system.objectmodel/4.0.12",
+ "hashPath": "system.objectmodel.4.0.12.nupkg.sha512"
+ },
+ "System.Reflection/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-JCKANJ0TI7kzoQzuwB/OoJANy1Lg338B6+JVacPl4TpUwi3cReg3nMLplMq2uqYfHFQpKIlHAUVAJlImZz/4ng==",
+ "path": "system.reflection/4.1.0",
+ "hashPath": "system.reflection.4.1.0.nupkg.sha512"
+ },
+ "System.Reflection.Emit/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-P2wqAj72fFjpP6wb9nSfDqNBMab+2ovzSDzUZK7MVIm54tBJEPr9jWfSjjoTpPwj1LeKcmX3vr0ttyjSSFM47g==",
+ "path": "system.reflection.emit/4.0.1",
+ "hashPath": "system.reflection.emit.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Emit.ILGeneration/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-Ov6dU8Bu15Bc7zuqttgHF12J5lwSWyTf1S+FJouUXVMSqImLZzYaQ+vRr1rQ0OZ0HqsrwWl4dsKHELckQkVpgA==",
+ "path": "system.reflection.emit.ilgeneration/4.0.1",
+ "hashPath": "system.reflection.emit.ilgeneration.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Emit.Lightweight/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-sSzHHXueZ5Uh0OLpUQprhr+ZYJrLPA2Cmr4gn0wj9+FftNKXx8RIMKvO9qnjk2ebPYUjZ+F2ulGdPOsvj+MEjA==",
+ "path": "system.reflection.emit.lightweight/4.0.1",
+ "hashPath": "system.reflection.emit.lightweight.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Extensions/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-GYrtRsZcMuHF3sbmRHfMYpvxZoIN2bQGrYGerUiWLEkqdEUQZhH3TRSaC/oI4wO0II1RKBPlpIa1TOMxIcOOzQ==",
+ "path": "system.reflection.extensions/4.0.1",
+ "hashPath": "system.reflection.extensions.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Primitives/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-4inTox4wTBaDhB7V3mPvp9XlCbeGYWVEM9/fXALd52vNEAVisc1BoVWQPuUuD0Ga//dNbA/WeMy9u9mzLxGTHQ==",
+ "path": "system.reflection.primitives/4.0.1",
+ "hashPath": "system.reflection.primitives.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.TypeExtensions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-tsQ/ptQ3H5FYfON8lL4MxRk/8kFyE0A+tGPXmVP967cT/gzLHYxIejIYSxp4JmIeFHVP78g/F2FE1mUUTbDtrg==",
+ "path": "system.reflection.typeextensions/4.1.0",
+ "hashPath": "system.reflection.typeextensions.4.1.0.nupkg.sha512"
+ },
+ "System.Resources.ResourceManager/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-TxwVeUNoTgUOdQ09gfTjvW411MF+w9MBYL7AtNVc+HtBCFlutPLhUCdZjNkjbhj3bNQWMdHboF0KIWEOjJssbA==",
+ "path": "system.resources.resourcemanager/4.0.1",
+ "hashPath": "system.resources.resourcemanager.4.0.1.nupkg.sha512"
+ },
+ "System.Runtime/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-v6c/4Yaa9uWsq+JMhnOFewrYkgdNHNG2eMKuNqRn8P733rNXeRCGvV5FkkjBXn2dbVkPXOsO0xjsEeM1q2zC0g==",
+ "path": "system.runtime/4.1.0",
+ "hashPath": "system.runtime.4.1.0.nupkg.sha512"
+ },
+ "System.Runtime.Extensions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-CUOHjTT/vgP0qGW22U4/hDlOqXmcPq5YicBaXdUR2UiUoLwBT+olO6we4DVbq57jeX5uXH2uerVZhf0qGj+sVQ==",
+ "path": "system.runtime.extensions/4.1.0",
+ "hashPath": "system.runtime.extensions.4.1.0.nupkg.sha512"
+ },
+ "System.Runtime.Serialization.Primitives/4.1.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-HZ6Du5QrTG8MNJbf4e4qMO3JRAkIboGT5Fk804uZtg3Gq516S7hAqTm2UZKUHa7/6HUGdVy3AqMQKbns06G/cg==",
+ "path": "system.runtime.serialization.primitives/4.1.1",
+ "hashPath": "system.runtime.serialization.primitives.4.1.1.nupkg.sha512"
+ },
+ "System.Text.Encoding/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-U3gGeMlDZXxCEiY4DwVLSacg+DFWCvoiX+JThA/rvw37Sqrku7sEFeVBBBMBnfB6FeZHsyDx85HlKL19x0HtZA==",
+ "path": "system.text.encoding/4.0.11",
+ "hashPath": "system.text.encoding.4.0.11.nupkg.sha512"
+ },
+ "System.Text.Encoding.Extensions/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-jtbiTDtvfLYgXn8PTfWI+SiBs51rrmO4AAckx4KR6vFK9Wzf6tI8kcRdsYQNwriUeQ1+CtQbM1W4cMbLXnj/OQ==",
+ "path": "system.text.encoding.extensions/4.0.11",
+ "hashPath": "system.text.encoding.extensions.4.0.11.nupkg.sha512"
+ },
+ "System.Text.RegularExpressions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-i88YCXpRTjCnoSQZtdlHkAOx4KNNik4hMy83n0+Ftlb7jvV6ZiZWMpnEZHhjBp6hQVh8gWd/iKNPzlPF7iyA2g==",
+ "path": "system.text.regularexpressions/4.1.0",
+ "hashPath": "system.text.regularexpressions.4.1.0.nupkg.sha512"
+ },
+ "System.Threading/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-N+3xqIcg3VDKyjwwCGaZ9HawG9aC6cSDI+s7ROma310GQo8vilFZa86hqKppwTHleR/G0sfOzhvgnUxWCR/DrQ==",
+ "path": "system.threading/4.0.11",
+ "hashPath": "system.threading.4.0.11.nupkg.sha512"
+ },
+ "System.Threading.Tasks/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-k1S4Gc6IGwtHGT8188RSeGaX86Qw/wnrgNLshJvsdNUOPP9etMmo8S07c+UlOAx4K/xLuN9ivA1bD0LVurtIxQ==",
+ "path": "system.threading.tasks/4.0.11",
+ "hashPath": "system.threading.tasks.4.0.11.nupkg.sha512"
+ },
+ "Ude.NetStandard/1.2.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-zRWpPAxBg3lNdm4UiKixTe+DFPoNid9CILggTCy/0WR2WKETe17kTWhiiIpLB2k5IEgnvA0QLfKlvd6Tvu0pzA==",
+ "path": "ude.netstandard/1.2.0",
+ "hashPath": "ude.netstandard.1.2.0.nupkg.sha512"
+ },
+ "YamlDotNet.NetCore/1.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-vPiKF4Yf02MS96Nzwcr8+WrvlhTx+camOgUzxhazU0hCzs2ESetWDCxaIT/MYdAw2oONYem1ow9PXWJjHkRUDw==",
+ "path": "yamldotnet.netcore/1.0.0",
+ "hashPath": "yamldotnet.netcore.1.0.0.nupkg.sha512"
+ },
+ "Luban.Core/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Luban.DataLoader.Builtin/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Luban.DataTarget.Builtin/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/Luban/Luban.Gdscript.dll b/Luban/Luban.Gdscript.dll
new file mode 100644
index 0000000..40a7581
Binary files /dev/null and b/Luban/Luban.Gdscript.dll differ
diff --git a/Luban/Luban.Gdscript.pdb b/Luban/Luban.Gdscript.pdb
new file mode 100644
index 0000000..33b6d7d
Binary files /dev/null and b/Luban/Luban.Gdscript.pdb differ
diff --git a/Luban/Luban.Golang.deps.json b/Luban/Luban.Golang.deps.json
new file mode 100644
index 0000000..eb35788
--- /dev/null
+++ b/Luban/Luban.Golang.deps.json
@@ -0,0 +1,73 @@
+{
+ "runtimeTarget": {
+ "name": ".NETCoreApp,Version=v8.0",
+ "signature": ""
+ },
+ "compilationOptions": {},
+ "targets": {
+ ".NETCoreApp,Version=v8.0": {
+ "Luban.Golang/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0"
+ },
+ "runtime": {
+ "Luban.Golang.dll": {}
+ }
+ },
+ "NLog/5.3.4": {
+ "runtime": {
+ "lib/netstandard2.0/NLog.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.3.4.2778"
+ }
+ }
+ },
+ "Scriban/5.12.0": {
+ "runtime": {
+ "lib/net7.0/Scriban.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.12.0.0"
+ }
+ }
+ },
+ "Luban.Core/1.0.0": {
+ "dependencies": {
+ "NLog": "5.3.4",
+ "Scriban": "5.12.0"
+ },
+ "runtime": {
+ "Luban.Core.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ }
+ }
+ },
+ "libraries": {
+ "Luban.Golang/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "NLog/5.3.4": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-gLy7+O1hEYJXIlcTr1/VWjGXrZTQFZzYNO18IWasD64pNwz0BreV+nHLxWKXWZzERRzoKnsk2XYtwLkTVk7J1A==",
+ "path": "nlog/5.3.4",
+ "hashPath": "nlog.5.3.4.nupkg.sha512"
+ },
+ "Scriban/5.12.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-/YTTCxjBIpfwX3MKMT4JMFVl1jX4IHW7zih+Bg3cTIkzGnbFt+B3l/k90ILDw6DRiFE7T+VxEyls7zk4p029ng==",
+ "path": "scriban/5.12.0",
+ "hashPath": "scriban.5.12.0.nupkg.sha512"
+ },
+ "Luban.Core/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/Luban/Luban.Golang.dll b/Luban/Luban.Golang.dll
new file mode 100644
index 0000000..1b1785e
Binary files /dev/null and b/Luban/Luban.Golang.dll differ
diff --git a/Luban/Luban.Golang.pdb b/Luban/Luban.Golang.pdb
new file mode 100644
index 0000000..e56261f
Binary files /dev/null and b/Luban/Luban.Golang.pdb differ
diff --git a/Luban/Luban.Java.deps.json b/Luban/Luban.Java.deps.json
new file mode 100644
index 0000000..83a9ec0
--- /dev/null
+++ b/Luban/Luban.Java.deps.json
@@ -0,0 +1,73 @@
+{
+ "runtimeTarget": {
+ "name": ".NETCoreApp,Version=v8.0",
+ "signature": ""
+ },
+ "compilationOptions": {},
+ "targets": {
+ ".NETCoreApp,Version=v8.0": {
+ "Luban.Java/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0"
+ },
+ "runtime": {
+ "Luban.Java.dll": {}
+ }
+ },
+ "NLog/5.3.4": {
+ "runtime": {
+ "lib/netstandard2.0/NLog.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.3.4.2778"
+ }
+ }
+ },
+ "Scriban/5.12.0": {
+ "runtime": {
+ "lib/net7.0/Scriban.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.12.0.0"
+ }
+ }
+ },
+ "Luban.Core/1.0.0": {
+ "dependencies": {
+ "NLog": "5.3.4",
+ "Scriban": "5.12.0"
+ },
+ "runtime": {
+ "Luban.Core.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ }
+ }
+ },
+ "libraries": {
+ "Luban.Java/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "NLog/5.3.4": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-gLy7+O1hEYJXIlcTr1/VWjGXrZTQFZzYNO18IWasD64pNwz0BreV+nHLxWKXWZzERRzoKnsk2XYtwLkTVk7J1A==",
+ "path": "nlog/5.3.4",
+ "hashPath": "nlog.5.3.4.nupkg.sha512"
+ },
+ "Scriban/5.12.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-/YTTCxjBIpfwX3MKMT4JMFVl1jX4IHW7zih+Bg3cTIkzGnbFt+B3l/k90ILDw6DRiFE7T+VxEyls7zk4p029ng==",
+ "path": "scriban/5.12.0",
+ "hashPath": "scriban.5.12.0.nupkg.sha512"
+ },
+ "Luban.Core/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/Luban/Luban.Java.dll b/Luban/Luban.Java.dll
new file mode 100644
index 0000000..a55be67
Binary files /dev/null and b/Luban/Luban.Java.dll differ
diff --git a/Luban/Luban.Java.pdb b/Luban/Luban.Java.pdb
new file mode 100644
index 0000000..552f8ea
Binary files /dev/null and b/Luban/Luban.Java.pdb differ
diff --git a/Luban/Luban.Javascript.deps.json b/Luban/Luban.Javascript.deps.json
new file mode 100644
index 0000000..56a53f1
--- /dev/null
+++ b/Luban/Luban.Javascript.deps.json
@@ -0,0 +1,615 @@
+{
+ "runtimeTarget": {
+ "name": ".NETCoreApp,Version=v8.0",
+ "signature": ""
+ },
+ "compilationOptions": {},
+ "targets": {
+ ".NETCoreApp,Version=v8.0": {
+ "Luban.Javascript/1.0.0": {
+ "dependencies": {
+ "Luban.CSharp": "1.0.0",
+ "Luban.Core": "1.0.0",
+ "Luban.DataTarget.Builtin": "1.0.0"
+ },
+ "runtime": {
+ "Luban.Javascript.dll": {}
+ }
+ },
+ "ExcelDataReader/3.7.0": {
+ "runtime": {
+ "lib/netstandard2.1/ExcelDataReader.dll": {
+ "assemblyVersion": "3.7.0.0",
+ "fileVersion": "3.7.0.0"
+ }
+ }
+ },
+ "Microsoft.CSharp/4.5.0": {},
+ "Microsoft.NETCore.Platforms/1.0.1": {},
+ "Microsoft.NETCore.Targets/1.0.1": {},
+ "NeoLua/1.3.14": {
+ "dependencies": {
+ "Microsoft.CSharp": "4.5.0"
+ },
+ "runtime": {
+ "lib/net5.0/Neo.Lua.dll": {
+ "assemblyVersion": "5.3.0.0",
+ "fileVersion": "1.3.14.0"
+ }
+ },
+ "resources": {
+ "lib/net5.0/de/Neo.Lua.resources.dll": {
+ "locale": "de"
+ }
+ }
+ },
+ "NLog/5.3.4": {
+ "runtime": {
+ "lib/netstandard2.0/NLog.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.3.4.2778"
+ }
+ }
+ },
+ "Scriban/5.12.0": {
+ "runtime": {
+ "lib/net7.0/Scriban.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.12.0.0"
+ }
+ }
+ },
+ "System.Collections/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Diagnostics.Debug/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Diagnostics.Tools/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Globalization/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.IO/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Text.Encoding": "4.0.11",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.Linq/4.1.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0"
+ }
+ },
+ "System.Linq.Expressions/4.1.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Globalization": "4.0.11",
+ "System.IO": "4.1.0",
+ "System.Linq": "4.1.0",
+ "System.ObjectModel": "4.0.12",
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit": "4.0.1",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Emit.Lightweight": "4.0.1",
+ "System.Reflection.Extensions": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Reflection.TypeExtensions": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.ObjectModel/4.0.12": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.Reflection/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.IO": "4.1.0",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit/4.0.1": {
+ "dependencies": {
+ "System.IO": "4.1.0",
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit.ILGeneration/4.0.1": {
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit.Lightweight/4.0.1": {
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Extensions/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Primitives/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.TypeExtensions/4.1.0": {
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Resources.ResourceManager/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Globalization": "4.0.11",
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Runtime/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1"
+ }
+ },
+ "System.Runtime.Extensions/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Runtime.Serialization.Primitives/4.1.1": {
+ "dependencies": {
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Text.Encoding/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Text.Encoding.Extensions/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Text.Encoding": "4.0.11"
+ }
+ },
+ "System.Text.RegularExpressions/4.1.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Globalization": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.Threading/4.0.11": {
+ "dependencies": {
+ "System.Runtime": "4.1.0",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.Threading.Tasks/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "Ude.NetStandard/1.2.0": {
+ "runtime": {
+ "lib/netstandard2.0/Ude.NetStandard.dll": {
+ "assemblyVersion": "1.0.2.0",
+ "fileVersion": "1.0.2.0"
+ }
+ }
+ },
+ "YamlDotNet.NetCore/1.0.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Diagnostics.Tools": "4.0.1",
+ "System.Globalization": "4.0.11",
+ "System.Linq": "4.1.0",
+ "System.Linq.Expressions": "4.1.0",
+ "System.ObjectModel": "4.0.12",
+ "System.Reflection.Extensions": "4.0.1",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Runtime.Serialization.Primitives": "4.1.1",
+ "System.Text.Encoding.Extensions": "4.0.11",
+ "System.Text.RegularExpressions": "4.1.0"
+ },
+ "runtime": {
+ "lib/netstandard1.0/YamlDotNet.NetCore.dll": {
+ "assemblyVersion": "0.0.1.0",
+ "fileVersion": "0.0.0.0"
+ }
+ }
+ },
+ "Luban.Core/1.0.0": {
+ "dependencies": {
+ "NLog": "5.3.4",
+ "Scriban": "5.12.0"
+ },
+ "runtime": {
+ "Luban.Core.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Luban.CSharp/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0",
+ "Luban.DataValidator.Builtin": "1.0.0"
+ },
+ "runtime": {
+ "Luban.CSharp.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Luban.DataLoader.Builtin/1.0.0": {
+ "dependencies": {
+ "ExcelDataReader": "3.7.0",
+ "Luban.Core": "1.0.0",
+ "NeoLua": "1.3.14",
+ "Ude.NetStandard": "1.2.0",
+ "YamlDotNet.NetCore": "1.0.0"
+ },
+ "runtime": {
+ "Luban.DataLoader.Builtin.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Luban.DataTarget.Builtin/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0",
+ "Luban.DataLoader.Builtin": "1.0.0"
+ },
+ "runtime": {
+ "Luban.DataTarget.Builtin.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Luban.DataValidator.Builtin/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0"
+ },
+ "runtime": {
+ "Luban.DataValidator.Builtin.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ }
+ }
+ },
+ "libraries": {
+ "Luban.Javascript/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "ExcelDataReader/3.7.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-AMv3oDETRHSRyXC17rBtKH45qIfFyo433LMeaMB3u4RNr/c9Luuc0Z+JMP6+3Cx9n4wXqFqcrEIVxrf/GgYnZg==",
+ "path": "exceldatareader/3.7.0",
+ "hashPath": "exceldatareader.3.7.0.nupkg.sha512"
+ },
+ "Microsoft.CSharp/4.5.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-kaj6Wb4qoMuH3HySFJhxwQfe8R/sJsNJnANrvv8WdFPMoNbKY5htfNscv+LHCu5ipz+49m2e+WQXpLXr9XYemQ==",
+ "path": "microsoft.csharp/4.5.0",
+ "hashPath": "microsoft.csharp.4.5.0.nupkg.sha512"
+ },
+ "Microsoft.NETCore.Platforms/1.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-2G6OjjJzwBfNOO8myRV/nFrbTw5iA+DEm0N+qUqhrOmaVtn4pC77h38I1jsXGw5VH55+dPfQsqHD0We9sCl9FQ==",
+ "path": "microsoft.netcore.platforms/1.0.1",
+ "hashPath": "microsoft.netcore.platforms.1.0.1.nupkg.sha512"
+ },
+ "Microsoft.NETCore.Targets/1.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-rkn+fKobF/cbWfnnfBOQHKVKIOpxMZBvlSHkqDWgBpwGDcLRduvs3D9OLGeV6GWGvVwNlVi2CBbTjuPmtHvyNw==",
+ "path": "microsoft.netcore.targets/1.0.1",
+ "hashPath": "microsoft.netcore.targets.1.0.1.nupkg.sha512"
+ },
+ "NeoLua/1.3.14": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-BXIUN+ePY2wx3ZGiSmR8KZKD85s01pXI690orrB3u/biB8R0nalziGw+iGbPBq1Cuz8Upggpw2ERF84POXWTCQ==",
+ "path": "neolua/1.3.14",
+ "hashPath": "neolua.1.3.14.nupkg.sha512"
+ },
+ "NLog/5.3.4": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-gLy7+O1hEYJXIlcTr1/VWjGXrZTQFZzYNO18IWasD64pNwz0BreV+nHLxWKXWZzERRzoKnsk2XYtwLkTVk7J1A==",
+ "path": "nlog/5.3.4",
+ "hashPath": "nlog.5.3.4.nupkg.sha512"
+ },
+ "Scriban/5.12.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-/YTTCxjBIpfwX3MKMT4JMFVl1jX4IHW7zih+Bg3cTIkzGnbFt+B3l/k90ILDw6DRiFE7T+VxEyls7zk4p029ng==",
+ "path": "scriban/5.12.0",
+ "hashPath": "scriban.5.12.0.nupkg.sha512"
+ },
+ "System.Collections/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-YUJGz6eFKqS0V//mLt25vFGrrCvOnsXjlvFQs+KimpwNxug9x0Pzy4PlFMU3Q2IzqAa9G2L4LsK3+9vCBK7oTg==",
+ "path": "system.collections/4.0.11",
+ "hashPath": "system.collections.4.0.11.nupkg.sha512"
+ },
+ "System.Diagnostics.Debug/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-w5U95fVKHY4G8ASs/K5iK3J5LY+/dLFd4vKejsnI/ZhBsWS9hQakfx3Zr7lRWKg4tAw9r4iktyvsTagWkqYCiw==",
+ "path": "system.diagnostics.debug/4.0.11",
+ "hashPath": "system.diagnostics.debug.4.0.11.nupkg.sha512"
+ },
+ "System.Diagnostics.Tools/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-xBfJ8pnd4C17dWaC9FM6aShzbJcRNMChUMD42I6772KGGrqaFdumwhn9OdM68erj1ueNo3xdQ1EwiFjK5k8p0g==",
+ "path": "system.diagnostics.tools/4.0.1",
+ "hashPath": "system.diagnostics.tools.4.0.1.nupkg.sha512"
+ },
+ "System.Globalization/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-B95h0YLEL2oSnwF/XjqSWKnwKOy/01VWkNlsCeMTFJLLabflpGV26nK164eRs5GiaRSBGpOxQ3pKoSnnyZN5pg==",
+ "path": "system.globalization/4.0.11",
+ "hashPath": "system.globalization.4.0.11.nupkg.sha512"
+ },
+ "System.IO/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-3KlTJceQc3gnGIaHZ7UBZO26SHL1SHE4ddrmiwumFnId+CEHP+O8r386tZKaE6zlk5/mF8vifMBzHj9SaXN+mQ==",
+ "path": "system.io/4.1.0",
+ "hashPath": "system.io.4.1.0.nupkg.sha512"
+ },
+ "System.Linq/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-bQ0iYFOQI0nuTnt+NQADns6ucV4DUvMdwN6CbkB1yj8i7arTGiTN5eok1kQwdnnNWSDZfIUySQY+J3d5KjWn0g==",
+ "path": "system.linq/4.1.0",
+ "hashPath": "system.linq.4.1.0.nupkg.sha512"
+ },
+ "System.Linq.Expressions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-I+y02iqkgmCAyfbqOmSDOgqdZQ5tTj80Akm5BPSS8EeB0VGWdy6X1KCoYe8Pk6pwDoAKZUOdLVxnTJcExiv5zw==",
+ "path": "system.linq.expressions/4.1.0",
+ "hashPath": "system.linq.expressions.4.1.0.nupkg.sha512"
+ },
+ "System.ObjectModel/4.0.12": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-tAgJM1xt3ytyMoW4qn4wIqgJYm7L7TShRZG4+Q4Qsi2PCcj96pXN7nRywS9KkB3p/xDUjc2HSwP9SROyPYDYKQ==",
+ "path": "system.objectmodel/4.0.12",
+ "hashPath": "system.objectmodel.4.0.12.nupkg.sha512"
+ },
+ "System.Reflection/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-JCKANJ0TI7kzoQzuwB/OoJANy1Lg338B6+JVacPl4TpUwi3cReg3nMLplMq2uqYfHFQpKIlHAUVAJlImZz/4ng==",
+ "path": "system.reflection/4.1.0",
+ "hashPath": "system.reflection.4.1.0.nupkg.sha512"
+ },
+ "System.Reflection.Emit/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-P2wqAj72fFjpP6wb9nSfDqNBMab+2ovzSDzUZK7MVIm54tBJEPr9jWfSjjoTpPwj1LeKcmX3vr0ttyjSSFM47g==",
+ "path": "system.reflection.emit/4.0.1",
+ "hashPath": "system.reflection.emit.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Emit.ILGeneration/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-Ov6dU8Bu15Bc7zuqttgHF12J5lwSWyTf1S+FJouUXVMSqImLZzYaQ+vRr1rQ0OZ0HqsrwWl4dsKHELckQkVpgA==",
+ "path": "system.reflection.emit.ilgeneration/4.0.1",
+ "hashPath": "system.reflection.emit.ilgeneration.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Emit.Lightweight/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-sSzHHXueZ5Uh0OLpUQprhr+ZYJrLPA2Cmr4gn0wj9+FftNKXx8RIMKvO9qnjk2ebPYUjZ+F2ulGdPOsvj+MEjA==",
+ "path": "system.reflection.emit.lightweight/4.0.1",
+ "hashPath": "system.reflection.emit.lightweight.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Extensions/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-GYrtRsZcMuHF3sbmRHfMYpvxZoIN2bQGrYGerUiWLEkqdEUQZhH3TRSaC/oI4wO0II1RKBPlpIa1TOMxIcOOzQ==",
+ "path": "system.reflection.extensions/4.0.1",
+ "hashPath": "system.reflection.extensions.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Primitives/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-4inTox4wTBaDhB7V3mPvp9XlCbeGYWVEM9/fXALd52vNEAVisc1BoVWQPuUuD0Ga//dNbA/WeMy9u9mzLxGTHQ==",
+ "path": "system.reflection.primitives/4.0.1",
+ "hashPath": "system.reflection.primitives.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.TypeExtensions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-tsQ/ptQ3H5FYfON8lL4MxRk/8kFyE0A+tGPXmVP967cT/gzLHYxIejIYSxp4JmIeFHVP78g/F2FE1mUUTbDtrg==",
+ "path": "system.reflection.typeextensions/4.1.0",
+ "hashPath": "system.reflection.typeextensions.4.1.0.nupkg.sha512"
+ },
+ "System.Resources.ResourceManager/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-TxwVeUNoTgUOdQ09gfTjvW411MF+w9MBYL7AtNVc+HtBCFlutPLhUCdZjNkjbhj3bNQWMdHboF0KIWEOjJssbA==",
+ "path": "system.resources.resourcemanager/4.0.1",
+ "hashPath": "system.resources.resourcemanager.4.0.1.nupkg.sha512"
+ },
+ "System.Runtime/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-v6c/4Yaa9uWsq+JMhnOFewrYkgdNHNG2eMKuNqRn8P733rNXeRCGvV5FkkjBXn2dbVkPXOsO0xjsEeM1q2zC0g==",
+ "path": "system.runtime/4.1.0",
+ "hashPath": "system.runtime.4.1.0.nupkg.sha512"
+ },
+ "System.Runtime.Extensions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-CUOHjTT/vgP0qGW22U4/hDlOqXmcPq5YicBaXdUR2UiUoLwBT+olO6we4DVbq57jeX5uXH2uerVZhf0qGj+sVQ==",
+ "path": "system.runtime.extensions/4.1.0",
+ "hashPath": "system.runtime.extensions.4.1.0.nupkg.sha512"
+ },
+ "System.Runtime.Serialization.Primitives/4.1.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-HZ6Du5QrTG8MNJbf4e4qMO3JRAkIboGT5Fk804uZtg3Gq516S7hAqTm2UZKUHa7/6HUGdVy3AqMQKbns06G/cg==",
+ "path": "system.runtime.serialization.primitives/4.1.1",
+ "hashPath": "system.runtime.serialization.primitives.4.1.1.nupkg.sha512"
+ },
+ "System.Text.Encoding/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-U3gGeMlDZXxCEiY4DwVLSacg+DFWCvoiX+JThA/rvw37Sqrku7sEFeVBBBMBnfB6FeZHsyDx85HlKL19x0HtZA==",
+ "path": "system.text.encoding/4.0.11",
+ "hashPath": "system.text.encoding.4.0.11.nupkg.sha512"
+ },
+ "System.Text.Encoding.Extensions/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-jtbiTDtvfLYgXn8PTfWI+SiBs51rrmO4AAckx4KR6vFK9Wzf6tI8kcRdsYQNwriUeQ1+CtQbM1W4cMbLXnj/OQ==",
+ "path": "system.text.encoding.extensions/4.0.11",
+ "hashPath": "system.text.encoding.extensions.4.0.11.nupkg.sha512"
+ },
+ "System.Text.RegularExpressions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-i88YCXpRTjCnoSQZtdlHkAOx4KNNik4hMy83n0+Ftlb7jvV6ZiZWMpnEZHhjBp6hQVh8gWd/iKNPzlPF7iyA2g==",
+ "path": "system.text.regularexpressions/4.1.0",
+ "hashPath": "system.text.regularexpressions.4.1.0.nupkg.sha512"
+ },
+ "System.Threading/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-N+3xqIcg3VDKyjwwCGaZ9HawG9aC6cSDI+s7ROma310GQo8vilFZa86hqKppwTHleR/G0sfOzhvgnUxWCR/DrQ==",
+ "path": "system.threading/4.0.11",
+ "hashPath": "system.threading.4.0.11.nupkg.sha512"
+ },
+ "System.Threading.Tasks/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-k1S4Gc6IGwtHGT8188RSeGaX86Qw/wnrgNLshJvsdNUOPP9etMmo8S07c+UlOAx4K/xLuN9ivA1bD0LVurtIxQ==",
+ "path": "system.threading.tasks/4.0.11",
+ "hashPath": "system.threading.tasks.4.0.11.nupkg.sha512"
+ },
+ "Ude.NetStandard/1.2.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-zRWpPAxBg3lNdm4UiKixTe+DFPoNid9CILggTCy/0WR2WKETe17kTWhiiIpLB2k5IEgnvA0QLfKlvd6Tvu0pzA==",
+ "path": "ude.netstandard/1.2.0",
+ "hashPath": "ude.netstandard.1.2.0.nupkg.sha512"
+ },
+ "YamlDotNet.NetCore/1.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-vPiKF4Yf02MS96Nzwcr8+WrvlhTx+camOgUzxhazU0hCzs2ESetWDCxaIT/MYdAw2oONYem1ow9PXWJjHkRUDw==",
+ "path": "yamldotnet.netcore/1.0.0",
+ "hashPath": "yamldotnet.netcore.1.0.0.nupkg.sha512"
+ },
+ "Luban.Core/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Luban.CSharp/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Luban.DataLoader.Builtin/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Luban.DataTarget.Builtin/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Luban.DataValidator.Builtin/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/Luban/Luban.Javascript.dll b/Luban/Luban.Javascript.dll
new file mode 100644
index 0000000..8b3912d
Binary files /dev/null and b/Luban/Luban.Javascript.dll differ
diff --git a/Luban/Luban.Javascript.pdb b/Luban/Luban.Javascript.pdb
new file mode 100644
index 0000000..93b6109
Binary files /dev/null and b/Luban/Luban.Javascript.pdb differ
diff --git a/Luban/Luban.L10N.deps.json b/Luban/Luban.L10N.deps.json
new file mode 100644
index 0000000..605a603
--- /dev/null
+++ b/Luban/Luban.L10N.deps.json
@@ -0,0 +1,564 @@
+{
+ "runtimeTarget": {
+ "name": ".NETCoreApp,Version=v8.0",
+ "signature": ""
+ },
+ "compilationOptions": {},
+ "targets": {
+ ".NETCoreApp,Version=v8.0": {
+ "Luban.L10N/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0",
+ "Luban.DataLoader.Builtin": "1.0.0"
+ },
+ "runtime": {
+ "Luban.L10N.dll": {}
+ }
+ },
+ "ExcelDataReader/3.7.0": {
+ "runtime": {
+ "lib/netstandard2.1/ExcelDataReader.dll": {
+ "assemblyVersion": "3.7.0.0",
+ "fileVersion": "3.7.0.0"
+ }
+ }
+ },
+ "Microsoft.CSharp/4.5.0": {},
+ "Microsoft.NETCore.Platforms/1.0.1": {},
+ "Microsoft.NETCore.Targets/1.0.1": {},
+ "NeoLua/1.3.14": {
+ "dependencies": {
+ "Microsoft.CSharp": "4.5.0"
+ },
+ "runtime": {
+ "lib/net5.0/Neo.Lua.dll": {
+ "assemblyVersion": "5.3.0.0",
+ "fileVersion": "1.3.14.0"
+ }
+ },
+ "resources": {
+ "lib/net5.0/de/Neo.Lua.resources.dll": {
+ "locale": "de"
+ }
+ }
+ },
+ "NLog/5.3.4": {
+ "runtime": {
+ "lib/netstandard2.0/NLog.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.3.4.2778"
+ }
+ }
+ },
+ "Scriban/5.12.0": {
+ "runtime": {
+ "lib/net7.0/Scriban.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.12.0.0"
+ }
+ }
+ },
+ "System.Collections/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Diagnostics.Debug/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Diagnostics.Tools/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Globalization/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.IO/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Text.Encoding": "4.0.11",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.Linq/4.1.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0"
+ }
+ },
+ "System.Linq.Expressions/4.1.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Globalization": "4.0.11",
+ "System.IO": "4.1.0",
+ "System.Linq": "4.1.0",
+ "System.ObjectModel": "4.0.12",
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit": "4.0.1",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Emit.Lightweight": "4.0.1",
+ "System.Reflection.Extensions": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Reflection.TypeExtensions": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.ObjectModel/4.0.12": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.Reflection/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.IO": "4.1.0",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit/4.0.1": {
+ "dependencies": {
+ "System.IO": "4.1.0",
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit.ILGeneration/4.0.1": {
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit.Lightweight/4.0.1": {
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Extensions/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Primitives/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.TypeExtensions/4.1.0": {
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Resources.ResourceManager/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Globalization": "4.0.11",
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Runtime/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1"
+ }
+ },
+ "System.Runtime.Extensions/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Runtime.Serialization.Primitives/4.1.1": {
+ "dependencies": {
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Text.Encoding/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Text.Encoding.Extensions/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Text.Encoding": "4.0.11"
+ }
+ },
+ "System.Text.RegularExpressions/4.1.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Globalization": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.Threading/4.0.11": {
+ "dependencies": {
+ "System.Runtime": "4.1.0",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.Threading.Tasks/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "Ude.NetStandard/1.2.0": {
+ "runtime": {
+ "lib/netstandard2.0/Ude.NetStandard.dll": {
+ "assemblyVersion": "1.0.2.0",
+ "fileVersion": "1.0.2.0"
+ }
+ }
+ },
+ "YamlDotNet.NetCore/1.0.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Diagnostics.Tools": "4.0.1",
+ "System.Globalization": "4.0.11",
+ "System.Linq": "4.1.0",
+ "System.Linq.Expressions": "4.1.0",
+ "System.ObjectModel": "4.0.12",
+ "System.Reflection.Extensions": "4.0.1",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Runtime.Serialization.Primitives": "4.1.1",
+ "System.Text.Encoding.Extensions": "4.0.11",
+ "System.Text.RegularExpressions": "4.1.0"
+ },
+ "runtime": {
+ "lib/netstandard1.0/YamlDotNet.NetCore.dll": {
+ "assemblyVersion": "0.0.1.0",
+ "fileVersion": "0.0.0.0"
+ }
+ }
+ },
+ "Luban.Core/1.0.0": {
+ "dependencies": {
+ "NLog": "5.3.4",
+ "Scriban": "5.12.0"
+ },
+ "runtime": {
+ "Luban.Core.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Luban.DataLoader.Builtin/1.0.0": {
+ "dependencies": {
+ "ExcelDataReader": "3.7.0",
+ "Luban.Core": "1.0.0",
+ "NeoLua": "1.3.14",
+ "Ude.NetStandard": "1.2.0",
+ "YamlDotNet.NetCore": "1.0.0"
+ },
+ "runtime": {
+ "Luban.DataLoader.Builtin.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ }
+ }
+ },
+ "libraries": {
+ "Luban.L10N/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "ExcelDataReader/3.7.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-AMv3oDETRHSRyXC17rBtKH45qIfFyo433LMeaMB3u4RNr/c9Luuc0Z+JMP6+3Cx9n4wXqFqcrEIVxrf/GgYnZg==",
+ "path": "exceldatareader/3.7.0",
+ "hashPath": "exceldatareader.3.7.0.nupkg.sha512"
+ },
+ "Microsoft.CSharp/4.5.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-kaj6Wb4qoMuH3HySFJhxwQfe8R/sJsNJnANrvv8WdFPMoNbKY5htfNscv+LHCu5ipz+49m2e+WQXpLXr9XYemQ==",
+ "path": "microsoft.csharp/4.5.0",
+ "hashPath": "microsoft.csharp.4.5.0.nupkg.sha512"
+ },
+ "Microsoft.NETCore.Platforms/1.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-2G6OjjJzwBfNOO8myRV/nFrbTw5iA+DEm0N+qUqhrOmaVtn4pC77h38I1jsXGw5VH55+dPfQsqHD0We9sCl9FQ==",
+ "path": "microsoft.netcore.platforms/1.0.1",
+ "hashPath": "microsoft.netcore.platforms.1.0.1.nupkg.sha512"
+ },
+ "Microsoft.NETCore.Targets/1.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-rkn+fKobF/cbWfnnfBOQHKVKIOpxMZBvlSHkqDWgBpwGDcLRduvs3D9OLGeV6GWGvVwNlVi2CBbTjuPmtHvyNw==",
+ "path": "microsoft.netcore.targets/1.0.1",
+ "hashPath": "microsoft.netcore.targets.1.0.1.nupkg.sha512"
+ },
+ "NeoLua/1.3.14": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-BXIUN+ePY2wx3ZGiSmR8KZKD85s01pXI690orrB3u/biB8R0nalziGw+iGbPBq1Cuz8Upggpw2ERF84POXWTCQ==",
+ "path": "neolua/1.3.14",
+ "hashPath": "neolua.1.3.14.nupkg.sha512"
+ },
+ "NLog/5.3.4": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-gLy7+O1hEYJXIlcTr1/VWjGXrZTQFZzYNO18IWasD64pNwz0BreV+nHLxWKXWZzERRzoKnsk2XYtwLkTVk7J1A==",
+ "path": "nlog/5.3.4",
+ "hashPath": "nlog.5.3.4.nupkg.sha512"
+ },
+ "Scriban/5.12.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-/YTTCxjBIpfwX3MKMT4JMFVl1jX4IHW7zih+Bg3cTIkzGnbFt+B3l/k90ILDw6DRiFE7T+VxEyls7zk4p029ng==",
+ "path": "scriban/5.12.0",
+ "hashPath": "scriban.5.12.0.nupkg.sha512"
+ },
+ "System.Collections/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-YUJGz6eFKqS0V//mLt25vFGrrCvOnsXjlvFQs+KimpwNxug9x0Pzy4PlFMU3Q2IzqAa9G2L4LsK3+9vCBK7oTg==",
+ "path": "system.collections/4.0.11",
+ "hashPath": "system.collections.4.0.11.nupkg.sha512"
+ },
+ "System.Diagnostics.Debug/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-w5U95fVKHY4G8ASs/K5iK3J5LY+/dLFd4vKejsnI/ZhBsWS9hQakfx3Zr7lRWKg4tAw9r4iktyvsTagWkqYCiw==",
+ "path": "system.diagnostics.debug/4.0.11",
+ "hashPath": "system.diagnostics.debug.4.0.11.nupkg.sha512"
+ },
+ "System.Diagnostics.Tools/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-xBfJ8pnd4C17dWaC9FM6aShzbJcRNMChUMD42I6772KGGrqaFdumwhn9OdM68erj1ueNo3xdQ1EwiFjK5k8p0g==",
+ "path": "system.diagnostics.tools/4.0.1",
+ "hashPath": "system.diagnostics.tools.4.0.1.nupkg.sha512"
+ },
+ "System.Globalization/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-B95h0YLEL2oSnwF/XjqSWKnwKOy/01VWkNlsCeMTFJLLabflpGV26nK164eRs5GiaRSBGpOxQ3pKoSnnyZN5pg==",
+ "path": "system.globalization/4.0.11",
+ "hashPath": "system.globalization.4.0.11.nupkg.sha512"
+ },
+ "System.IO/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-3KlTJceQc3gnGIaHZ7UBZO26SHL1SHE4ddrmiwumFnId+CEHP+O8r386tZKaE6zlk5/mF8vifMBzHj9SaXN+mQ==",
+ "path": "system.io/4.1.0",
+ "hashPath": "system.io.4.1.0.nupkg.sha512"
+ },
+ "System.Linq/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-bQ0iYFOQI0nuTnt+NQADns6ucV4DUvMdwN6CbkB1yj8i7arTGiTN5eok1kQwdnnNWSDZfIUySQY+J3d5KjWn0g==",
+ "path": "system.linq/4.1.0",
+ "hashPath": "system.linq.4.1.0.nupkg.sha512"
+ },
+ "System.Linq.Expressions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-I+y02iqkgmCAyfbqOmSDOgqdZQ5tTj80Akm5BPSS8EeB0VGWdy6X1KCoYe8Pk6pwDoAKZUOdLVxnTJcExiv5zw==",
+ "path": "system.linq.expressions/4.1.0",
+ "hashPath": "system.linq.expressions.4.1.0.nupkg.sha512"
+ },
+ "System.ObjectModel/4.0.12": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-tAgJM1xt3ytyMoW4qn4wIqgJYm7L7TShRZG4+Q4Qsi2PCcj96pXN7nRywS9KkB3p/xDUjc2HSwP9SROyPYDYKQ==",
+ "path": "system.objectmodel/4.0.12",
+ "hashPath": "system.objectmodel.4.0.12.nupkg.sha512"
+ },
+ "System.Reflection/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-JCKANJ0TI7kzoQzuwB/OoJANy1Lg338B6+JVacPl4TpUwi3cReg3nMLplMq2uqYfHFQpKIlHAUVAJlImZz/4ng==",
+ "path": "system.reflection/4.1.0",
+ "hashPath": "system.reflection.4.1.0.nupkg.sha512"
+ },
+ "System.Reflection.Emit/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-P2wqAj72fFjpP6wb9nSfDqNBMab+2ovzSDzUZK7MVIm54tBJEPr9jWfSjjoTpPwj1LeKcmX3vr0ttyjSSFM47g==",
+ "path": "system.reflection.emit/4.0.1",
+ "hashPath": "system.reflection.emit.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Emit.ILGeneration/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-Ov6dU8Bu15Bc7zuqttgHF12J5lwSWyTf1S+FJouUXVMSqImLZzYaQ+vRr1rQ0OZ0HqsrwWl4dsKHELckQkVpgA==",
+ "path": "system.reflection.emit.ilgeneration/4.0.1",
+ "hashPath": "system.reflection.emit.ilgeneration.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Emit.Lightweight/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-sSzHHXueZ5Uh0OLpUQprhr+ZYJrLPA2Cmr4gn0wj9+FftNKXx8RIMKvO9qnjk2ebPYUjZ+F2ulGdPOsvj+MEjA==",
+ "path": "system.reflection.emit.lightweight/4.0.1",
+ "hashPath": "system.reflection.emit.lightweight.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Extensions/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-GYrtRsZcMuHF3sbmRHfMYpvxZoIN2bQGrYGerUiWLEkqdEUQZhH3TRSaC/oI4wO0II1RKBPlpIa1TOMxIcOOzQ==",
+ "path": "system.reflection.extensions/4.0.1",
+ "hashPath": "system.reflection.extensions.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Primitives/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-4inTox4wTBaDhB7V3mPvp9XlCbeGYWVEM9/fXALd52vNEAVisc1BoVWQPuUuD0Ga//dNbA/WeMy9u9mzLxGTHQ==",
+ "path": "system.reflection.primitives/4.0.1",
+ "hashPath": "system.reflection.primitives.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.TypeExtensions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-tsQ/ptQ3H5FYfON8lL4MxRk/8kFyE0A+tGPXmVP967cT/gzLHYxIejIYSxp4JmIeFHVP78g/F2FE1mUUTbDtrg==",
+ "path": "system.reflection.typeextensions/4.1.0",
+ "hashPath": "system.reflection.typeextensions.4.1.0.nupkg.sha512"
+ },
+ "System.Resources.ResourceManager/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-TxwVeUNoTgUOdQ09gfTjvW411MF+w9MBYL7AtNVc+HtBCFlutPLhUCdZjNkjbhj3bNQWMdHboF0KIWEOjJssbA==",
+ "path": "system.resources.resourcemanager/4.0.1",
+ "hashPath": "system.resources.resourcemanager.4.0.1.nupkg.sha512"
+ },
+ "System.Runtime/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-v6c/4Yaa9uWsq+JMhnOFewrYkgdNHNG2eMKuNqRn8P733rNXeRCGvV5FkkjBXn2dbVkPXOsO0xjsEeM1q2zC0g==",
+ "path": "system.runtime/4.1.0",
+ "hashPath": "system.runtime.4.1.0.nupkg.sha512"
+ },
+ "System.Runtime.Extensions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-CUOHjTT/vgP0qGW22U4/hDlOqXmcPq5YicBaXdUR2UiUoLwBT+olO6we4DVbq57jeX5uXH2uerVZhf0qGj+sVQ==",
+ "path": "system.runtime.extensions/4.1.0",
+ "hashPath": "system.runtime.extensions.4.1.0.nupkg.sha512"
+ },
+ "System.Runtime.Serialization.Primitives/4.1.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-HZ6Du5QrTG8MNJbf4e4qMO3JRAkIboGT5Fk804uZtg3Gq516S7hAqTm2UZKUHa7/6HUGdVy3AqMQKbns06G/cg==",
+ "path": "system.runtime.serialization.primitives/4.1.1",
+ "hashPath": "system.runtime.serialization.primitives.4.1.1.nupkg.sha512"
+ },
+ "System.Text.Encoding/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-U3gGeMlDZXxCEiY4DwVLSacg+DFWCvoiX+JThA/rvw37Sqrku7sEFeVBBBMBnfB6FeZHsyDx85HlKL19x0HtZA==",
+ "path": "system.text.encoding/4.0.11",
+ "hashPath": "system.text.encoding.4.0.11.nupkg.sha512"
+ },
+ "System.Text.Encoding.Extensions/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-jtbiTDtvfLYgXn8PTfWI+SiBs51rrmO4AAckx4KR6vFK9Wzf6tI8kcRdsYQNwriUeQ1+CtQbM1W4cMbLXnj/OQ==",
+ "path": "system.text.encoding.extensions/4.0.11",
+ "hashPath": "system.text.encoding.extensions.4.0.11.nupkg.sha512"
+ },
+ "System.Text.RegularExpressions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-i88YCXpRTjCnoSQZtdlHkAOx4KNNik4hMy83n0+Ftlb7jvV6ZiZWMpnEZHhjBp6hQVh8gWd/iKNPzlPF7iyA2g==",
+ "path": "system.text.regularexpressions/4.1.0",
+ "hashPath": "system.text.regularexpressions.4.1.0.nupkg.sha512"
+ },
+ "System.Threading/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-N+3xqIcg3VDKyjwwCGaZ9HawG9aC6cSDI+s7ROma310GQo8vilFZa86hqKppwTHleR/G0sfOzhvgnUxWCR/DrQ==",
+ "path": "system.threading/4.0.11",
+ "hashPath": "system.threading.4.0.11.nupkg.sha512"
+ },
+ "System.Threading.Tasks/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-k1S4Gc6IGwtHGT8188RSeGaX86Qw/wnrgNLshJvsdNUOPP9etMmo8S07c+UlOAx4K/xLuN9ivA1bD0LVurtIxQ==",
+ "path": "system.threading.tasks/4.0.11",
+ "hashPath": "system.threading.tasks.4.0.11.nupkg.sha512"
+ },
+ "Ude.NetStandard/1.2.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-zRWpPAxBg3lNdm4UiKixTe+DFPoNid9CILggTCy/0WR2WKETe17kTWhiiIpLB2k5IEgnvA0QLfKlvd6Tvu0pzA==",
+ "path": "ude.netstandard/1.2.0",
+ "hashPath": "ude.netstandard.1.2.0.nupkg.sha512"
+ },
+ "YamlDotNet.NetCore/1.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-vPiKF4Yf02MS96Nzwcr8+WrvlhTx+camOgUzxhazU0hCzs2ESetWDCxaIT/MYdAw2oONYem1ow9PXWJjHkRUDw==",
+ "path": "yamldotnet.netcore/1.0.0",
+ "hashPath": "yamldotnet.netcore.1.0.0.nupkg.sha512"
+ },
+ "Luban.Core/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Luban.DataLoader.Builtin/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/Luban/Luban.L10N.dll b/Luban/Luban.L10N.dll
new file mode 100644
index 0000000..567c79a
Binary files /dev/null and b/Luban/Luban.L10N.dll differ
diff --git a/Luban/Luban.L10N.pdb b/Luban/Luban.L10N.pdb
new file mode 100644
index 0000000..ac48a3c
Binary files /dev/null and b/Luban/Luban.L10N.pdb differ
diff --git a/Luban/Luban.Lua.deps.json b/Luban/Luban.Lua.deps.json
new file mode 100644
index 0000000..dd9127d
--- /dev/null
+++ b/Luban/Luban.Lua.deps.json
@@ -0,0 +1,73 @@
+{
+ "runtimeTarget": {
+ "name": ".NETCoreApp,Version=v8.0",
+ "signature": ""
+ },
+ "compilationOptions": {},
+ "targets": {
+ ".NETCoreApp,Version=v8.0": {
+ "Luban.Lua/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0"
+ },
+ "runtime": {
+ "Luban.Lua.dll": {}
+ }
+ },
+ "NLog/5.3.4": {
+ "runtime": {
+ "lib/netstandard2.0/NLog.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.3.4.2778"
+ }
+ }
+ },
+ "Scriban/5.12.0": {
+ "runtime": {
+ "lib/net7.0/Scriban.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.12.0.0"
+ }
+ }
+ },
+ "Luban.Core/1.0.0": {
+ "dependencies": {
+ "NLog": "5.3.4",
+ "Scriban": "5.12.0"
+ },
+ "runtime": {
+ "Luban.Core.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ }
+ }
+ },
+ "libraries": {
+ "Luban.Lua/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "NLog/5.3.4": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-gLy7+O1hEYJXIlcTr1/VWjGXrZTQFZzYNO18IWasD64pNwz0BreV+nHLxWKXWZzERRzoKnsk2XYtwLkTVk7J1A==",
+ "path": "nlog/5.3.4",
+ "hashPath": "nlog.5.3.4.nupkg.sha512"
+ },
+ "Scriban/5.12.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-/YTTCxjBIpfwX3MKMT4JMFVl1jX4IHW7zih+Bg3cTIkzGnbFt+B3l/k90ILDw6DRiFE7T+VxEyls7zk4p029ng==",
+ "path": "scriban/5.12.0",
+ "hashPath": "scriban.5.12.0.nupkg.sha512"
+ },
+ "Luban.Core/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/Luban/Luban.Lua.dll b/Luban/Luban.Lua.dll
new file mode 100644
index 0000000..e854d3d
Binary files /dev/null and b/Luban/Luban.Lua.dll differ
diff --git a/Luban/Luban.Lua.pdb b/Luban/Luban.Lua.pdb
new file mode 100644
index 0000000..e587993
Binary files /dev/null and b/Luban/Luban.Lua.pdb differ
diff --git a/Luban/Luban.MsgPack.deps.json b/Luban/Luban.MsgPack.deps.json
new file mode 100644
index 0000000..8d9d9fd
--- /dev/null
+++ b/Luban/Luban.MsgPack.deps.json
@@ -0,0 +1,123 @@
+{
+ "runtimeTarget": {
+ "name": ".NETCoreApp,Version=v8.0",
+ "signature": ""
+ },
+ "compilationOptions": {},
+ "targets": {
+ ".NETCoreApp,Version=v8.0": {
+ "Luban.MsgPack/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0",
+ "MessagePack": "2.5.192"
+ },
+ "runtime": {
+ "Luban.MsgPack.dll": {}
+ }
+ },
+ "MessagePack/2.5.192": {
+ "dependencies": {
+ "MessagePack.Annotations": "2.5.192",
+ "Microsoft.NET.StringTools": "17.6.3"
+ },
+ "runtime": {
+ "lib/net6.0/MessagePack.dll": {
+ "assemblyVersion": "2.5.0.0",
+ "fileVersion": "2.5.192.54228"
+ }
+ }
+ },
+ "MessagePack.Annotations/2.5.192": {
+ "runtime": {
+ "lib/netstandard2.0/MessagePack.Annotations.dll": {
+ "assemblyVersion": "2.5.0.0",
+ "fileVersion": "2.5.192.54228"
+ }
+ }
+ },
+ "Microsoft.NET.StringTools/17.6.3": {
+ "runtime": {
+ "lib/net7.0/Microsoft.NET.StringTools.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "17.6.3.22601"
+ }
+ }
+ },
+ "NLog/5.3.4": {
+ "runtime": {
+ "lib/netstandard2.0/NLog.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.3.4.2778"
+ }
+ }
+ },
+ "Scriban/5.12.0": {
+ "runtime": {
+ "lib/net7.0/Scriban.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.12.0.0"
+ }
+ }
+ },
+ "Luban.Core/1.0.0": {
+ "dependencies": {
+ "NLog": "5.3.4",
+ "Scriban": "5.12.0"
+ },
+ "runtime": {
+ "Luban.Core.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ }
+ }
+ },
+ "libraries": {
+ "Luban.MsgPack/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "MessagePack/2.5.192": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-Jtle5MaFeIFkdXtxQeL9Tu2Y3HsAQGoSntOzrn6Br/jrl6c8QmG22GEioT5HBtZJR0zw0s46OnKU8ei2M3QifA==",
+ "path": "messagepack/2.5.192",
+ "hashPath": "messagepack.2.5.192.nupkg.sha512"
+ },
+ "MessagePack.Annotations/2.5.192": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-jaJuwcgovWIZ8Zysdyf3b7b34/BrADw4v82GaEZymUhDd3ScMPrYd/cttekeDteJJPXseJxp04yTIcxiVUjTWg==",
+ "path": "messagepack.annotations/2.5.192",
+ "hashPath": "messagepack.annotations.2.5.192.nupkg.sha512"
+ },
+ "Microsoft.NET.StringTools/17.6.3": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-N0ZIanl1QCgvUumEL1laasU0a7sOE5ZwLZVTn0pAePnfhq8P7SvTjF8Axq+CnavuQkmdQpGNXQ1efZtu5kDFbA==",
+ "path": "microsoft.net.stringtools/17.6.3",
+ "hashPath": "microsoft.net.stringtools.17.6.3.nupkg.sha512"
+ },
+ "NLog/5.3.4": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-gLy7+O1hEYJXIlcTr1/VWjGXrZTQFZzYNO18IWasD64pNwz0BreV+nHLxWKXWZzERRzoKnsk2XYtwLkTVk7J1A==",
+ "path": "nlog/5.3.4",
+ "hashPath": "nlog.5.3.4.nupkg.sha512"
+ },
+ "Scriban/5.12.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-/YTTCxjBIpfwX3MKMT4JMFVl1jX4IHW7zih+Bg3cTIkzGnbFt+B3l/k90ILDw6DRiFE7T+VxEyls7zk4p029ng==",
+ "path": "scriban/5.12.0",
+ "hashPath": "scriban.5.12.0.nupkg.sha512"
+ },
+ "Luban.Core/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/Luban/Luban.MsgPack.dll b/Luban/Luban.MsgPack.dll
new file mode 100644
index 0000000..1ac7b77
Binary files /dev/null and b/Luban/Luban.MsgPack.dll differ
diff --git a/Luban/Luban.MsgPack.pdb b/Luban/Luban.MsgPack.pdb
new file mode 100644
index 0000000..075d408
Binary files /dev/null and b/Luban/Luban.MsgPack.pdb differ
diff --git a/Luban/Luban.PHP.deps.json b/Luban/Luban.PHP.deps.json
new file mode 100644
index 0000000..6447dd8
--- /dev/null
+++ b/Luban/Luban.PHP.deps.json
@@ -0,0 +1,581 @@
+{
+ "runtimeTarget": {
+ "name": ".NETCoreApp,Version=v8.0",
+ "signature": ""
+ },
+ "compilationOptions": {},
+ "targets": {
+ ".NETCoreApp,Version=v8.0": {
+ "Luban.PHP/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0",
+ "Luban.DataTarget.Builtin": "1.0.0"
+ },
+ "runtime": {
+ "Luban.PHP.dll": {}
+ }
+ },
+ "ExcelDataReader/3.7.0": {
+ "runtime": {
+ "lib/netstandard2.1/ExcelDataReader.dll": {
+ "assemblyVersion": "3.7.0.0",
+ "fileVersion": "3.7.0.0"
+ }
+ }
+ },
+ "Microsoft.CSharp/4.5.0": {},
+ "Microsoft.NETCore.Platforms/1.0.1": {},
+ "Microsoft.NETCore.Targets/1.0.1": {},
+ "NeoLua/1.3.14": {
+ "dependencies": {
+ "Microsoft.CSharp": "4.5.0"
+ },
+ "runtime": {
+ "lib/net5.0/Neo.Lua.dll": {
+ "assemblyVersion": "5.3.0.0",
+ "fileVersion": "1.3.14.0"
+ }
+ },
+ "resources": {
+ "lib/net5.0/de/Neo.Lua.resources.dll": {
+ "locale": "de"
+ }
+ }
+ },
+ "NLog/5.3.4": {
+ "runtime": {
+ "lib/netstandard2.0/NLog.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.3.4.2778"
+ }
+ }
+ },
+ "Scriban/5.12.0": {
+ "runtime": {
+ "lib/net7.0/Scriban.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.12.0.0"
+ }
+ }
+ },
+ "System.Collections/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Diagnostics.Debug/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Diagnostics.Tools/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Globalization/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.IO/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Text.Encoding": "4.0.11",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.Linq/4.1.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0"
+ }
+ },
+ "System.Linq.Expressions/4.1.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Globalization": "4.0.11",
+ "System.IO": "4.1.0",
+ "System.Linq": "4.1.0",
+ "System.ObjectModel": "4.0.12",
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit": "4.0.1",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Emit.Lightweight": "4.0.1",
+ "System.Reflection.Extensions": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Reflection.TypeExtensions": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.ObjectModel/4.0.12": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.Reflection/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.IO": "4.1.0",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit/4.0.1": {
+ "dependencies": {
+ "System.IO": "4.1.0",
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit.ILGeneration/4.0.1": {
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit.Lightweight/4.0.1": {
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Extensions/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Primitives/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.TypeExtensions/4.1.0": {
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Resources.ResourceManager/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Globalization": "4.0.11",
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Runtime/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1"
+ }
+ },
+ "System.Runtime.Extensions/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Runtime.Serialization.Primitives/4.1.1": {
+ "dependencies": {
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Text.Encoding/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Text.Encoding.Extensions/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Text.Encoding": "4.0.11"
+ }
+ },
+ "System.Text.RegularExpressions/4.1.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Globalization": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.Threading/4.0.11": {
+ "dependencies": {
+ "System.Runtime": "4.1.0",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.Threading.Tasks/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "Ude.NetStandard/1.2.0": {
+ "runtime": {
+ "lib/netstandard2.0/Ude.NetStandard.dll": {
+ "assemblyVersion": "1.0.2.0",
+ "fileVersion": "1.0.2.0"
+ }
+ }
+ },
+ "YamlDotNet.NetCore/1.0.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Diagnostics.Tools": "4.0.1",
+ "System.Globalization": "4.0.11",
+ "System.Linq": "4.1.0",
+ "System.Linq.Expressions": "4.1.0",
+ "System.ObjectModel": "4.0.12",
+ "System.Reflection.Extensions": "4.0.1",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Runtime.Serialization.Primitives": "4.1.1",
+ "System.Text.Encoding.Extensions": "4.0.11",
+ "System.Text.RegularExpressions": "4.1.0"
+ },
+ "runtime": {
+ "lib/netstandard1.0/YamlDotNet.NetCore.dll": {
+ "assemblyVersion": "0.0.1.0",
+ "fileVersion": "0.0.0.0"
+ }
+ }
+ },
+ "Luban.Core/1.0.0": {
+ "dependencies": {
+ "NLog": "5.3.4",
+ "Scriban": "5.12.0"
+ },
+ "runtime": {
+ "Luban.Core.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Luban.DataLoader.Builtin/1.0.0": {
+ "dependencies": {
+ "ExcelDataReader": "3.7.0",
+ "Luban.Core": "1.0.0",
+ "NeoLua": "1.3.14",
+ "Ude.NetStandard": "1.2.0",
+ "YamlDotNet.NetCore": "1.0.0"
+ },
+ "runtime": {
+ "Luban.DataLoader.Builtin.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Luban.DataTarget.Builtin/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0",
+ "Luban.DataLoader.Builtin": "1.0.0"
+ },
+ "runtime": {
+ "Luban.DataTarget.Builtin.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ }
+ }
+ },
+ "libraries": {
+ "Luban.PHP/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "ExcelDataReader/3.7.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-AMv3oDETRHSRyXC17rBtKH45qIfFyo433LMeaMB3u4RNr/c9Luuc0Z+JMP6+3Cx9n4wXqFqcrEIVxrf/GgYnZg==",
+ "path": "exceldatareader/3.7.0",
+ "hashPath": "exceldatareader.3.7.0.nupkg.sha512"
+ },
+ "Microsoft.CSharp/4.5.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-kaj6Wb4qoMuH3HySFJhxwQfe8R/sJsNJnANrvv8WdFPMoNbKY5htfNscv+LHCu5ipz+49m2e+WQXpLXr9XYemQ==",
+ "path": "microsoft.csharp/4.5.0",
+ "hashPath": "microsoft.csharp.4.5.0.nupkg.sha512"
+ },
+ "Microsoft.NETCore.Platforms/1.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-2G6OjjJzwBfNOO8myRV/nFrbTw5iA+DEm0N+qUqhrOmaVtn4pC77h38I1jsXGw5VH55+dPfQsqHD0We9sCl9FQ==",
+ "path": "microsoft.netcore.platforms/1.0.1",
+ "hashPath": "microsoft.netcore.platforms.1.0.1.nupkg.sha512"
+ },
+ "Microsoft.NETCore.Targets/1.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-rkn+fKobF/cbWfnnfBOQHKVKIOpxMZBvlSHkqDWgBpwGDcLRduvs3D9OLGeV6GWGvVwNlVi2CBbTjuPmtHvyNw==",
+ "path": "microsoft.netcore.targets/1.0.1",
+ "hashPath": "microsoft.netcore.targets.1.0.1.nupkg.sha512"
+ },
+ "NeoLua/1.3.14": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-BXIUN+ePY2wx3ZGiSmR8KZKD85s01pXI690orrB3u/biB8R0nalziGw+iGbPBq1Cuz8Upggpw2ERF84POXWTCQ==",
+ "path": "neolua/1.3.14",
+ "hashPath": "neolua.1.3.14.nupkg.sha512"
+ },
+ "NLog/5.3.4": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-gLy7+O1hEYJXIlcTr1/VWjGXrZTQFZzYNO18IWasD64pNwz0BreV+nHLxWKXWZzERRzoKnsk2XYtwLkTVk7J1A==",
+ "path": "nlog/5.3.4",
+ "hashPath": "nlog.5.3.4.nupkg.sha512"
+ },
+ "Scriban/5.12.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-/YTTCxjBIpfwX3MKMT4JMFVl1jX4IHW7zih+Bg3cTIkzGnbFt+B3l/k90ILDw6DRiFE7T+VxEyls7zk4p029ng==",
+ "path": "scriban/5.12.0",
+ "hashPath": "scriban.5.12.0.nupkg.sha512"
+ },
+ "System.Collections/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-YUJGz6eFKqS0V//mLt25vFGrrCvOnsXjlvFQs+KimpwNxug9x0Pzy4PlFMU3Q2IzqAa9G2L4LsK3+9vCBK7oTg==",
+ "path": "system.collections/4.0.11",
+ "hashPath": "system.collections.4.0.11.nupkg.sha512"
+ },
+ "System.Diagnostics.Debug/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-w5U95fVKHY4G8ASs/K5iK3J5LY+/dLFd4vKejsnI/ZhBsWS9hQakfx3Zr7lRWKg4tAw9r4iktyvsTagWkqYCiw==",
+ "path": "system.diagnostics.debug/4.0.11",
+ "hashPath": "system.diagnostics.debug.4.0.11.nupkg.sha512"
+ },
+ "System.Diagnostics.Tools/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-xBfJ8pnd4C17dWaC9FM6aShzbJcRNMChUMD42I6772KGGrqaFdumwhn9OdM68erj1ueNo3xdQ1EwiFjK5k8p0g==",
+ "path": "system.diagnostics.tools/4.0.1",
+ "hashPath": "system.diagnostics.tools.4.0.1.nupkg.sha512"
+ },
+ "System.Globalization/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-B95h0YLEL2oSnwF/XjqSWKnwKOy/01VWkNlsCeMTFJLLabflpGV26nK164eRs5GiaRSBGpOxQ3pKoSnnyZN5pg==",
+ "path": "system.globalization/4.0.11",
+ "hashPath": "system.globalization.4.0.11.nupkg.sha512"
+ },
+ "System.IO/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-3KlTJceQc3gnGIaHZ7UBZO26SHL1SHE4ddrmiwumFnId+CEHP+O8r386tZKaE6zlk5/mF8vifMBzHj9SaXN+mQ==",
+ "path": "system.io/4.1.0",
+ "hashPath": "system.io.4.1.0.nupkg.sha512"
+ },
+ "System.Linq/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-bQ0iYFOQI0nuTnt+NQADns6ucV4DUvMdwN6CbkB1yj8i7arTGiTN5eok1kQwdnnNWSDZfIUySQY+J3d5KjWn0g==",
+ "path": "system.linq/4.1.0",
+ "hashPath": "system.linq.4.1.0.nupkg.sha512"
+ },
+ "System.Linq.Expressions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-I+y02iqkgmCAyfbqOmSDOgqdZQ5tTj80Akm5BPSS8EeB0VGWdy6X1KCoYe8Pk6pwDoAKZUOdLVxnTJcExiv5zw==",
+ "path": "system.linq.expressions/4.1.0",
+ "hashPath": "system.linq.expressions.4.1.0.nupkg.sha512"
+ },
+ "System.ObjectModel/4.0.12": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-tAgJM1xt3ytyMoW4qn4wIqgJYm7L7TShRZG4+Q4Qsi2PCcj96pXN7nRywS9KkB3p/xDUjc2HSwP9SROyPYDYKQ==",
+ "path": "system.objectmodel/4.0.12",
+ "hashPath": "system.objectmodel.4.0.12.nupkg.sha512"
+ },
+ "System.Reflection/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-JCKANJ0TI7kzoQzuwB/OoJANy1Lg338B6+JVacPl4TpUwi3cReg3nMLplMq2uqYfHFQpKIlHAUVAJlImZz/4ng==",
+ "path": "system.reflection/4.1.0",
+ "hashPath": "system.reflection.4.1.0.nupkg.sha512"
+ },
+ "System.Reflection.Emit/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-P2wqAj72fFjpP6wb9nSfDqNBMab+2ovzSDzUZK7MVIm54tBJEPr9jWfSjjoTpPwj1LeKcmX3vr0ttyjSSFM47g==",
+ "path": "system.reflection.emit/4.0.1",
+ "hashPath": "system.reflection.emit.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Emit.ILGeneration/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-Ov6dU8Bu15Bc7zuqttgHF12J5lwSWyTf1S+FJouUXVMSqImLZzYaQ+vRr1rQ0OZ0HqsrwWl4dsKHELckQkVpgA==",
+ "path": "system.reflection.emit.ilgeneration/4.0.1",
+ "hashPath": "system.reflection.emit.ilgeneration.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Emit.Lightweight/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-sSzHHXueZ5Uh0OLpUQprhr+ZYJrLPA2Cmr4gn0wj9+FftNKXx8RIMKvO9qnjk2ebPYUjZ+F2ulGdPOsvj+MEjA==",
+ "path": "system.reflection.emit.lightweight/4.0.1",
+ "hashPath": "system.reflection.emit.lightweight.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Extensions/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-GYrtRsZcMuHF3sbmRHfMYpvxZoIN2bQGrYGerUiWLEkqdEUQZhH3TRSaC/oI4wO0II1RKBPlpIa1TOMxIcOOzQ==",
+ "path": "system.reflection.extensions/4.0.1",
+ "hashPath": "system.reflection.extensions.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Primitives/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-4inTox4wTBaDhB7V3mPvp9XlCbeGYWVEM9/fXALd52vNEAVisc1BoVWQPuUuD0Ga//dNbA/WeMy9u9mzLxGTHQ==",
+ "path": "system.reflection.primitives/4.0.1",
+ "hashPath": "system.reflection.primitives.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.TypeExtensions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-tsQ/ptQ3H5FYfON8lL4MxRk/8kFyE0A+tGPXmVP967cT/gzLHYxIejIYSxp4JmIeFHVP78g/F2FE1mUUTbDtrg==",
+ "path": "system.reflection.typeextensions/4.1.0",
+ "hashPath": "system.reflection.typeextensions.4.1.0.nupkg.sha512"
+ },
+ "System.Resources.ResourceManager/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-TxwVeUNoTgUOdQ09gfTjvW411MF+w9MBYL7AtNVc+HtBCFlutPLhUCdZjNkjbhj3bNQWMdHboF0KIWEOjJssbA==",
+ "path": "system.resources.resourcemanager/4.0.1",
+ "hashPath": "system.resources.resourcemanager.4.0.1.nupkg.sha512"
+ },
+ "System.Runtime/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-v6c/4Yaa9uWsq+JMhnOFewrYkgdNHNG2eMKuNqRn8P733rNXeRCGvV5FkkjBXn2dbVkPXOsO0xjsEeM1q2zC0g==",
+ "path": "system.runtime/4.1.0",
+ "hashPath": "system.runtime.4.1.0.nupkg.sha512"
+ },
+ "System.Runtime.Extensions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-CUOHjTT/vgP0qGW22U4/hDlOqXmcPq5YicBaXdUR2UiUoLwBT+olO6we4DVbq57jeX5uXH2uerVZhf0qGj+sVQ==",
+ "path": "system.runtime.extensions/4.1.0",
+ "hashPath": "system.runtime.extensions.4.1.0.nupkg.sha512"
+ },
+ "System.Runtime.Serialization.Primitives/4.1.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-HZ6Du5QrTG8MNJbf4e4qMO3JRAkIboGT5Fk804uZtg3Gq516S7hAqTm2UZKUHa7/6HUGdVy3AqMQKbns06G/cg==",
+ "path": "system.runtime.serialization.primitives/4.1.1",
+ "hashPath": "system.runtime.serialization.primitives.4.1.1.nupkg.sha512"
+ },
+ "System.Text.Encoding/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-U3gGeMlDZXxCEiY4DwVLSacg+DFWCvoiX+JThA/rvw37Sqrku7sEFeVBBBMBnfB6FeZHsyDx85HlKL19x0HtZA==",
+ "path": "system.text.encoding/4.0.11",
+ "hashPath": "system.text.encoding.4.0.11.nupkg.sha512"
+ },
+ "System.Text.Encoding.Extensions/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-jtbiTDtvfLYgXn8PTfWI+SiBs51rrmO4AAckx4KR6vFK9Wzf6tI8kcRdsYQNwriUeQ1+CtQbM1W4cMbLXnj/OQ==",
+ "path": "system.text.encoding.extensions/4.0.11",
+ "hashPath": "system.text.encoding.extensions.4.0.11.nupkg.sha512"
+ },
+ "System.Text.RegularExpressions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-i88YCXpRTjCnoSQZtdlHkAOx4KNNik4hMy83n0+Ftlb7jvV6ZiZWMpnEZHhjBp6hQVh8gWd/iKNPzlPF7iyA2g==",
+ "path": "system.text.regularexpressions/4.1.0",
+ "hashPath": "system.text.regularexpressions.4.1.0.nupkg.sha512"
+ },
+ "System.Threading/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-N+3xqIcg3VDKyjwwCGaZ9HawG9aC6cSDI+s7ROma310GQo8vilFZa86hqKppwTHleR/G0sfOzhvgnUxWCR/DrQ==",
+ "path": "system.threading/4.0.11",
+ "hashPath": "system.threading.4.0.11.nupkg.sha512"
+ },
+ "System.Threading.Tasks/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-k1S4Gc6IGwtHGT8188RSeGaX86Qw/wnrgNLshJvsdNUOPP9etMmo8S07c+UlOAx4K/xLuN9ivA1bD0LVurtIxQ==",
+ "path": "system.threading.tasks/4.0.11",
+ "hashPath": "system.threading.tasks.4.0.11.nupkg.sha512"
+ },
+ "Ude.NetStandard/1.2.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-zRWpPAxBg3lNdm4UiKixTe+DFPoNid9CILggTCy/0WR2WKETe17kTWhiiIpLB2k5IEgnvA0QLfKlvd6Tvu0pzA==",
+ "path": "ude.netstandard/1.2.0",
+ "hashPath": "ude.netstandard.1.2.0.nupkg.sha512"
+ },
+ "YamlDotNet.NetCore/1.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-vPiKF4Yf02MS96Nzwcr8+WrvlhTx+camOgUzxhazU0hCzs2ESetWDCxaIT/MYdAw2oONYem1ow9PXWJjHkRUDw==",
+ "path": "yamldotnet.netcore/1.0.0",
+ "hashPath": "yamldotnet.netcore.1.0.0.nupkg.sha512"
+ },
+ "Luban.Core/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Luban.DataLoader.Builtin/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Luban.DataTarget.Builtin/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/Luban/Luban.PHP.dll b/Luban/Luban.PHP.dll
new file mode 100644
index 0000000..e733a09
Binary files /dev/null and b/Luban/Luban.PHP.dll differ
diff --git a/Luban/Luban.PHP.pdb b/Luban/Luban.PHP.pdb
new file mode 100644
index 0000000..1cdd835
Binary files /dev/null and b/Luban/Luban.PHP.pdb differ
diff --git a/Luban/Luban.Protobuf.deps.json b/Luban/Luban.Protobuf.deps.json
new file mode 100644
index 0000000..a791bf7
--- /dev/null
+++ b/Luban/Luban.Protobuf.deps.json
@@ -0,0 +1,597 @@
+{
+ "runtimeTarget": {
+ "name": ".NETCoreApp,Version=v8.0",
+ "signature": ""
+ },
+ "compilationOptions": {},
+ "targets": {
+ ".NETCoreApp,Version=v8.0": {
+ "Luban.Protobuf/1.0.0": {
+ "dependencies": {
+ "Google.Protobuf": "3.29.0",
+ "Luban.Core": "1.0.0",
+ "Luban.DataTarget.Builtin": "1.0.0"
+ },
+ "runtime": {
+ "Luban.Protobuf.dll": {}
+ }
+ },
+ "ExcelDataReader/3.7.0": {
+ "runtime": {
+ "lib/netstandard2.1/ExcelDataReader.dll": {
+ "assemblyVersion": "3.7.0.0",
+ "fileVersion": "3.7.0.0"
+ }
+ }
+ },
+ "Google.Protobuf/3.29.0": {
+ "runtime": {
+ "lib/net5.0/Google.Protobuf.dll": {
+ "assemblyVersion": "3.29.0.0",
+ "fileVersion": "3.29.0.0"
+ }
+ }
+ },
+ "Microsoft.CSharp/4.5.0": {},
+ "Microsoft.NETCore.Platforms/1.0.1": {},
+ "Microsoft.NETCore.Targets/1.0.1": {},
+ "NeoLua/1.3.14": {
+ "dependencies": {
+ "Microsoft.CSharp": "4.5.0"
+ },
+ "runtime": {
+ "lib/net5.0/Neo.Lua.dll": {
+ "assemblyVersion": "5.3.0.0",
+ "fileVersion": "1.3.14.0"
+ }
+ },
+ "resources": {
+ "lib/net5.0/de/Neo.Lua.resources.dll": {
+ "locale": "de"
+ }
+ }
+ },
+ "NLog/5.3.4": {
+ "runtime": {
+ "lib/netstandard2.0/NLog.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.3.4.2778"
+ }
+ }
+ },
+ "Scriban/5.12.0": {
+ "runtime": {
+ "lib/net7.0/Scriban.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.12.0.0"
+ }
+ }
+ },
+ "System.Collections/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Diagnostics.Debug/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Diagnostics.Tools/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Globalization/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.IO/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Text.Encoding": "4.0.11",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.Linq/4.1.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0"
+ }
+ },
+ "System.Linq.Expressions/4.1.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Globalization": "4.0.11",
+ "System.IO": "4.1.0",
+ "System.Linq": "4.1.0",
+ "System.ObjectModel": "4.0.12",
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit": "4.0.1",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Emit.Lightweight": "4.0.1",
+ "System.Reflection.Extensions": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Reflection.TypeExtensions": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.ObjectModel/4.0.12": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.Reflection/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.IO": "4.1.0",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit/4.0.1": {
+ "dependencies": {
+ "System.IO": "4.1.0",
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit.ILGeneration/4.0.1": {
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit.Lightweight/4.0.1": {
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Extensions/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Primitives/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.TypeExtensions/4.1.0": {
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Resources.ResourceManager/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Globalization": "4.0.11",
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Runtime/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1"
+ }
+ },
+ "System.Runtime.Extensions/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Runtime.Serialization.Primitives/4.1.1": {
+ "dependencies": {
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Text.Encoding/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Text.Encoding.Extensions/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Text.Encoding": "4.0.11"
+ }
+ },
+ "System.Text.RegularExpressions/4.1.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Globalization": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.Threading/4.0.11": {
+ "dependencies": {
+ "System.Runtime": "4.1.0",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.Threading.Tasks/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "Ude.NetStandard/1.2.0": {
+ "runtime": {
+ "lib/netstandard2.0/Ude.NetStandard.dll": {
+ "assemblyVersion": "1.0.2.0",
+ "fileVersion": "1.0.2.0"
+ }
+ }
+ },
+ "YamlDotNet.NetCore/1.0.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Diagnostics.Tools": "4.0.1",
+ "System.Globalization": "4.0.11",
+ "System.Linq": "4.1.0",
+ "System.Linq.Expressions": "4.1.0",
+ "System.ObjectModel": "4.0.12",
+ "System.Reflection.Extensions": "4.0.1",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Runtime.Serialization.Primitives": "4.1.1",
+ "System.Text.Encoding.Extensions": "4.0.11",
+ "System.Text.RegularExpressions": "4.1.0"
+ },
+ "runtime": {
+ "lib/netstandard1.0/YamlDotNet.NetCore.dll": {
+ "assemblyVersion": "0.0.1.0",
+ "fileVersion": "0.0.0.0"
+ }
+ }
+ },
+ "Luban.Core/1.0.0": {
+ "dependencies": {
+ "NLog": "5.3.4",
+ "Scriban": "5.12.0"
+ },
+ "runtime": {
+ "Luban.Core.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Luban.DataLoader.Builtin/1.0.0": {
+ "dependencies": {
+ "ExcelDataReader": "3.7.0",
+ "Luban.Core": "1.0.0",
+ "NeoLua": "1.3.14",
+ "Ude.NetStandard": "1.2.0",
+ "YamlDotNet.NetCore": "1.0.0"
+ },
+ "runtime": {
+ "Luban.DataLoader.Builtin.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Luban.DataTarget.Builtin/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0",
+ "Luban.DataLoader.Builtin": "1.0.0"
+ },
+ "runtime": {
+ "Luban.DataTarget.Builtin.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ }
+ }
+ },
+ "libraries": {
+ "Luban.Protobuf/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "ExcelDataReader/3.7.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-AMv3oDETRHSRyXC17rBtKH45qIfFyo433LMeaMB3u4RNr/c9Luuc0Z+JMP6+3Cx9n4wXqFqcrEIVxrf/GgYnZg==",
+ "path": "exceldatareader/3.7.0",
+ "hashPath": "exceldatareader.3.7.0.nupkg.sha512"
+ },
+ "Google.Protobuf/3.29.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-l1012jd1Y2XsLQ+h9cXE7Bo3WruXql3Xc3KP/z+yZDJMSkfb2guslHCxwFsqd2ScHB0h2J7Yuy255RrBD/DGBw==",
+ "path": "google.protobuf/3.29.0",
+ "hashPath": "google.protobuf.3.29.0.nupkg.sha512"
+ },
+ "Microsoft.CSharp/4.5.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-kaj6Wb4qoMuH3HySFJhxwQfe8R/sJsNJnANrvv8WdFPMoNbKY5htfNscv+LHCu5ipz+49m2e+WQXpLXr9XYemQ==",
+ "path": "microsoft.csharp/4.5.0",
+ "hashPath": "microsoft.csharp.4.5.0.nupkg.sha512"
+ },
+ "Microsoft.NETCore.Platforms/1.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-2G6OjjJzwBfNOO8myRV/nFrbTw5iA+DEm0N+qUqhrOmaVtn4pC77h38I1jsXGw5VH55+dPfQsqHD0We9sCl9FQ==",
+ "path": "microsoft.netcore.platforms/1.0.1",
+ "hashPath": "microsoft.netcore.platforms.1.0.1.nupkg.sha512"
+ },
+ "Microsoft.NETCore.Targets/1.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-rkn+fKobF/cbWfnnfBOQHKVKIOpxMZBvlSHkqDWgBpwGDcLRduvs3D9OLGeV6GWGvVwNlVi2CBbTjuPmtHvyNw==",
+ "path": "microsoft.netcore.targets/1.0.1",
+ "hashPath": "microsoft.netcore.targets.1.0.1.nupkg.sha512"
+ },
+ "NeoLua/1.3.14": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-BXIUN+ePY2wx3ZGiSmR8KZKD85s01pXI690orrB3u/biB8R0nalziGw+iGbPBq1Cuz8Upggpw2ERF84POXWTCQ==",
+ "path": "neolua/1.3.14",
+ "hashPath": "neolua.1.3.14.nupkg.sha512"
+ },
+ "NLog/5.3.4": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-gLy7+O1hEYJXIlcTr1/VWjGXrZTQFZzYNO18IWasD64pNwz0BreV+nHLxWKXWZzERRzoKnsk2XYtwLkTVk7J1A==",
+ "path": "nlog/5.3.4",
+ "hashPath": "nlog.5.3.4.nupkg.sha512"
+ },
+ "Scriban/5.12.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-/YTTCxjBIpfwX3MKMT4JMFVl1jX4IHW7zih+Bg3cTIkzGnbFt+B3l/k90ILDw6DRiFE7T+VxEyls7zk4p029ng==",
+ "path": "scriban/5.12.0",
+ "hashPath": "scriban.5.12.0.nupkg.sha512"
+ },
+ "System.Collections/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-YUJGz6eFKqS0V//mLt25vFGrrCvOnsXjlvFQs+KimpwNxug9x0Pzy4PlFMU3Q2IzqAa9G2L4LsK3+9vCBK7oTg==",
+ "path": "system.collections/4.0.11",
+ "hashPath": "system.collections.4.0.11.nupkg.sha512"
+ },
+ "System.Diagnostics.Debug/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-w5U95fVKHY4G8ASs/K5iK3J5LY+/dLFd4vKejsnI/ZhBsWS9hQakfx3Zr7lRWKg4tAw9r4iktyvsTagWkqYCiw==",
+ "path": "system.diagnostics.debug/4.0.11",
+ "hashPath": "system.diagnostics.debug.4.0.11.nupkg.sha512"
+ },
+ "System.Diagnostics.Tools/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-xBfJ8pnd4C17dWaC9FM6aShzbJcRNMChUMD42I6772KGGrqaFdumwhn9OdM68erj1ueNo3xdQ1EwiFjK5k8p0g==",
+ "path": "system.diagnostics.tools/4.0.1",
+ "hashPath": "system.diagnostics.tools.4.0.1.nupkg.sha512"
+ },
+ "System.Globalization/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-B95h0YLEL2oSnwF/XjqSWKnwKOy/01VWkNlsCeMTFJLLabflpGV26nK164eRs5GiaRSBGpOxQ3pKoSnnyZN5pg==",
+ "path": "system.globalization/4.0.11",
+ "hashPath": "system.globalization.4.0.11.nupkg.sha512"
+ },
+ "System.IO/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-3KlTJceQc3gnGIaHZ7UBZO26SHL1SHE4ddrmiwumFnId+CEHP+O8r386tZKaE6zlk5/mF8vifMBzHj9SaXN+mQ==",
+ "path": "system.io/4.1.0",
+ "hashPath": "system.io.4.1.0.nupkg.sha512"
+ },
+ "System.Linq/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-bQ0iYFOQI0nuTnt+NQADns6ucV4DUvMdwN6CbkB1yj8i7arTGiTN5eok1kQwdnnNWSDZfIUySQY+J3d5KjWn0g==",
+ "path": "system.linq/4.1.0",
+ "hashPath": "system.linq.4.1.0.nupkg.sha512"
+ },
+ "System.Linq.Expressions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-I+y02iqkgmCAyfbqOmSDOgqdZQ5tTj80Akm5BPSS8EeB0VGWdy6X1KCoYe8Pk6pwDoAKZUOdLVxnTJcExiv5zw==",
+ "path": "system.linq.expressions/4.1.0",
+ "hashPath": "system.linq.expressions.4.1.0.nupkg.sha512"
+ },
+ "System.ObjectModel/4.0.12": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-tAgJM1xt3ytyMoW4qn4wIqgJYm7L7TShRZG4+Q4Qsi2PCcj96pXN7nRywS9KkB3p/xDUjc2HSwP9SROyPYDYKQ==",
+ "path": "system.objectmodel/4.0.12",
+ "hashPath": "system.objectmodel.4.0.12.nupkg.sha512"
+ },
+ "System.Reflection/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-JCKANJ0TI7kzoQzuwB/OoJANy1Lg338B6+JVacPl4TpUwi3cReg3nMLplMq2uqYfHFQpKIlHAUVAJlImZz/4ng==",
+ "path": "system.reflection/4.1.0",
+ "hashPath": "system.reflection.4.1.0.nupkg.sha512"
+ },
+ "System.Reflection.Emit/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-P2wqAj72fFjpP6wb9nSfDqNBMab+2ovzSDzUZK7MVIm54tBJEPr9jWfSjjoTpPwj1LeKcmX3vr0ttyjSSFM47g==",
+ "path": "system.reflection.emit/4.0.1",
+ "hashPath": "system.reflection.emit.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Emit.ILGeneration/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-Ov6dU8Bu15Bc7zuqttgHF12J5lwSWyTf1S+FJouUXVMSqImLZzYaQ+vRr1rQ0OZ0HqsrwWl4dsKHELckQkVpgA==",
+ "path": "system.reflection.emit.ilgeneration/4.0.1",
+ "hashPath": "system.reflection.emit.ilgeneration.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Emit.Lightweight/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-sSzHHXueZ5Uh0OLpUQprhr+ZYJrLPA2Cmr4gn0wj9+FftNKXx8RIMKvO9qnjk2ebPYUjZ+F2ulGdPOsvj+MEjA==",
+ "path": "system.reflection.emit.lightweight/4.0.1",
+ "hashPath": "system.reflection.emit.lightweight.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Extensions/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-GYrtRsZcMuHF3sbmRHfMYpvxZoIN2bQGrYGerUiWLEkqdEUQZhH3TRSaC/oI4wO0II1RKBPlpIa1TOMxIcOOzQ==",
+ "path": "system.reflection.extensions/4.0.1",
+ "hashPath": "system.reflection.extensions.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Primitives/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-4inTox4wTBaDhB7V3mPvp9XlCbeGYWVEM9/fXALd52vNEAVisc1BoVWQPuUuD0Ga//dNbA/WeMy9u9mzLxGTHQ==",
+ "path": "system.reflection.primitives/4.0.1",
+ "hashPath": "system.reflection.primitives.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.TypeExtensions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-tsQ/ptQ3H5FYfON8lL4MxRk/8kFyE0A+tGPXmVP967cT/gzLHYxIejIYSxp4JmIeFHVP78g/F2FE1mUUTbDtrg==",
+ "path": "system.reflection.typeextensions/4.1.0",
+ "hashPath": "system.reflection.typeextensions.4.1.0.nupkg.sha512"
+ },
+ "System.Resources.ResourceManager/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-TxwVeUNoTgUOdQ09gfTjvW411MF+w9MBYL7AtNVc+HtBCFlutPLhUCdZjNkjbhj3bNQWMdHboF0KIWEOjJssbA==",
+ "path": "system.resources.resourcemanager/4.0.1",
+ "hashPath": "system.resources.resourcemanager.4.0.1.nupkg.sha512"
+ },
+ "System.Runtime/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-v6c/4Yaa9uWsq+JMhnOFewrYkgdNHNG2eMKuNqRn8P733rNXeRCGvV5FkkjBXn2dbVkPXOsO0xjsEeM1q2zC0g==",
+ "path": "system.runtime/4.1.0",
+ "hashPath": "system.runtime.4.1.0.nupkg.sha512"
+ },
+ "System.Runtime.Extensions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-CUOHjTT/vgP0qGW22U4/hDlOqXmcPq5YicBaXdUR2UiUoLwBT+olO6we4DVbq57jeX5uXH2uerVZhf0qGj+sVQ==",
+ "path": "system.runtime.extensions/4.1.0",
+ "hashPath": "system.runtime.extensions.4.1.0.nupkg.sha512"
+ },
+ "System.Runtime.Serialization.Primitives/4.1.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-HZ6Du5QrTG8MNJbf4e4qMO3JRAkIboGT5Fk804uZtg3Gq516S7hAqTm2UZKUHa7/6HUGdVy3AqMQKbns06G/cg==",
+ "path": "system.runtime.serialization.primitives/4.1.1",
+ "hashPath": "system.runtime.serialization.primitives.4.1.1.nupkg.sha512"
+ },
+ "System.Text.Encoding/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-U3gGeMlDZXxCEiY4DwVLSacg+DFWCvoiX+JThA/rvw37Sqrku7sEFeVBBBMBnfB6FeZHsyDx85HlKL19x0HtZA==",
+ "path": "system.text.encoding/4.0.11",
+ "hashPath": "system.text.encoding.4.0.11.nupkg.sha512"
+ },
+ "System.Text.Encoding.Extensions/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-jtbiTDtvfLYgXn8PTfWI+SiBs51rrmO4AAckx4KR6vFK9Wzf6tI8kcRdsYQNwriUeQ1+CtQbM1W4cMbLXnj/OQ==",
+ "path": "system.text.encoding.extensions/4.0.11",
+ "hashPath": "system.text.encoding.extensions.4.0.11.nupkg.sha512"
+ },
+ "System.Text.RegularExpressions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-i88YCXpRTjCnoSQZtdlHkAOx4KNNik4hMy83n0+Ftlb7jvV6ZiZWMpnEZHhjBp6hQVh8gWd/iKNPzlPF7iyA2g==",
+ "path": "system.text.regularexpressions/4.1.0",
+ "hashPath": "system.text.regularexpressions.4.1.0.nupkg.sha512"
+ },
+ "System.Threading/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-N+3xqIcg3VDKyjwwCGaZ9HawG9aC6cSDI+s7ROma310GQo8vilFZa86hqKppwTHleR/G0sfOzhvgnUxWCR/DrQ==",
+ "path": "system.threading/4.0.11",
+ "hashPath": "system.threading.4.0.11.nupkg.sha512"
+ },
+ "System.Threading.Tasks/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-k1S4Gc6IGwtHGT8188RSeGaX86Qw/wnrgNLshJvsdNUOPP9etMmo8S07c+UlOAx4K/xLuN9ivA1bD0LVurtIxQ==",
+ "path": "system.threading.tasks/4.0.11",
+ "hashPath": "system.threading.tasks.4.0.11.nupkg.sha512"
+ },
+ "Ude.NetStandard/1.2.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-zRWpPAxBg3lNdm4UiKixTe+DFPoNid9CILggTCy/0WR2WKETe17kTWhiiIpLB2k5IEgnvA0QLfKlvd6Tvu0pzA==",
+ "path": "ude.netstandard/1.2.0",
+ "hashPath": "ude.netstandard.1.2.0.nupkg.sha512"
+ },
+ "YamlDotNet.NetCore/1.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-vPiKF4Yf02MS96Nzwcr8+WrvlhTx+camOgUzxhazU0hCzs2ESetWDCxaIT/MYdAw2oONYem1ow9PXWJjHkRUDw==",
+ "path": "yamldotnet.netcore/1.0.0",
+ "hashPath": "yamldotnet.netcore.1.0.0.nupkg.sha512"
+ },
+ "Luban.Core/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Luban.DataLoader.Builtin/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Luban.DataTarget.Builtin/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/Luban/Luban.Protobuf.dll b/Luban/Luban.Protobuf.dll
new file mode 100644
index 0000000..27ca9ae
Binary files /dev/null and b/Luban/Luban.Protobuf.dll differ
diff --git a/Luban/Luban.Protobuf.pdb b/Luban/Luban.Protobuf.pdb
new file mode 100644
index 0000000..506eda8
Binary files /dev/null and b/Luban/Luban.Protobuf.pdb differ
diff --git a/Luban/Luban.Python.deps.json b/Luban/Luban.Python.deps.json
new file mode 100644
index 0000000..9afffa9
--- /dev/null
+++ b/Luban/Luban.Python.deps.json
@@ -0,0 +1,581 @@
+{
+ "runtimeTarget": {
+ "name": ".NETCoreApp,Version=v8.0",
+ "signature": ""
+ },
+ "compilationOptions": {},
+ "targets": {
+ ".NETCoreApp,Version=v8.0": {
+ "Luban.Python/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0",
+ "Luban.DataTarget.Builtin": "1.0.0"
+ },
+ "runtime": {
+ "Luban.Python.dll": {}
+ }
+ },
+ "ExcelDataReader/3.7.0": {
+ "runtime": {
+ "lib/netstandard2.1/ExcelDataReader.dll": {
+ "assemblyVersion": "3.7.0.0",
+ "fileVersion": "3.7.0.0"
+ }
+ }
+ },
+ "Microsoft.CSharp/4.5.0": {},
+ "Microsoft.NETCore.Platforms/1.0.1": {},
+ "Microsoft.NETCore.Targets/1.0.1": {},
+ "NeoLua/1.3.14": {
+ "dependencies": {
+ "Microsoft.CSharp": "4.5.0"
+ },
+ "runtime": {
+ "lib/net5.0/Neo.Lua.dll": {
+ "assemblyVersion": "5.3.0.0",
+ "fileVersion": "1.3.14.0"
+ }
+ },
+ "resources": {
+ "lib/net5.0/de/Neo.Lua.resources.dll": {
+ "locale": "de"
+ }
+ }
+ },
+ "NLog/5.3.4": {
+ "runtime": {
+ "lib/netstandard2.0/NLog.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.3.4.2778"
+ }
+ }
+ },
+ "Scriban/5.12.0": {
+ "runtime": {
+ "lib/net7.0/Scriban.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.12.0.0"
+ }
+ }
+ },
+ "System.Collections/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Diagnostics.Debug/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Diagnostics.Tools/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Globalization/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.IO/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Text.Encoding": "4.0.11",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.Linq/4.1.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0"
+ }
+ },
+ "System.Linq.Expressions/4.1.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Globalization": "4.0.11",
+ "System.IO": "4.1.0",
+ "System.Linq": "4.1.0",
+ "System.ObjectModel": "4.0.12",
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit": "4.0.1",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Emit.Lightweight": "4.0.1",
+ "System.Reflection.Extensions": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Reflection.TypeExtensions": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.ObjectModel/4.0.12": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.Reflection/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.IO": "4.1.0",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit/4.0.1": {
+ "dependencies": {
+ "System.IO": "4.1.0",
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit.ILGeneration/4.0.1": {
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit.Lightweight/4.0.1": {
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Extensions/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Primitives/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.TypeExtensions/4.1.0": {
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Resources.ResourceManager/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Globalization": "4.0.11",
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Runtime/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1"
+ }
+ },
+ "System.Runtime.Extensions/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Runtime.Serialization.Primitives/4.1.1": {
+ "dependencies": {
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Text.Encoding/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Text.Encoding.Extensions/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Text.Encoding": "4.0.11"
+ }
+ },
+ "System.Text.RegularExpressions/4.1.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Globalization": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.Threading/4.0.11": {
+ "dependencies": {
+ "System.Runtime": "4.1.0",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.Threading.Tasks/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "Ude.NetStandard/1.2.0": {
+ "runtime": {
+ "lib/netstandard2.0/Ude.NetStandard.dll": {
+ "assemblyVersion": "1.0.2.0",
+ "fileVersion": "1.0.2.0"
+ }
+ }
+ },
+ "YamlDotNet.NetCore/1.0.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Diagnostics.Tools": "4.0.1",
+ "System.Globalization": "4.0.11",
+ "System.Linq": "4.1.0",
+ "System.Linq.Expressions": "4.1.0",
+ "System.ObjectModel": "4.0.12",
+ "System.Reflection.Extensions": "4.0.1",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Runtime.Serialization.Primitives": "4.1.1",
+ "System.Text.Encoding.Extensions": "4.0.11",
+ "System.Text.RegularExpressions": "4.1.0"
+ },
+ "runtime": {
+ "lib/netstandard1.0/YamlDotNet.NetCore.dll": {
+ "assemblyVersion": "0.0.1.0",
+ "fileVersion": "0.0.0.0"
+ }
+ }
+ },
+ "Luban.Core/1.0.0": {
+ "dependencies": {
+ "NLog": "5.3.4",
+ "Scriban": "5.12.0"
+ },
+ "runtime": {
+ "Luban.Core.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Luban.DataLoader.Builtin/1.0.0": {
+ "dependencies": {
+ "ExcelDataReader": "3.7.0",
+ "Luban.Core": "1.0.0",
+ "NeoLua": "1.3.14",
+ "Ude.NetStandard": "1.2.0",
+ "YamlDotNet.NetCore": "1.0.0"
+ },
+ "runtime": {
+ "Luban.DataLoader.Builtin.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Luban.DataTarget.Builtin/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0",
+ "Luban.DataLoader.Builtin": "1.0.0"
+ },
+ "runtime": {
+ "Luban.DataTarget.Builtin.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ }
+ }
+ },
+ "libraries": {
+ "Luban.Python/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "ExcelDataReader/3.7.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-AMv3oDETRHSRyXC17rBtKH45qIfFyo433LMeaMB3u4RNr/c9Luuc0Z+JMP6+3Cx9n4wXqFqcrEIVxrf/GgYnZg==",
+ "path": "exceldatareader/3.7.0",
+ "hashPath": "exceldatareader.3.7.0.nupkg.sha512"
+ },
+ "Microsoft.CSharp/4.5.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-kaj6Wb4qoMuH3HySFJhxwQfe8R/sJsNJnANrvv8WdFPMoNbKY5htfNscv+LHCu5ipz+49m2e+WQXpLXr9XYemQ==",
+ "path": "microsoft.csharp/4.5.0",
+ "hashPath": "microsoft.csharp.4.5.0.nupkg.sha512"
+ },
+ "Microsoft.NETCore.Platforms/1.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-2G6OjjJzwBfNOO8myRV/nFrbTw5iA+DEm0N+qUqhrOmaVtn4pC77h38I1jsXGw5VH55+dPfQsqHD0We9sCl9FQ==",
+ "path": "microsoft.netcore.platforms/1.0.1",
+ "hashPath": "microsoft.netcore.platforms.1.0.1.nupkg.sha512"
+ },
+ "Microsoft.NETCore.Targets/1.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-rkn+fKobF/cbWfnnfBOQHKVKIOpxMZBvlSHkqDWgBpwGDcLRduvs3D9OLGeV6GWGvVwNlVi2CBbTjuPmtHvyNw==",
+ "path": "microsoft.netcore.targets/1.0.1",
+ "hashPath": "microsoft.netcore.targets.1.0.1.nupkg.sha512"
+ },
+ "NeoLua/1.3.14": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-BXIUN+ePY2wx3ZGiSmR8KZKD85s01pXI690orrB3u/biB8R0nalziGw+iGbPBq1Cuz8Upggpw2ERF84POXWTCQ==",
+ "path": "neolua/1.3.14",
+ "hashPath": "neolua.1.3.14.nupkg.sha512"
+ },
+ "NLog/5.3.4": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-gLy7+O1hEYJXIlcTr1/VWjGXrZTQFZzYNO18IWasD64pNwz0BreV+nHLxWKXWZzERRzoKnsk2XYtwLkTVk7J1A==",
+ "path": "nlog/5.3.4",
+ "hashPath": "nlog.5.3.4.nupkg.sha512"
+ },
+ "Scriban/5.12.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-/YTTCxjBIpfwX3MKMT4JMFVl1jX4IHW7zih+Bg3cTIkzGnbFt+B3l/k90ILDw6DRiFE7T+VxEyls7zk4p029ng==",
+ "path": "scriban/5.12.0",
+ "hashPath": "scriban.5.12.0.nupkg.sha512"
+ },
+ "System.Collections/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-YUJGz6eFKqS0V//mLt25vFGrrCvOnsXjlvFQs+KimpwNxug9x0Pzy4PlFMU3Q2IzqAa9G2L4LsK3+9vCBK7oTg==",
+ "path": "system.collections/4.0.11",
+ "hashPath": "system.collections.4.0.11.nupkg.sha512"
+ },
+ "System.Diagnostics.Debug/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-w5U95fVKHY4G8ASs/K5iK3J5LY+/dLFd4vKejsnI/ZhBsWS9hQakfx3Zr7lRWKg4tAw9r4iktyvsTagWkqYCiw==",
+ "path": "system.diagnostics.debug/4.0.11",
+ "hashPath": "system.diagnostics.debug.4.0.11.nupkg.sha512"
+ },
+ "System.Diagnostics.Tools/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-xBfJ8pnd4C17dWaC9FM6aShzbJcRNMChUMD42I6772KGGrqaFdumwhn9OdM68erj1ueNo3xdQ1EwiFjK5k8p0g==",
+ "path": "system.diagnostics.tools/4.0.1",
+ "hashPath": "system.diagnostics.tools.4.0.1.nupkg.sha512"
+ },
+ "System.Globalization/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-B95h0YLEL2oSnwF/XjqSWKnwKOy/01VWkNlsCeMTFJLLabflpGV26nK164eRs5GiaRSBGpOxQ3pKoSnnyZN5pg==",
+ "path": "system.globalization/4.0.11",
+ "hashPath": "system.globalization.4.0.11.nupkg.sha512"
+ },
+ "System.IO/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-3KlTJceQc3gnGIaHZ7UBZO26SHL1SHE4ddrmiwumFnId+CEHP+O8r386tZKaE6zlk5/mF8vifMBzHj9SaXN+mQ==",
+ "path": "system.io/4.1.0",
+ "hashPath": "system.io.4.1.0.nupkg.sha512"
+ },
+ "System.Linq/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-bQ0iYFOQI0nuTnt+NQADns6ucV4DUvMdwN6CbkB1yj8i7arTGiTN5eok1kQwdnnNWSDZfIUySQY+J3d5KjWn0g==",
+ "path": "system.linq/4.1.0",
+ "hashPath": "system.linq.4.1.0.nupkg.sha512"
+ },
+ "System.Linq.Expressions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-I+y02iqkgmCAyfbqOmSDOgqdZQ5tTj80Akm5BPSS8EeB0VGWdy6X1KCoYe8Pk6pwDoAKZUOdLVxnTJcExiv5zw==",
+ "path": "system.linq.expressions/4.1.0",
+ "hashPath": "system.linq.expressions.4.1.0.nupkg.sha512"
+ },
+ "System.ObjectModel/4.0.12": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-tAgJM1xt3ytyMoW4qn4wIqgJYm7L7TShRZG4+Q4Qsi2PCcj96pXN7nRywS9KkB3p/xDUjc2HSwP9SROyPYDYKQ==",
+ "path": "system.objectmodel/4.0.12",
+ "hashPath": "system.objectmodel.4.0.12.nupkg.sha512"
+ },
+ "System.Reflection/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-JCKANJ0TI7kzoQzuwB/OoJANy1Lg338B6+JVacPl4TpUwi3cReg3nMLplMq2uqYfHFQpKIlHAUVAJlImZz/4ng==",
+ "path": "system.reflection/4.1.0",
+ "hashPath": "system.reflection.4.1.0.nupkg.sha512"
+ },
+ "System.Reflection.Emit/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-P2wqAj72fFjpP6wb9nSfDqNBMab+2ovzSDzUZK7MVIm54tBJEPr9jWfSjjoTpPwj1LeKcmX3vr0ttyjSSFM47g==",
+ "path": "system.reflection.emit/4.0.1",
+ "hashPath": "system.reflection.emit.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Emit.ILGeneration/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-Ov6dU8Bu15Bc7zuqttgHF12J5lwSWyTf1S+FJouUXVMSqImLZzYaQ+vRr1rQ0OZ0HqsrwWl4dsKHELckQkVpgA==",
+ "path": "system.reflection.emit.ilgeneration/4.0.1",
+ "hashPath": "system.reflection.emit.ilgeneration.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Emit.Lightweight/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-sSzHHXueZ5Uh0OLpUQprhr+ZYJrLPA2Cmr4gn0wj9+FftNKXx8RIMKvO9qnjk2ebPYUjZ+F2ulGdPOsvj+MEjA==",
+ "path": "system.reflection.emit.lightweight/4.0.1",
+ "hashPath": "system.reflection.emit.lightweight.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Extensions/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-GYrtRsZcMuHF3sbmRHfMYpvxZoIN2bQGrYGerUiWLEkqdEUQZhH3TRSaC/oI4wO0II1RKBPlpIa1TOMxIcOOzQ==",
+ "path": "system.reflection.extensions/4.0.1",
+ "hashPath": "system.reflection.extensions.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Primitives/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-4inTox4wTBaDhB7V3mPvp9XlCbeGYWVEM9/fXALd52vNEAVisc1BoVWQPuUuD0Ga//dNbA/WeMy9u9mzLxGTHQ==",
+ "path": "system.reflection.primitives/4.0.1",
+ "hashPath": "system.reflection.primitives.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.TypeExtensions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-tsQ/ptQ3H5FYfON8lL4MxRk/8kFyE0A+tGPXmVP967cT/gzLHYxIejIYSxp4JmIeFHVP78g/F2FE1mUUTbDtrg==",
+ "path": "system.reflection.typeextensions/4.1.0",
+ "hashPath": "system.reflection.typeextensions.4.1.0.nupkg.sha512"
+ },
+ "System.Resources.ResourceManager/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-TxwVeUNoTgUOdQ09gfTjvW411MF+w9MBYL7AtNVc+HtBCFlutPLhUCdZjNkjbhj3bNQWMdHboF0KIWEOjJssbA==",
+ "path": "system.resources.resourcemanager/4.0.1",
+ "hashPath": "system.resources.resourcemanager.4.0.1.nupkg.sha512"
+ },
+ "System.Runtime/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-v6c/4Yaa9uWsq+JMhnOFewrYkgdNHNG2eMKuNqRn8P733rNXeRCGvV5FkkjBXn2dbVkPXOsO0xjsEeM1q2zC0g==",
+ "path": "system.runtime/4.1.0",
+ "hashPath": "system.runtime.4.1.0.nupkg.sha512"
+ },
+ "System.Runtime.Extensions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-CUOHjTT/vgP0qGW22U4/hDlOqXmcPq5YicBaXdUR2UiUoLwBT+olO6we4DVbq57jeX5uXH2uerVZhf0qGj+sVQ==",
+ "path": "system.runtime.extensions/4.1.0",
+ "hashPath": "system.runtime.extensions.4.1.0.nupkg.sha512"
+ },
+ "System.Runtime.Serialization.Primitives/4.1.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-HZ6Du5QrTG8MNJbf4e4qMO3JRAkIboGT5Fk804uZtg3Gq516S7hAqTm2UZKUHa7/6HUGdVy3AqMQKbns06G/cg==",
+ "path": "system.runtime.serialization.primitives/4.1.1",
+ "hashPath": "system.runtime.serialization.primitives.4.1.1.nupkg.sha512"
+ },
+ "System.Text.Encoding/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-U3gGeMlDZXxCEiY4DwVLSacg+DFWCvoiX+JThA/rvw37Sqrku7sEFeVBBBMBnfB6FeZHsyDx85HlKL19x0HtZA==",
+ "path": "system.text.encoding/4.0.11",
+ "hashPath": "system.text.encoding.4.0.11.nupkg.sha512"
+ },
+ "System.Text.Encoding.Extensions/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-jtbiTDtvfLYgXn8PTfWI+SiBs51rrmO4AAckx4KR6vFK9Wzf6tI8kcRdsYQNwriUeQ1+CtQbM1W4cMbLXnj/OQ==",
+ "path": "system.text.encoding.extensions/4.0.11",
+ "hashPath": "system.text.encoding.extensions.4.0.11.nupkg.sha512"
+ },
+ "System.Text.RegularExpressions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-i88YCXpRTjCnoSQZtdlHkAOx4KNNik4hMy83n0+Ftlb7jvV6ZiZWMpnEZHhjBp6hQVh8gWd/iKNPzlPF7iyA2g==",
+ "path": "system.text.regularexpressions/4.1.0",
+ "hashPath": "system.text.regularexpressions.4.1.0.nupkg.sha512"
+ },
+ "System.Threading/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-N+3xqIcg3VDKyjwwCGaZ9HawG9aC6cSDI+s7ROma310GQo8vilFZa86hqKppwTHleR/G0sfOzhvgnUxWCR/DrQ==",
+ "path": "system.threading/4.0.11",
+ "hashPath": "system.threading.4.0.11.nupkg.sha512"
+ },
+ "System.Threading.Tasks/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-k1S4Gc6IGwtHGT8188RSeGaX86Qw/wnrgNLshJvsdNUOPP9etMmo8S07c+UlOAx4K/xLuN9ivA1bD0LVurtIxQ==",
+ "path": "system.threading.tasks/4.0.11",
+ "hashPath": "system.threading.tasks.4.0.11.nupkg.sha512"
+ },
+ "Ude.NetStandard/1.2.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-zRWpPAxBg3lNdm4UiKixTe+DFPoNid9CILggTCy/0WR2WKETe17kTWhiiIpLB2k5IEgnvA0QLfKlvd6Tvu0pzA==",
+ "path": "ude.netstandard/1.2.0",
+ "hashPath": "ude.netstandard.1.2.0.nupkg.sha512"
+ },
+ "YamlDotNet.NetCore/1.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-vPiKF4Yf02MS96Nzwcr8+WrvlhTx+camOgUzxhazU0hCzs2ESetWDCxaIT/MYdAw2oONYem1ow9PXWJjHkRUDw==",
+ "path": "yamldotnet.netcore/1.0.0",
+ "hashPath": "yamldotnet.netcore.1.0.0.nupkg.sha512"
+ },
+ "Luban.Core/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Luban.DataLoader.Builtin/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Luban.DataTarget.Builtin/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/Luban/Luban.Python.dll b/Luban/Luban.Python.dll
new file mode 100644
index 0000000..927962f
Binary files /dev/null and b/Luban/Luban.Python.dll differ
diff --git a/Luban/Luban.Python.pdb b/Luban/Luban.Python.pdb
new file mode 100644
index 0000000..327a0a2
Binary files /dev/null and b/Luban/Luban.Python.pdb differ
diff --git a/Luban/Luban.Rust.deps.json b/Luban/Luban.Rust.deps.json
new file mode 100644
index 0000000..63c7d1a
--- /dev/null
+++ b/Luban/Luban.Rust.deps.json
@@ -0,0 +1,73 @@
+{
+ "runtimeTarget": {
+ "name": ".NETCoreApp,Version=v8.0",
+ "signature": ""
+ },
+ "compilationOptions": {},
+ "targets": {
+ ".NETCoreApp,Version=v8.0": {
+ "Luban.Rust/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0"
+ },
+ "runtime": {
+ "Luban.Rust.dll": {}
+ }
+ },
+ "NLog/5.3.4": {
+ "runtime": {
+ "lib/netstandard2.0/NLog.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.3.4.2778"
+ }
+ }
+ },
+ "Scriban/5.12.0": {
+ "runtime": {
+ "lib/net7.0/Scriban.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.12.0.0"
+ }
+ }
+ },
+ "Luban.Core/1.0.0": {
+ "dependencies": {
+ "NLog": "5.3.4",
+ "Scriban": "5.12.0"
+ },
+ "runtime": {
+ "Luban.Core.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ }
+ }
+ },
+ "libraries": {
+ "Luban.Rust/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "NLog/5.3.4": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-gLy7+O1hEYJXIlcTr1/VWjGXrZTQFZzYNO18IWasD64pNwz0BreV+nHLxWKXWZzERRzoKnsk2XYtwLkTVk7J1A==",
+ "path": "nlog/5.3.4",
+ "hashPath": "nlog.5.3.4.nupkg.sha512"
+ },
+ "Scriban/5.12.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-/YTTCxjBIpfwX3MKMT4JMFVl1jX4IHW7zih+Bg3cTIkzGnbFt+B3l/k90ILDw6DRiFE7T+VxEyls7zk4p029ng==",
+ "path": "scriban/5.12.0",
+ "hashPath": "scriban.5.12.0.nupkg.sha512"
+ },
+ "Luban.Core/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/Luban/Luban.Rust.dll b/Luban/Luban.Rust.dll
new file mode 100644
index 0000000..37acf58
Binary files /dev/null and b/Luban/Luban.Rust.dll differ
diff --git a/Luban/Luban.Rust.pdb b/Luban/Luban.Rust.pdb
new file mode 100644
index 0000000..e2eab08
Binary files /dev/null and b/Luban/Luban.Rust.pdb differ
diff --git a/Luban/Luban.Schema.Builtin.deps.json b/Luban/Luban.Schema.Builtin.deps.json
new file mode 100644
index 0000000..0f78b60
--- /dev/null
+++ b/Luban/Luban.Schema.Builtin.deps.json
@@ -0,0 +1,564 @@
+{
+ "runtimeTarget": {
+ "name": ".NETCoreApp,Version=v8.0",
+ "signature": ""
+ },
+ "compilationOptions": {},
+ "targets": {
+ ".NETCoreApp,Version=v8.0": {
+ "Luban.Schema.Builtin/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0",
+ "Luban.DataLoader.Builtin": "1.0.0"
+ },
+ "runtime": {
+ "Luban.Schema.Builtin.dll": {}
+ }
+ },
+ "ExcelDataReader/3.7.0": {
+ "runtime": {
+ "lib/netstandard2.1/ExcelDataReader.dll": {
+ "assemblyVersion": "3.7.0.0",
+ "fileVersion": "3.7.0.0"
+ }
+ }
+ },
+ "Microsoft.CSharp/4.5.0": {},
+ "Microsoft.NETCore.Platforms/1.0.1": {},
+ "Microsoft.NETCore.Targets/1.0.1": {},
+ "NeoLua/1.3.14": {
+ "dependencies": {
+ "Microsoft.CSharp": "4.5.0"
+ },
+ "runtime": {
+ "lib/net5.0/Neo.Lua.dll": {
+ "assemblyVersion": "5.3.0.0",
+ "fileVersion": "1.3.14.0"
+ }
+ },
+ "resources": {
+ "lib/net5.0/de/Neo.Lua.resources.dll": {
+ "locale": "de"
+ }
+ }
+ },
+ "NLog/5.3.4": {
+ "runtime": {
+ "lib/netstandard2.0/NLog.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.3.4.2778"
+ }
+ }
+ },
+ "Scriban/5.12.0": {
+ "runtime": {
+ "lib/net7.0/Scriban.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.12.0.0"
+ }
+ }
+ },
+ "System.Collections/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Diagnostics.Debug/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Diagnostics.Tools/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Globalization/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.IO/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Text.Encoding": "4.0.11",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.Linq/4.1.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0"
+ }
+ },
+ "System.Linq.Expressions/4.1.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Globalization": "4.0.11",
+ "System.IO": "4.1.0",
+ "System.Linq": "4.1.0",
+ "System.ObjectModel": "4.0.12",
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit": "4.0.1",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Emit.Lightweight": "4.0.1",
+ "System.Reflection.Extensions": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Reflection.TypeExtensions": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.ObjectModel/4.0.12": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.Reflection/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.IO": "4.1.0",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit/4.0.1": {
+ "dependencies": {
+ "System.IO": "4.1.0",
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit.ILGeneration/4.0.1": {
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit.Lightweight/4.0.1": {
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Extensions/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Primitives/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.TypeExtensions/4.1.0": {
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Resources.ResourceManager/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Globalization": "4.0.11",
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Runtime/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1"
+ }
+ },
+ "System.Runtime.Extensions/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Runtime.Serialization.Primitives/4.1.1": {
+ "dependencies": {
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Text.Encoding/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Text.Encoding.Extensions/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Text.Encoding": "4.0.11"
+ }
+ },
+ "System.Text.RegularExpressions/4.1.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Globalization": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.Threading/4.0.11": {
+ "dependencies": {
+ "System.Runtime": "4.1.0",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.Threading.Tasks/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "Ude.NetStandard/1.2.0": {
+ "runtime": {
+ "lib/netstandard2.0/Ude.NetStandard.dll": {
+ "assemblyVersion": "1.0.2.0",
+ "fileVersion": "1.0.2.0"
+ }
+ }
+ },
+ "YamlDotNet.NetCore/1.0.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Diagnostics.Tools": "4.0.1",
+ "System.Globalization": "4.0.11",
+ "System.Linq": "4.1.0",
+ "System.Linq.Expressions": "4.1.0",
+ "System.ObjectModel": "4.0.12",
+ "System.Reflection.Extensions": "4.0.1",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Runtime.Serialization.Primitives": "4.1.1",
+ "System.Text.Encoding.Extensions": "4.0.11",
+ "System.Text.RegularExpressions": "4.1.0"
+ },
+ "runtime": {
+ "lib/netstandard1.0/YamlDotNet.NetCore.dll": {
+ "assemblyVersion": "0.0.1.0",
+ "fileVersion": "0.0.0.0"
+ }
+ }
+ },
+ "Luban.Core/1.0.0": {
+ "dependencies": {
+ "NLog": "5.3.4",
+ "Scriban": "5.12.0"
+ },
+ "runtime": {
+ "Luban.Core.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Luban.DataLoader.Builtin/1.0.0": {
+ "dependencies": {
+ "ExcelDataReader": "3.7.0",
+ "Luban.Core": "1.0.0",
+ "NeoLua": "1.3.14",
+ "Ude.NetStandard": "1.2.0",
+ "YamlDotNet.NetCore": "1.0.0"
+ },
+ "runtime": {
+ "Luban.DataLoader.Builtin.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ }
+ }
+ },
+ "libraries": {
+ "Luban.Schema.Builtin/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "ExcelDataReader/3.7.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-AMv3oDETRHSRyXC17rBtKH45qIfFyo433LMeaMB3u4RNr/c9Luuc0Z+JMP6+3Cx9n4wXqFqcrEIVxrf/GgYnZg==",
+ "path": "exceldatareader/3.7.0",
+ "hashPath": "exceldatareader.3.7.0.nupkg.sha512"
+ },
+ "Microsoft.CSharp/4.5.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-kaj6Wb4qoMuH3HySFJhxwQfe8R/sJsNJnANrvv8WdFPMoNbKY5htfNscv+LHCu5ipz+49m2e+WQXpLXr9XYemQ==",
+ "path": "microsoft.csharp/4.5.0",
+ "hashPath": "microsoft.csharp.4.5.0.nupkg.sha512"
+ },
+ "Microsoft.NETCore.Platforms/1.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-2G6OjjJzwBfNOO8myRV/nFrbTw5iA+DEm0N+qUqhrOmaVtn4pC77h38I1jsXGw5VH55+dPfQsqHD0We9sCl9FQ==",
+ "path": "microsoft.netcore.platforms/1.0.1",
+ "hashPath": "microsoft.netcore.platforms.1.0.1.nupkg.sha512"
+ },
+ "Microsoft.NETCore.Targets/1.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-rkn+fKobF/cbWfnnfBOQHKVKIOpxMZBvlSHkqDWgBpwGDcLRduvs3D9OLGeV6GWGvVwNlVi2CBbTjuPmtHvyNw==",
+ "path": "microsoft.netcore.targets/1.0.1",
+ "hashPath": "microsoft.netcore.targets.1.0.1.nupkg.sha512"
+ },
+ "NeoLua/1.3.14": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-BXIUN+ePY2wx3ZGiSmR8KZKD85s01pXI690orrB3u/biB8R0nalziGw+iGbPBq1Cuz8Upggpw2ERF84POXWTCQ==",
+ "path": "neolua/1.3.14",
+ "hashPath": "neolua.1.3.14.nupkg.sha512"
+ },
+ "NLog/5.3.4": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-gLy7+O1hEYJXIlcTr1/VWjGXrZTQFZzYNO18IWasD64pNwz0BreV+nHLxWKXWZzERRzoKnsk2XYtwLkTVk7J1A==",
+ "path": "nlog/5.3.4",
+ "hashPath": "nlog.5.3.4.nupkg.sha512"
+ },
+ "Scriban/5.12.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-/YTTCxjBIpfwX3MKMT4JMFVl1jX4IHW7zih+Bg3cTIkzGnbFt+B3l/k90ILDw6DRiFE7T+VxEyls7zk4p029ng==",
+ "path": "scriban/5.12.0",
+ "hashPath": "scriban.5.12.0.nupkg.sha512"
+ },
+ "System.Collections/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-YUJGz6eFKqS0V//mLt25vFGrrCvOnsXjlvFQs+KimpwNxug9x0Pzy4PlFMU3Q2IzqAa9G2L4LsK3+9vCBK7oTg==",
+ "path": "system.collections/4.0.11",
+ "hashPath": "system.collections.4.0.11.nupkg.sha512"
+ },
+ "System.Diagnostics.Debug/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-w5U95fVKHY4G8ASs/K5iK3J5LY+/dLFd4vKejsnI/ZhBsWS9hQakfx3Zr7lRWKg4tAw9r4iktyvsTagWkqYCiw==",
+ "path": "system.diagnostics.debug/4.0.11",
+ "hashPath": "system.diagnostics.debug.4.0.11.nupkg.sha512"
+ },
+ "System.Diagnostics.Tools/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-xBfJ8pnd4C17dWaC9FM6aShzbJcRNMChUMD42I6772KGGrqaFdumwhn9OdM68erj1ueNo3xdQ1EwiFjK5k8p0g==",
+ "path": "system.diagnostics.tools/4.0.1",
+ "hashPath": "system.diagnostics.tools.4.0.1.nupkg.sha512"
+ },
+ "System.Globalization/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-B95h0YLEL2oSnwF/XjqSWKnwKOy/01VWkNlsCeMTFJLLabflpGV26nK164eRs5GiaRSBGpOxQ3pKoSnnyZN5pg==",
+ "path": "system.globalization/4.0.11",
+ "hashPath": "system.globalization.4.0.11.nupkg.sha512"
+ },
+ "System.IO/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-3KlTJceQc3gnGIaHZ7UBZO26SHL1SHE4ddrmiwumFnId+CEHP+O8r386tZKaE6zlk5/mF8vifMBzHj9SaXN+mQ==",
+ "path": "system.io/4.1.0",
+ "hashPath": "system.io.4.1.0.nupkg.sha512"
+ },
+ "System.Linq/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-bQ0iYFOQI0nuTnt+NQADns6ucV4DUvMdwN6CbkB1yj8i7arTGiTN5eok1kQwdnnNWSDZfIUySQY+J3d5KjWn0g==",
+ "path": "system.linq/4.1.0",
+ "hashPath": "system.linq.4.1.0.nupkg.sha512"
+ },
+ "System.Linq.Expressions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-I+y02iqkgmCAyfbqOmSDOgqdZQ5tTj80Akm5BPSS8EeB0VGWdy6X1KCoYe8Pk6pwDoAKZUOdLVxnTJcExiv5zw==",
+ "path": "system.linq.expressions/4.1.0",
+ "hashPath": "system.linq.expressions.4.1.0.nupkg.sha512"
+ },
+ "System.ObjectModel/4.0.12": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-tAgJM1xt3ytyMoW4qn4wIqgJYm7L7TShRZG4+Q4Qsi2PCcj96pXN7nRywS9KkB3p/xDUjc2HSwP9SROyPYDYKQ==",
+ "path": "system.objectmodel/4.0.12",
+ "hashPath": "system.objectmodel.4.0.12.nupkg.sha512"
+ },
+ "System.Reflection/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-JCKANJ0TI7kzoQzuwB/OoJANy1Lg338B6+JVacPl4TpUwi3cReg3nMLplMq2uqYfHFQpKIlHAUVAJlImZz/4ng==",
+ "path": "system.reflection/4.1.0",
+ "hashPath": "system.reflection.4.1.0.nupkg.sha512"
+ },
+ "System.Reflection.Emit/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-P2wqAj72fFjpP6wb9nSfDqNBMab+2ovzSDzUZK7MVIm54tBJEPr9jWfSjjoTpPwj1LeKcmX3vr0ttyjSSFM47g==",
+ "path": "system.reflection.emit/4.0.1",
+ "hashPath": "system.reflection.emit.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Emit.ILGeneration/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-Ov6dU8Bu15Bc7zuqttgHF12J5lwSWyTf1S+FJouUXVMSqImLZzYaQ+vRr1rQ0OZ0HqsrwWl4dsKHELckQkVpgA==",
+ "path": "system.reflection.emit.ilgeneration/4.0.1",
+ "hashPath": "system.reflection.emit.ilgeneration.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Emit.Lightweight/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-sSzHHXueZ5Uh0OLpUQprhr+ZYJrLPA2Cmr4gn0wj9+FftNKXx8RIMKvO9qnjk2ebPYUjZ+F2ulGdPOsvj+MEjA==",
+ "path": "system.reflection.emit.lightweight/4.0.1",
+ "hashPath": "system.reflection.emit.lightweight.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Extensions/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-GYrtRsZcMuHF3sbmRHfMYpvxZoIN2bQGrYGerUiWLEkqdEUQZhH3TRSaC/oI4wO0II1RKBPlpIa1TOMxIcOOzQ==",
+ "path": "system.reflection.extensions/4.0.1",
+ "hashPath": "system.reflection.extensions.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Primitives/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-4inTox4wTBaDhB7V3mPvp9XlCbeGYWVEM9/fXALd52vNEAVisc1BoVWQPuUuD0Ga//dNbA/WeMy9u9mzLxGTHQ==",
+ "path": "system.reflection.primitives/4.0.1",
+ "hashPath": "system.reflection.primitives.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.TypeExtensions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-tsQ/ptQ3H5FYfON8lL4MxRk/8kFyE0A+tGPXmVP967cT/gzLHYxIejIYSxp4JmIeFHVP78g/F2FE1mUUTbDtrg==",
+ "path": "system.reflection.typeextensions/4.1.0",
+ "hashPath": "system.reflection.typeextensions.4.1.0.nupkg.sha512"
+ },
+ "System.Resources.ResourceManager/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-TxwVeUNoTgUOdQ09gfTjvW411MF+w9MBYL7AtNVc+HtBCFlutPLhUCdZjNkjbhj3bNQWMdHboF0KIWEOjJssbA==",
+ "path": "system.resources.resourcemanager/4.0.1",
+ "hashPath": "system.resources.resourcemanager.4.0.1.nupkg.sha512"
+ },
+ "System.Runtime/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-v6c/4Yaa9uWsq+JMhnOFewrYkgdNHNG2eMKuNqRn8P733rNXeRCGvV5FkkjBXn2dbVkPXOsO0xjsEeM1q2zC0g==",
+ "path": "system.runtime/4.1.0",
+ "hashPath": "system.runtime.4.1.0.nupkg.sha512"
+ },
+ "System.Runtime.Extensions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-CUOHjTT/vgP0qGW22U4/hDlOqXmcPq5YicBaXdUR2UiUoLwBT+olO6we4DVbq57jeX5uXH2uerVZhf0qGj+sVQ==",
+ "path": "system.runtime.extensions/4.1.0",
+ "hashPath": "system.runtime.extensions.4.1.0.nupkg.sha512"
+ },
+ "System.Runtime.Serialization.Primitives/4.1.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-HZ6Du5QrTG8MNJbf4e4qMO3JRAkIboGT5Fk804uZtg3Gq516S7hAqTm2UZKUHa7/6HUGdVy3AqMQKbns06G/cg==",
+ "path": "system.runtime.serialization.primitives/4.1.1",
+ "hashPath": "system.runtime.serialization.primitives.4.1.1.nupkg.sha512"
+ },
+ "System.Text.Encoding/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-U3gGeMlDZXxCEiY4DwVLSacg+DFWCvoiX+JThA/rvw37Sqrku7sEFeVBBBMBnfB6FeZHsyDx85HlKL19x0HtZA==",
+ "path": "system.text.encoding/4.0.11",
+ "hashPath": "system.text.encoding.4.0.11.nupkg.sha512"
+ },
+ "System.Text.Encoding.Extensions/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-jtbiTDtvfLYgXn8PTfWI+SiBs51rrmO4AAckx4KR6vFK9Wzf6tI8kcRdsYQNwriUeQ1+CtQbM1W4cMbLXnj/OQ==",
+ "path": "system.text.encoding.extensions/4.0.11",
+ "hashPath": "system.text.encoding.extensions.4.0.11.nupkg.sha512"
+ },
+ "System.Text.RegularExpressions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-i88YCXpRTjCnoSQZtdlHkAOx4KNNik4hMy83n0+Ftlb7jvV6ZiZWMpnEZHhjBp6hQVh8gWd/iKNPzlPF7iyA2g==",
+ "path": "system.text.regularexpressions/4.1.0",
+ "hashPath": "system.text.regularexpressions.4.1.0.nupkg.sha512"
+ },
+ "System.Threading/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-N+3xqIcg3VDKyjwwCGaZ9HawG9aC6cSDI+s7ROma310GQo8vilFZa86hqKppwTHleR/G0sfOzhvgnUxWCR/DrQ==",
+ "path": "system.threading/4.0.11",
+ "hashPath": "system.threading.4.0.11.nupkg.sha512"
+ },
+ "System.Threading.Tasks/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-k1S4Gc6IGwtHGT8188RSeGaX86Qw/wnrgNLshJvsdNUOPP9etMmo8S07c+UlOAx4K/xLuN9ivA1bD0LVurtIxQ==",
+ "path": "system.threading.tasks/4.0.11",
+ "hashPath": "system.threading.tasks.4.0.11.nupkg.sha512"
+ },
+ "Ude.NetStandard/1.2.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-zRWpPAxBg3lNdm4UiKixTe+DFPoNid9CILggTCy/0WR2WKETe17kTWhiiIpLB2k5IEgnvA0QLfKlvd6Tvu0pzA==",
+ "path": "ude.netstandard/1.2.0",
+ "hashPath": "ude.netstandard.1.2.0.nupkg.sha512"
+ },
+ "YamlDotNet.NetCore/1.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-vPiKF4Yf02MS96Nzwcr8+WrvlhTx+camOgUzxhazU0hCzs2ESetWDCxaIT/MYdAw2oONYem1ow9PXWJjHkRUDw==",
+ "path": "yamldotnet.netcore/1.0.0",
+ "hashPath": "yamldotnet.netcore.1.0.0.nupkg.sha512"
+ },
+ "Luban.Core/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Luban.DataLoader.Builtin/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/Luban/Luban.Schema.Builtin.dll b/Luban/Luban.Schema.Builtin.dll
new file mode 100644
index 0000000..98e1085
Binary files /dev/null and b/Luban/Luban.Schema.Builtin.dll differ
diff --git a/Luban/Luban.Schema.Builtin.pdb b/Luban/Luban.Schema.Builtin.pdb
new file mode 100644
index 0000000..42bdee8
Binary files /dev/null and b/Luban/Luban.Schema.Builtin.pdb differ
diff --git a/Luban/Luban.Schema.Builtin.runtimeconfig.json b/Luban/Luban.Schema.Builtin.runtimeconfig.json
new file mode 100644
index 0000000..4466502
--- /dev/null
+++ b/Luban/Luban.Schema.Builtin.runtimeconfig.json
@@ -0,0 +1,14 @@
+{
+ "runtimeOptions": {
+ "tfm": "net8.0",
+ "rollForward": "LatestMinor",
+ "framework": {
+ "name": "Microsoft.NETCore.App",
+ "version": "8.0.0"
+ },
+ "configProperties": {
+ "System.Reflection.Metadata.MetadataUpdater.IsSupported": false,
+ "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
+ }
+ }
+}
\ No newline at end of file
diff --git a/Luban/Luban.Typescript.deps.json b/Luban/Luban.Typescript.deps.json
new file mode 100644
index 0000000..e5855b0
--- /dev/null
+++ b/Luban/Luban.Typescript.deps.json
@@ -0,0 +1,615 @@
+{
+ "runtimeTarget": {
+ "name": ".NETCoreApp,Version=v8.0",
+ "signature": ""
+ },
+ "compilationOptions": {},
+ "targets": {
+ ".NETCoreApp,Version=v8.0": {
+ "Luban.Typescript/1.0.0": {
+ "dependencies": {
+ "Luban.CSharp": "1.0.0",
+ "Luban.Core": "1.0.0",
+ "Luban.DataTarget.Builtin": "1.0.0"
+ },
+ "runtime": {
+ "Luban.Typescript.dll": {}
+ }
+ },
+ "ExcelDataReader/3.7.0": {
+ "runtime": {
+ "lib/netstandard2.1/ExcelDataReader.dll": {
+ "assemblyVersion": "3.7.0.0",
+ "fileVersion": "3.7.0.0"
+ }
+ }
+ },
+ "Microsoft.CSharp/4.5.0": {},
+ "Microsoft.NETCore.Platforms/1.0.1": {},
+ "Microsoft.NETCore.Targets/1.0.1": {},
+ "NeoLua/1.3.14": {
+ "dependencies": {
+ "Microsoft.CSharp": "4.5.0"
+ },
+ "runtime": {
+ "lib/net5.0/Neo.Lua.dll": {
+ "assemblyVersion": "5.3.0.0",
+ "fileVersion": "1.3.14.0"
+ }
+ },
+ "resources": {
+ "lib/net5.0/de/Neo.Lua.resources.dll": {
+ "locale": "de"
+ }
+ }
+ },
+ "NLog/5.3.4": {
+ "runtime": {
+ "lib/netstandard2.0/NLog.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.3.4.2778"
+ }
+ }
+ },
+ "Scriban/5.12.0": {
+ "runtime": {
+ "lib/net7.0/Scriban.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.12.0.0"
+ }
+ }
+ },
+ "System.Collections/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Diagnostics.Debug/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Diagnostics.Tools/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Globalization/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.IO/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Text.Encoding": "4.0.11",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.Linq/4.1.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0"
+ }
+ },
+ "System.Linq.Expressions/4.1.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Globalization": "4.0.11",
+ "System.IO": "4.1.0",
+ "System.Linq": "4.1.0",
+ "System.ObjectModel": "4.0.12",
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit": "4.0.1",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Emit.Lightweight": "4.0.1",
+ "System.Reflection.Extensions": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Reflection.TypeExtensions": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.ObjectModel/4.0.12": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.Reflection/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.IO": "4.1.0",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit/4.0.1": {
+ "dependencies": {
+ "System.IO": "4.1.0",
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit.ILGeneration/4.0.1": {
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit.Lightweight/4.0.1": {
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Extensions/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Primitives/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.TypeExtensions/4.1.0": {
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Resources.ResourceManager/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Globalization": "4.0.11",
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Runtime/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1"
+ }
+ },
+ "System.Runtime.Extensions/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Runtime.Serialization.Primitives/4.1.1": {
+ "dependencies": {
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Text.Encoding/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Text.Encoding.Extensions/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Text.Encoding": "4.0.11"
+ }
+ },
+ "System.Text.RegularExpressions/4.1.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Globalization": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.Threading/4.0.11": {
+ "dependencies": {
+ "System.Runtime": "4.1.0",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.Threading.Tasks/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "Ude.NetStandard/1.2.0": {
+ "runtime": {
+ "lib/netstandard2.0/Ude.NetStandard.dll": {
+ "assemblyVersion": "1.0.2.0",
+ "fileVersion": "1.0.2.0"
+ }
+ }
+ },
+ "YamlDotNet.NetCore/1.0.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Diagnostics.Tools": "4.0.1",
+ "System.Globalization": "4.0.11",
+ "System.Linq": "4.1.0",
+ "System.Linq.Expressions": "4.1.0",
+ "System.ObjectModel": "4.0.12",
+ "System.Reflection.Extensions": "4.0.1",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Runtime.Serialization.Primitives": "4.1.1",
+ "System.Text.Encoding.Extensions": "4.0.11",
+ "System.Text.RegularExpressions": "4.1.0"
+ },
+ "runtime": {
+ "lib/netstandard1.0/YamlDotNet.NetCore.dll": {
+ "assemblyVersion": "0.0.1.0",
+ "fileVersion": "0.0.0.0"
+ }
+ }
+ },
+ "Luban.Core/1.0.0": {
+ "dependencies": {
+ "NLog": "5.3.4",
+ "Scriban": "5.12.0"
+ },
+ "runtime": {
+ "Luban.Core.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Luban.CSharp/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0",
+ "Luban.DataValidator.Builtin": "1.0.0"
+ },
+ "runtime": {
+ "Luban.CSharp.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Luban.DataLoader.Builtin/1.0.0": {
+ "dependencies": {
+ "ExcelDataReader": "3.7.0",
+ "Luban.Core": "1.0.0",
+ "NeoLua": "1.3.14",
+ "Ude.NetStandard": "1.2.0",
+ "YamlDotNet.NetCore": "1.0.0"
+ },
+ "runtime": {
+ "Luban.DataLoader.Builtin.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Luban.DataTarget.Builtin/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0",
+ "Luban.DataLoader.Builtin": "1.0.0"
+ },
+ "runtime": {
+ "Luban.DataTarget.Builtin.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Luban.DataValidator.Builtin/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0"
+ },
+ "runtime": {
+ "Luban.DataValidator.Builtin.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ }
+ }
+ },
+ "libraries": {
+ "Luban.Typescript/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "ExcelDataReader/3.7.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-AMv3oDETRHSRyXC17rBtKH45qIfFyo433LMeaMB3u4RNr/c9Luuc0Z+JMP6+3Cx9n4wXqFqcrEIVxrf/GgYnZg==",
+ "path": "exceldatareader/3.7.0",
+ "hashPath": "exceldatareader.3.7.0.nupkg.sha512"
+ },
+ "Microsoft.CSharp/4.5.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-kaj6Wb4qoMuH3HySFJhxwQfe8R/sJsNJnANrvv8WdFPMoNbKY5htfNscv+LHCu5ipz+49m2e+WQXpLXr9XYemQ==",
+ "path": "microsoft.csharp/4.5.0",
+ "hashPath": "microsoft.csharp.4.5.0.nupkg.sha512"
+ },
+ "Microsoft.NETCore.Platforms/1.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-2G6OjjJzwBfNOO8myRV/nFrbTw5iA+DEm0N+qUqhrOmaVtn4pC77h38I1jsXGw5VH55+dPfQsqHD0We9sCl9FQ==",
+ "path": "microsoft.netcore.platforms/1.0.1",
+ "hashPath": "microsoft.netcore.platforms.1.0.1.nupkg.sha512"
+ },
+ "Microsoft.NETCore.Targets/1.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-rkn+fKobF/cbWfnnfBOQHKVKIOpxMZBvlSHkqDWgBpwGDcLRduvs3D9OLGeV6GWGvVwNlVi2CBbTjuPmtHvyNw==",
+ "path": "microsoft.netcore.targets/1.0.1",
+ "hashPath": "microsoft.netcore.targets.1.0.1.nupkg.sha512"
+ },
+ "NeoLua/1.3.14": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-BXIUN+ePY2wx3ZGiSmR8KZKD85s01pXI690orrB3u/biB8R0nalziGw+iGbPBq1Cuz8Upggpw2ERF84POXWTCQ==",
+ "path": "neolua/1.3.14",
+ "hashPath": "neolua.1.3.14.nupkg.sha512"
+ },
+ "NLog/5.3.4": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-gLy7+O1hEYJXIlcTr1/VWjGXrZTQFZzYNO18IWasD64pNwz0BreV+nHLxWKXWZzERRzoKnsk2XYtwLkTVk7J1A==",
+ "path": "nlog/5.3.4",
+ "hashPath": "nlog.5.3.4.nupkg.sha512"
+ },
+ "Scriban/5.12.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-/YTTCxjBIpfwX3MKMT4JMFVl1jX4IHW7zih+Bg3cTIkzGnbFt+B3l/k90ILDw6DRiFE7T+VxEyls7zk4p029ng==",
+ "path": "scriban/5.12.0",
+ "hashPath": "scriban.5.12.0.nupkg.sha512"
+ },
+ "System.Collections/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-YUJGz6eFKqS0V//mLt25vFGrrCvOnsXjlvFQs+KimpwNxug9x0Pzy4PlFMU3Q2IzqAa9G2L4LsK3+9vCBK7oTg==",
+ "path": "system.collections/4.0.11",
+ "hashPath": "system.collections.4.0.11.nupkg.sha512"
+ },
+ "System.Diagnostics.Debug/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-w5U95fVKHY4G8ASs/K5iK3J5LY+/dLFd4vKejsnI/ZhBsWS9hQakfx3Zr7lRWKg4tAw9r4iktyvsTagWkqYCiw==",
+ "path": "system.diagnostics.debug/4.0.11",
+ "hashPath": "system.diagnostics.debug.4.0.11.nupkg.sha512"
+ },
+ "System.Diagnostics.Tools/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-xBfJ8pnd4C17dWaC9FM6aShzbJcRNMChUMD42I6772KGGrqaFdumwhn9OdM68erj1ueNo3xdQ1EwiFjK5k8p0g==",
+ "path": "system.diagnostics.tools/4.0.1",
+ "hashPath": "system.diagnostics.tools.4.0.1.nupkg.sha512"
+ },
+ "System.Globalization/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-B95h0YLEL2oSnwF/XjqSWKnwKOy/01VWkNlsCeMTFJLLabflpGV26nK164eRs5GiaRSBGpOxQ3pKoSnnyZN5pg==",
+ "path": "system.globalization/4.0.11",
+ "hashPath": "system.globalization.4.0.11.nupkg.sha512"
+ },
+ "System.IO/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-3KlTJceQc3gnGIaHZ7UBZO26SHL1SHE4ddrmiwumFnId+CEHP+O8r386tZKaE6zlk5/mF8vifMBzHj9SaXN+mQ==",
+ "path": "system.io/4.1.0",
+ "hashPath": "system.io.4.1.0.nupkg.sha512"
+ },
+ "System.Linq/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-bQ0iYFOQI0nuTnt+NQADns6ucV4DUvMdwN6CbkB1yj8i7arTGiTN5eok1kQwdnnNWSDZfIUySQY+J3d5KjWn0g==",
+ "path": "system.linq/4.1.0",
+ "hashPath": "system.linq.4.1.0.nupkg.sha512"
+ },
+ "System.Linq.Expressions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-I+y02iqkgmCAyfbqOmSDOgqdZQ5tTj80Akm5BPSS8EeB0VGWdy6X1KCoYe8Pk6pwDoAKZUOdLVxnTJcExiv5zw==",
+ "path": "system.linq.expressions/4.1.0",
+ "hashPath": "system.linq.expressions.4.1.0.nupkg.sha512"
+ },
+ "System.ObjectModel/4.0.12": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-tAgJM1xt3ytyMoW4qn4wIqgJYm7L7TShRZG4+Q4Qsi2PCcj96pXN7nRywS9KkB3p/xDUjc2HSwP9SROyPYDYKQ==",
+ "path": "system.objectmodel/4.0.12",
+ "hashPath": "system.objectmodel.4.0.12.nupkg.sha512"
+ },
+ "System.Reflection/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-JCKANJ0TI7kzoQzuwB/OoJANy1Lg338B6+JVacPl4TpUwi3cReg3nMLplMq2uqYfHFQpKIlHAUVAJlImZz/4ng==",
+ "path": "system.reflection/4.1.0",
+ "hashPath": "system.reflection.4.1.0.nupkg.sha512"
+ },
+ "System.Reflection.Emit/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-P2wqAj72fFjpP6wb9nSfDqNBMab+2ovzSDzUZK7MVIm54tBJEPr9jWfSjjoTpPwj1LeKcmX3vr0ttyjSSFM47g==",
+ "path": "system.reflection.emit/4.0.1",
+ "hashPath": "system.reflection.emit.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Emit.ILGeneration/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-Ov6dU8Bu15Bc7zuqttgHF12J5lwSWyTf1S+FJouUXVMSqImLZzYaQ+vRr1rQ0OZ0HqsrwWl4dsKHELckQkVpgA==",
+ "path": "system.reflection.emit.ilgeneration/4.0.1",
+ "hashPath": "system.reflection.emit.ilgeneration.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Emit.Lightweight/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-sSzHHXueZ5Uh0OLpUQprhr+ZYJrLPA2Cmr4gn0wj9+FftNKXx8RIMKvO9qnjk2ebPYUjZ+F2ulGdPOsvj+MEjA==",
+ "path": "system.reflection.emit.lightweight/4.0.1",
+ "hashPath": "system.reflection.emit.lightweight.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Extensions/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-GYrtRsZcMuHF3sbmRHfMYpvxZoIN2bQGrYGerUiWLEkqdEUQZhH3TRSaC/oI4wO0II1RKBPlpIa1TOMxIcOOzQ==",
+ "path": "system.reflection.extensions/4.0.1",
+ "hashPath": "system.reflection.extensions.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Primitives/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-4inTox4wTBaDhB7V3mPvp9XlCbeGYWVEM9/fXALd52vNEAVisc1BoVWQPuUuD0Ga//dNbA/WeMy9u9mzLxGTHQ==",
+ "path": "system.reflection.primitives/4.0.1",
+ "hashPath": "system.reflection.primitives.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.TypeExtensions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-tsQ/ptQ3H5FYfON8lL4MxRk/8kFyE0A+tGPXmVP967cT/gzLHYxIejIYSxp4JmIeFHVP78g/F2FE1mUUTbDtrg==",
+ "path": "system.reflection.typeextensions/4.1.0",
+ "hashPath": "system.reflection.typeextensions.4.1.0.nupkg.sha512"
+ },
+ "System.Resources.ResourceManager/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-TxwVeUNoTgUOdQ09gfTjvW411MF+w9MBYL7AtNVc+HtBCFlutPLhUCdZjNkjbhj3bNQWMdHboF0KIWEOjJssbA==",
+ "path": "system.resources.resourcemanager/4.0.1",
+ "hashPath": "system.resources.resourcemanager.4.0.1.nupkg.sha512"
+ },
+ "System.Runtime/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-v6c/4Yaa9uWsq+JMhnOFewrYkgdNHNG2eMKuNqRn8P733rNXeRCGvV5FkkjBXn2dbVkPXOsO0xjsEeM1q2zC0g==",
+ "path": "system.runtime/4.1.0",
+ "hashPath": "system.runtime.4.1.0.nupkg.sha512"
+ },
+ "System.Runtime.Extensions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-CUOHjTT/vgP0qGW22U4/hDlOqXmcPq5YicBaXdUR2UiUoLwBT+olO6we4DVbq57jeX5uXH2uerVZhf0qGj+sVQ==",
+ "path": "system.runtime.extensions/4.1.0",
+ "hashPath": "system.runtime.extensions.4.1.0.nupkg.sha512"
+ },
+ "System.Runtime.Serialization.Primitives/4.1.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-HZ6Du5QrTG8MNJbf4e4qMO3JRAkIboGT5Fk804uZtg3Gq516S7hAqTm2UZKUHa7/6HUGdVy3AqMQKbns06G/cg==",
+ "path": "system.runtime.serialization.primitives/4.1.1",
+ "hashPath": "system.runtime.serialization.primitives.4.1.1.nupkg.sha512"
+ },
+ "System.Text.Encoding/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-U3gGeMlDZXxCEiY4DwVLSacg+DFWCvoiX+JThA/rvw37Sqrku7sEFeVBBBMBnfB6FeZHsyDx85HlKL19x0HtZA==",
+ "path": "system.text.encoding/4.0.11",
+ "hashPath": "system.text.encoding.4.0.11.nupkg.sha512"
+ },
+ "System.Text.Encoding.Extensions/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-jtbiTDtvfLYgXn8PTfWI+SiBs51rrmO4AAckx4KR6vFK9Wzf6tI8kcRdsYQNwriUeQ1+CtQbM1W4cMbLXnj/OQ==",
+ "path": "system.text.encoding.extensions/4.0.11",
+ "hashPath": "system.text.encoding.extensions.4.0.11.nupkg.sha512"
+ },
+ "System.Text.RegularExpressions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-i88YCXpRTjCnoSQZtdlHkAOx4KNNik4hMy83n0+Ftlb7jvV6ZiZWMpnEZHhjBp6hQVh8gWd/iKNPzlPF7iyA2g==",
+ "path": "system.text.regularexpressions/4.1.0",
+ "hashPath": "system.text.regularexpressions.4.1.0.nupkg.sha512"
+ },
+ "System.Threading/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-N+3xqIcg3VDKyjwwCGaZ9HawG9aC6cSDI+s7ROma310GQo8vilFZa86hqKppwTHleR/G0sfOzhvgnUxWCR/DrQ==",
+ "path": "system.threading/4.0.11",
+ "hashPath": "system.threading.4.0.11.nupkg.sha512"
+ },
+ "System.Threading.Tasks/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-k1S4Gc6IGwtHGT8188RSeGaX86Qw/wnrgNLshJvsdNUOPP9etMmo8S07c+UlOAx4K/xLuN9ivA1bD0LVurtIxQ==",
+ "path": "system.threading.tasks/4.0.11",
+ "hashPath": "system.threading.tasks.4.0.11.nupkg.sha512"
+ },
+ "Ude.NetStandard/1.2.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-zRWpPAxBg3lNdm4UiKixTe+DFPoNid9CILggTCy/0WR2WKETe17kTWhiiIpLB2k5IEgnvA0QLfKlvd6Tvu0pzA==",
+ "path": "ude.netstandard/1.2.0",
+ "hashPath": "ude.netstandard.1.2.0.nupkg.sha512"
+ },
+ "YamlDotNet.NetCore/1.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-vPiKF4Yf02MS96Nzwcr8+WrvlhTx+camOgUzxhazU0hCzs2ESetWDCxaIT/MYdAw2oONYem1ow9PXWJjHkRUDw==",
+ "path": "yamldotnet.netcore/1.0.0",
+ "hashPath": "yamldotnet.netcore.1.0.0.nupkg.sha512"
+ },
+ "Luban.Core/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Luban.CSharp/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Luban.DataLoader.Builtin/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Luban.DataTarget.Builtin/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Luban.DataValidator.Builtin/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/Luban/Luban.Typescript.dll b/Luban/Luban.Typescript.dll
new file mode 100644
index 0000000..6ed26bc
Binary files /dev/null and b/Luban/Luban.Typescript.dll differ
diff --git a/Luban/Luban.Typescript.pdb b/Luban/Luban.Typescript.pdb
new file mode 100644
index 0000000..39a49d9
Binary files /dev/null and b/Luban/Luban.Typescript.pdb differ
diff --git a/Luban/Luban.deps.json b/Luban/Luban.deps.json
new file mode 100644
index 0000000..b5f607e
--- /dev/null
+++ b/Luban/Luban.deps.json
@@ -0,0 +1,1034 @@
+{
+ "runtimeTarget": {
+ "name": ".NETCoreApp,Version=v8.0",
+ "signature": ""
+ },
+ "compilationOptions": {},
+ "targets": {
+ ".NETCoreApp,Version=v8.0": {
+ "Luban/4.5.0": {
+ "dependencies": {
+ "CommandLineParser": "2.9.1",
+ "Luban.Bson": "1.0.0",
+ "Luban.CSharp": "1.0.0",
+ "Luban.Core": "1.0.0",
+ "Luban.Cpp": "1.0.0",
+ "Luban.Dart": "1.0.0",
+ "Luban.DataLoader.Builtin": "1.0.0",
+ "Luban.DataTarget.Builtin": "1.0.0",
+ "Luban.DataValidator.Builtin": "1.0.0",
+ "Luban.FlatBuffers": "1.0.0",
+ "Luban.Gdscript": "1.0.0",
+ "Luban.Golang": "1.0.0",
+ "Luban.Java": "1.0.0",
+ "Luban.Javascript": "1.0.0",
+ "Luban.L10N": "1.0.0",
+ "Luban.Lua": "1.0.0",
+ "Luban.MsgPack": "1.0.0",
+ "Luban.PHP": "1.0.0",
+ "Luban.Protobuf": "1.0.0",
+ "Luban.Python": "1.0.0",
+ "Luban.Rust": "1.0.0",
+ "Luban.Schema.Builtin": "1.0.0",
+ "Luban.Typescript": "1.0.0",
+ "YamlDotNet.NetCore": "1.0.0"
+ },
+ "runtime": {
+ "Luban.dll": {}
+ }
+ },
+ "CommandLineParser/2.9.1": {
+ "runtime": {
+ "lib/netstandard2.0/CommandLine.dll": {
+ "assemblyVersion": "2.9.1.0",
+ "fileVersion": "2.9.1.0"
+ }
+ }
+ },
+ "ExcelDataReader/3.7.0": {
+ "runtime": {
+ "lib/netstandard2.1/ExcelDataReader.dll": {
+ "assemblyVersion": "3.7.0.0",
+ "fileVersion": "3.7.0.0"
+ }
+ }
+ },
+ "Google.Protobuf/3.29.0": {
+ "runtime": {
+ "lib/net5.0/Google.Protobuf.dll": {
+ "assemblyVersion": "3.29.0.0",
+ "fileVersion": "3.29.0.0"
+ }
+ }
+ },
+ "MessagePack/2.5.192": {
+ "dependencies": {
+ "MessagePack.Annotations": "2.5.192",
+ "Microsoft.NET.StringTools": "17.6.3"
+ },
+ "runtime": {
+ "lib/net6.0/MessagePack.dll": {
+ "assemblyVersion": "2.5.0.0",
+ "fileVersion": "2.5.192.54228"
+ }
+ }
+ },
+ "MessagePack.Annotations/2.5.192": {
+ "runtime": {
+ "lib/netstandard2.0/MessagePack.Annotations.dll": {
+ "assemblyVersion": "2.5.0.0",
+ "fileVersion": "2.5.192.54228"
+ }
+ }
+ },
+ "Microsoft.CSharp/4.5.0": {},
+ "Microsoft.NET.StringTools/17.6.3": {
+ "runtime": {
+ "lib/net7.0/Microsoft.NET.StringTools.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "17.6.3.22601"
+ }
+ }
+ },
+ "Microsoft.NETCore.Platforms/1.0.1": {},
+ "Microsoft.NETCore.Targets/1.0.1": {},
+ "NeoLua/1.3.14": {
+ "dependencies": {
+ "Microsoft.CSharp": "4.5.0"
+ },
+ "runtime": {
+ "lib/net5.0/Neo.Lua.dll": {
+ "assemblyVersion": "5.3.0.0",
+ "fileVersion": "1.3.14.0"
+ }
+ },
+ "resources": {
+ "lib/net5.0/de/Neo.Lua.resources.dll": {
+ "locale": "de"
+ }
+ }
+ },
+ "Newtonsoft.Json/13.0.1": {
+ "runtime": {
+ "lib/netstandard2.0/Newtonsoft.Json.dll": {
+ "assemblyVersion": "13.0.0.0",
+ "fileVersion": "13.0.1.25517"
+ }
+ }
+ },
+ "Newtonsoft.Json.Bson/1.0.3": {
+ "dependencies": {
+ "Newtonsoft.Json": "13.0.1"
+ },
+ "runtime": {
+ "lib/netstandard2.0/Newtonsoft.Json.Bson.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.3.29904"
+ }
+ }
+ },
+ "NLog/5.3.4": {
+ "runtime": {
+ "lib/netstandard2.0/NLog.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.3.4.2778"
+ }
+ }
+ },
+ "Scriban/5.12.0": {
+ "runtime": {
+ "lib/net7.0/Scriban.dll": {
+ "assemblyVersion": "5.0.0.0",
+ "fileVersion": "5.12.0.0"
+ }
+ }
+ },
+ "System.Collections/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Diagnostics.Debug/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Diagnostics.Tools/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Globalization/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.IO/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Text.Encoding": "4.0.11",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.Linq/4.1.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0"
+ }
+ },
+ "System.Linq.Expressions/4.1.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Globalization": "4.0.11",
+ "System.IO": "4.1.0",
+ "System.Linq": "4.1.0",
+ "System.ObjectModel": "4.0.12",
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit": "4.0.1",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Emit.Lightweight": "4.0.1",
+ "System.Reflection.Extensions": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Reflection.TypeExtensions": "4.1.0",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.ObjectModel/4.0.12": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.Reflection/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.IO": "4.1.0",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit/4.0.1": {
+ "dependencies": {
+ "System.IO": "4.1.0",
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit.ILGeneration/4.0.1": {
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Emit.Lightweight/4.0.1": {
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Reflection.Emit.ILGeneration": "4.0.1",
+ "System.Reflection.Primitives": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Extensions/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.Primitives/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Reflection.TypeExtensions/4.1.0": {
+ "dependencies": {
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Resources.ResourceManager/4.0.1": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Globalization": "4.0.11",
+ "System.Reflection": "4.1.0",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Runtime/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1"
+ }
+ },
+ "System.Runtime.Extensions/4.1.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Runtime.Serialization.Primitives/4.1.1": {
+ "dependencies": {
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Text.Encoding/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "System.Text.Encoding.Extensions/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Text.Encoding": "4.0.11"
+ }
+ },
+ "System.Text.RegularExpressions/4.1.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Globalization": "4.0.11",
+ "System.Resources.ResourceManager": "4.0.1",
+ "System.Runtime": "4.1.0",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Threading": "4.0.11"
+ }
+ },
+ "System.Threading/4.0.11": {
+ "dependencies": {
+ "System.Runtime": "4.1.0",
+ "System.Threading.Tasks": "4.0.11"
+ }
+ },
+ "System.Threading.Tasks/4.0.11": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.0.1",
+ "Microsoft.NETCore.Targets": "1.0.1",
+ "System.Runtime": "4.1.0"
+ }
+ },
+ "Ude.NetStandard/1.2.0": {
+ "runtime": {
+ "lib/netstandard2.0/Ude.NetStandard.dll": {
+ "assemblyVersion": "1.0.2.0",
+ "fileVersion": "1.0.2.0"
+ }
+ }
+ },
+ "YamlDotNet.NetCore/1.0.0": {
+ "dependencies": {
+ "System.Collections": "4.0.11",
+ "System.Diagnostics.Debug": "4.0.11",
+ "System.Diagnostics.Tools": "4.0.1",
+ "System.Globalization": "4.0.11",
+ "System.Linq": "4.1.0",
+ "System.Linq.Expressions": "4.1.0",
+ "System.ObjectModel": "4.0.12",
+ "System.Reflection.Extensions": "4.0.1",
+ "System.Runtime.Extensions": "4.1.0",
+ "System.Runtime.Serialization.Primitives": "4.1.1",
+ "System.Text.Encoding.Extensions": "4.0.11",
+ "System.Text.RegularExpressions": "4.1.0"
+ },
+ "runtime": {
+ "lib/netstandard1.0/YamlDotNet.NetCore.dll": {
+ "assemblyVersion": "0.0.1.0",
+ "fileVersion": "0.0.0.0"
+ }
+ }
+ },
+ "Luban.Bson/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0",
+ "Newtonsoft.Json.Bson": "1.0.3"
+ },
+ "runtime": {
+ "Luban.Bson.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Luban.Core/1.0.0": {
+ "dependencies": {
+ "NLog": "5.3.4",
+ "Scriban": "5.12.0"
+ },
+ "runtime": {
+ "Luban.Core.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Luban.Cpp/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0"
+ },
+ "runtime": {
+ "Luban.Cpp.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Luban.CSharp/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0",
+ "Luban.DataValidator.Builtin": "1.0.0"
+ },
+ "runtime": {
+ "Luban.CSharp.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Luban.Dart/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0"
+ },
+ "runtime": {
+ "Luban.Dart.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Luban.DataLoader.Builtin/1.0.0": {
+ "dependencies": {
+ "ExcelDataReader": "3.7.0",
+ "Luban.Core": "1.0.0",
+ "NeoLua": "1.3.14",
+ "Ude.NetStandard": "1.2.0",
+ "YamlDotNet.NetCore": "1.0.0"
+ },
+ "runtime": {
+ "Luban.DataLoader.Builtin.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Luban.DataTarget.Builtin/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0",
+ "Luban.DataLoader.Builtin": "1.0.0"
+ },
+ "runtime": {
+ "Luban.DataTarget.Builtin.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Luban.DataValidator.Builtin/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0"
+ },
+ "runtime": {
+ "Luban.DataValidator.Builtin.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Luban.FlatBuffers/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0",
+ "Luban.DataTarget.Builtin": "1.0.0"
+ },
+ "runtime": {
+ "Luban.FlatBuffers.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Luban.Gdscript/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0",
+ "Luban.DataTarget.Builtin": "1.0.0"
+ },
+ "runtime": {
+ "Luban.Gdscript.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Luban.Golang/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0"
+ },
+ "runtime": {
+ "Luban.Golang.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Luban.Java/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0"
+ },
+ "runtime": {
+ "Luban.Java.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Luban.Javascript/1.0.0": {
+ "dependencies": {
+ "Luban.CSharp": "1.0.0",
+ "Luban.Core": "1.0.0",
+ "Luban.DataTarget.Builtin": "1.0.0"
+ },
+ "runtime": {
+ "Luban.Javascript.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Luban.L10N/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0",
+ "Luban.DataLoader.Builtin": "1.0.0"
+ },
+ "runtime": {
+ "Luban.L10N.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Luban.Lua/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0"
+ },
+ "runtime": {
+ "Luban.Lua.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Luban.MsgPack/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0",
+ "MessagePack": "2.5.192"
+ },
+ "runtime": {
+ "Luban.MsgPack.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Luban.PHP/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0",
+ "Luban.DataTarget.Builtin": "1.0.0"
+ },
+ "runtime": {
+ "Luban.PHP.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Luban.Protobuf/1.0.0": {
+ "dependencies": {
+ "Google.Protobuf": "3.29.0",
+ "Luban.Core": "1.0.0",
+ "Luban.DataTarget.Builtin": "1.0.0"
+ },
+ "runtime": {
+ "Luban.Protobuf.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Luban.Python/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0",
+ "Luban.DataTarget.Builtin": "1.0.0"
+ },
+ "runtime": {
+ "Luban.Python.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Luban.Rust/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0"
+ },
+ "runtime": {
+ "Luban.Rust.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Luban.Schema.Builtin/1.0.0": {
+ "dependencies": {
+ "Luban.Core": "1.0.0",
+ "Luban.DataLoader.Builtin": "1.0.0"
+ },
+ "runtime": {
+ "Luban.Schema.Builtin.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ },
+ "Luban.Typescript/1.0.0": {
+ "dependencies": {
+ "Luban.CSharp": "1.0.0",
+ "Luban.Core": "1.0.0",
+ "Luban.DataTarget.Builtin": "1.0.0"
+ },
+ "runtime": {
+ "Luban.Typescript.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "1.0.0.0"
+ }
+ }
+ }
+ }
+ },
+ "libraries": {
+ "Luban/4.5.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "CommandLineParser/2.9.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-OE0sl1/sQ37bjVsPKKtwQlWDgqaxWgtme3xZz7JssWUzg5JpMIyHgCTY9MVMxOg48fJ1AgGT3tgdH5m/kQ5xhA==",
+ "path": "commandlineparser/2.9.1",
+ "hashPath": "commandlineparser.2.9.1.nupkg.sha512"
+ },
+ "ExcelDataReader/3.7.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-AMv3oDETRHSRyXC17rBtKH45qIfFyo433LMeaMB3u4RNr/c9Luuc0Z+JMP6+3Cx9n4wXqFqcrEIVxrf/GgYnZg==",
+ "path": "exceldatareader/3.7.0",
+ "hashPath": "exceldatareader.3.7.0.nupkg.sha512"
+ },
+ "Google.Protobuf/3.29.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-l1012jd1Y2XsLQ+h9cXE7Bo3WruXql3Xc3KP/z+yZDJMSkfb2guslHCxwFsqd2ScHB0h2J7Yuy255RrBD/DGBw==",
+ "path": "google.protobuf/3.29.0",
+ "hashPath": "google.protobuf.3.29.0.nupkg.sha512"
+ },
+ "MessagePack/2.5.192": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-Jtle5MaFeIFkdXtxQeL9Tu2Y3HsAQGoSntOzrn6Br/jrl6c8QmG22GEioT5HBtZJR0zw0s46OnKU8ei2M3QifA==",
+ "path": "messagepack/2.5.192",
+ "hashPath": "messagepack.2.5.192.nupkg.sha512"
+ },
+ "MessagePack.Annotations/2.5.192": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-jaJuwcgovWIZ8Zysdyf3b7b34/BrADw4v82GaEZymUhDd3ScMPrYd/cttekeDteJJPXseJxp04yTIcxiVUjTWg==",
+ "path": "messagepack.annotations/2.5.192",
+ "hashPath": "messagepack.annotations.2.5.192.nupkg.sha512"
+ },
+ "Microsoft.CSharp/4.5.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-kaj6Wb4qoMuH3HySFJhxwQfe8R/sJsNJnANrvv8WdFPMoNbKY5htfNscv+LHCu5ipz+49m2e+WQXpLXr9XYemQ==",
+ "path": "microsoft.csharp/4.5.0",
+ "hashPath": "microsoft.csharp.4.5.0.nupkg.sha512"
+ },
+ "Microsoft.NET.StringTools/17.6.3": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-N0ZIanl1QCgvUumEL1laasU0a7sOE5ZwLZVTn0pAePnfhq8P7SvTjF8Axq+CnavuQkmdQpGNXQ1efZtu5kDFbA==",
+ "path": "microsoft.net.stringtools/17.6.3",
+ "hashPath": "microsoft.net.stringtools.17.6.3.nupkg.sha512"
+ },
+ "Microsoft.NETCore.Platforms/1.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-2G6OjjJzwBfNOO8myRV/nFrbTw5iA+DEm0N+qUqhrOmaVtn4pC77h38I1jsXGw5VH55+dPfQsqHD0We9sCl9FQ==",
+ "path": "microsoft.netcore.platforms/1.0.1",
+ "hashPath": "microsoft.netcore.platforms.1.0.1.nupkg.sha512"
+ },
+ "Microsoft.NETCore.Targets/1.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-rkn+fKobF/cbWfnnfBOQHKVKIOpxMZBvlSHkqDWgBpwGDcLRduvs3D9OLGeV6GWGvVwNlVi2CBbTjuPmtHvyNw==",
+ "path": "microsoft.netcore.targets/1.0.1",
+ "hashPath": "microsoft.netcore.targets.1.0.1.nupkg.sha512"
+ },
+ "NeoLua/1.3.14": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-BXIUN+ePY2wx3ZGiSmR8KZKD85s01pXI690orrB3u/biB8R0nalziGw+iGbPBq1Cuz8Upggpw2ERF84POXWTCQ==",
+ "path": "neolua/1.3.14",
+ "hashPath": "neolua.1.3.14.nupkg.sha512"
+ },
+ "Newtonsoft.Json/13.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==",
+ "path": "newtonsoft.json/13.0.1",
+ "hashPath": "newtonsoft.json.13.0.1.nupkg.sha512"
+ },
+ "Newtonsoft.Json.Bson/1.0.3": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-bCcwagnHfYnhwQfY1criEcn6Hy9PtBuVnZu0pA8hmRhuR3jI/8WxVgoVAdNw9BJ3JHkxmWJzpj/AQy+PMMLqxg==",
+ "path": "newtonsoft.json.bson/1.0.3",
+ "hashPath": "newtonsoft.json.bson.1.0.3.nupkg.sha512"
+ },
+ "NLog/5.3.4": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-gLy7+O1hEYJXIlcTr1/VWjGXrZTQFZzYNO18IWasD64pNwz0BreV+nHLxWKXWZzERRzoKnsk2XYtwLkTVk7J1A==",
+ "path": "nlog/5.3.4",
+ "hashPath": "nlog.5.3.4.nupkg.sha512"
+ },
+ "Scriban/5.12.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-/YTTCxjBIpfwX3MKMT4JMFVl1jX4IHW7zih+Bg3cTIkzGnbFt+B3l/k90ILDw6DRiFE7T+VxEyls7zk4p029ng==",
+ "path": "scriban/5.12.0",
+ "hashPath": "scriban.5.12.0.nupkg.sha512"
+ },
+ "System.Collections/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-YUJGz6eFKqS0V//mLt25vFGrrCvOnsXjlvFQs+KimpwNxug9x0Pzy4PlFMU3Q2IzqAa9G2L4LsK3+9vCBK7oTg==",
+ "path": "system.collections/4.0.11",
+ "hashPath": "system.collections.4.0.11.nupkg.sha512"
+ },
+ "System.Diagnostics.Debug/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-w5U95fVKHY4G8ASs/K5iK3J5LY+/dLFd4vKejsnI/ZhBsWS9hQakfx3Zr7lRWKg4tAw9r4iktyvsTagWkqYCiw==",
+ "path": "system.diagnostics.debug/4.0.11",
+ "hashPath": "system.diagnostics.debug.4.0.11.nupkg.sha512"
+ },
+ "System.Diagnostics.Tools/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-xBfJ8pnd4C17dWaC9FM6aShzbJcRNMChUMD42I6772KGGrqaFdumwhn9OdM68erj1ueNo3xdQ1EwiFjK5k8p0g==",
+ "path": "system.diagnostics.tools/4.0.1",
+ "hashPath": "system.diagnostics.tools.4.0.1.nupkg.sha512"
+ },
+ "System.Globalization/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-B95h0YLEL2oSnwF/XjqSWKnwKOy/01VWkNlsCeMTFJLLabflpGV26nK164eRs5GiaRSBGpOxQ3pKoSnnyZN5pg==",
+ "path": "system.globalization/4.0.11",
+ "hashPath": "system.globalization.4.0.11.nupkg.sha512"
+ },
+ "System.IO/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-3KlTJceQc3gnGIaHZ7UBZO26SHL1SHE4ddrmiwumFnId+CEHP+O8r386tZKaE6zlk5/mF8vifMBzHj9SaXN+mQ==",
+ "path": "system.io/4.1.0",
+ "hashPath": "system.io.4.1.0.nupkg.sha512"
+ },
+ "System.Linq/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-bQ0iYFOQI0nuTnt+NQADns6ucV4DUvMdwN6CbkB1yj8i7arTGiTN5eok1kQwdnnNWSDZfIUySQY+J3d5KjWn0g==",
+ "path": "system.linq/4.1.0",
+ "hashPath": "system.linq.4.1.0.nupkg.sha512"
+ },
+ "System.Linq.Expressions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-I+y02iqkgmCAyfbqOmSDOgqdZQ5tTj80Akm5BPSS8EeB0VGWdy6X1KCoYe8Pk6pwDoAKZUOdLVxnTJcExiv5zw==",
+ "path": "system.linq.expressions/4.1.0",
+ "hashPath": "system.linq.expressions.4.1.0.nupkg.sha512"
+ },
+ "System.ObjectModel/4.0.12": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-tAgJM1xt3ytyMoW4qn4wIqgJYm7L7TShRZG4+Q4Qsi2PCcj96pXN7nRywS9KkB3p/xDUjc2HSwP9SROyPYDYKQ==",
+ "path": "system.objectmodel/4.0.12",
+ "hashPath": "system.objectmodel.4.0.12.nupkg.sha512"
+ },
+ "System.Reflection/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-JCKANJ0TI7kzoQzuwB/OoJANy1Lg338B6+JVacPl4TpUwi3cReg3nMLplMq2uqYfHFQpKIlHAUVAJlImZz/4ng==",
+ "path": "system.reflection/4.1.0",
+ "hashPath": "system.reflection.4.1.0.nupkg.sha512"
+ },
+ "System.Reflection.Emit/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-P2wqAj72fFjpP6wb9nSfDqNBMab+2ovzSDzUZK7MVIm54tBJEPr9jWfSjjoTpPwj1LeKcmX3vr0ttyjSSFM47g==",
+ "path": "system.reflection.emit/4.0.1",
+ "hashPath": "system.reflection.emit.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Emit.ILGeneration/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-Ov6dU8Bu15Bc7zuqttgHF12J5lwSWyTf1S+FJouUXVMSqImLZzYaQ+vRr1rQ0OZ0HqsrwWl4dsKHELckQkVpgA==",
+ "path": "system.reflection.emit.ilgeneration/4.0.1",
+ "hashPath": "system.reflection.emit.ilgeneration.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Emit.Lightweight/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-sSzHHXueZ5Uh0OLpUQprhr+ZYJrLPA2Cmr4gn0wj9+FftNKXx8RIMKvO9qnjk2ebPYUjZ+F2ulGdPOsvj+MEjA==",
+ "path": "system.reflection.emit.lightweight/4.0.1",
+ "hashPath": "system.reflection.emit.lightweight.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Extensions/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-GYrtRsZcMuHF3sbmRHfMYpvxZoIN2bQGrYGerUiWLEkqdEUQZhH3TRSaC/oI4wO0II1RKBPlpIa1TOMxIcOOzQ==",
+ "path": "system.reflection.extensions/4.0.1",
+ "hashPath": "system.reflection.extensions.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.Primitives/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-4inTox4wTBaDhB7V3mPvp9XlCbeGYWVEM9/fXALd52vNEAVisc1BoVWQPuUuD0Ga//dNbA/WeMy9u9mzLxGTHQ==",
+ "path": "system.reflection.primitives/4.0.1",
+ "hashPath": "system.reflection.primitives.4.0.1.nupkg.sha512"
+ },
+ "System.Reflection.TypeExtensions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-tsQ/ptQ3H5FYfON8lL4MxRk/8kFyE0A+tGPXmVP967cT/gzLHYxIejIYSxp4JmIeFHVP78g/F2FE1mUUTbDtrg==",
+ "path": "system.reflection.typeextensions/4.1.0",
+ "hashPath": "system.reflection.typeextensions.4.1.0.nupkg.sha512"
+ },
+ "System.Resources.ResourceManager/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-TxwVeUNoTgUOdQ09gfTjvW411MF+w9MBYL7AtNVc+HtBCFlutPLhUCdZjNkjbhj3bNQWMdHboF0KIWEOjJssbA==",
+ "path": "system.resources.resourcemanager/4.0.1",
+ "hashPath": "system.resources.resourcemanager.4.0.1.nupkg.sha512"
+ },
+ "System.Runtime/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-v6c/4Yaa9uWsq+JMhnOFewrYkgdNHNG2eMKuNqRn8P733rNXeRCGvV5FkkjBXn2dbVkPXOsO0xjsEeM1q2zC0g==",
+ "path": "system.runtime/4.1.0",
+ "hashPath": "system.runtime.4.1.0.nupkg.sha512"
+ },
+ "System.Runtime.Extensions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-CUOHjTT/vgP0qGW22U4/hDlOqXmcPq5YicBaXdUR2UiUoLwBT+olO6we4DVbq57jeX5uXH2uerVZhf0qGj+sVQ==",
+ "path": "system.runtime.extensions/4.1.0",
+ "hashPath": "system.runtime.extensions.4.1.0.nupkg.sha512"
+ },
+ "System.Runtime.Serialization.Primitives/4.1.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-HZ6Du5QrTG8MNJbf4e4qMO3JRAkIboGT5Fk804uZtg3Gq516S7hAqTm2UZKUHa7/6HUGdVy3AqMQKbns06G/cg==",
+ "path": "system.runtime.serialization.primitives/4.1.1",
+ "hashPath": "system.runtime.serialization.primitives.4.1.1.nupkg.sha512"
+ },
+ "System.Text.Encoding/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-U3gGeMlDZXxCEiY4DwVLSacg+DFWCvoiX+JThA/rvw37Sqrku7sEFeVBBBMBnfB6FeZHsyDx85HlKL19x0HtZA==",
+ "path": "system.text.encoding/4.0.11",
+ "hashPath": "system.text.encoding.4.0.11.nupkg.sha512"
+ },
+ "System.Text.Encoding.Extensions/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-jtbiTDtvfLYgXn8PTfWI+SiBs51rrmO4AAckx4KR6vFK9Wzf6tI8kcRdsYQNwriUeQ1+CtQbM1W4cMbLXnj/OQ==",
+ "path": "system.text.encoding.extensions/4.0.11",
+ "hashPath": "system.text.encoding.extensions.4.0.11.nupkg.sha512"
+ },
+ "System.Text.RegularExpressions/4.1.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-i88YCXpRTjCnoSQZtdlHkAOx4KNNik4hMy83n0+Ftlb7jvV6ZiZWMpnEZHhjBp6hQVh8gWd/iKNPzlPF7iyA2g==",
+ "path": "system.text.regularexpressions/4.1.0",
+ "hashPath": "system.text.regularexpressions.4.1.0.nupkg.sha512"
+ },
+ "System.Threading/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-N+3xqIcg3VDKyjwwCGaZ9HawG9aC6cSDI+s7ROma310GQo8vilFZa86hqKppwTHleR/G0sfOzhvgnUxWCR/DrQ==",
+ "path": "system.threading/4.0.11",
+ "hashPath": "system.threading.4.0.11.nupkg.sha512"
+ },
+ "System.Threading.Tasks/4.0.11": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-k1S4Gc6IGwtHGT8188RSeGaX86Qw/wnrgNLshJvsdNUOPP9etMmo8S07c+UlOAx4K/xLuN9ivA1bD0LVurtIxQ==",
+ "path": "system.threading.tasks/4.0.11",
+ "hashPath": "system.threading.tasks.4.0.11.nupkg.sha512"
+ },
+ "Ude.NetStandard/1.2.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-zRWpPAxBg3lNdm4UiKixTe+DFPoNid9CILggTCy/0WR2WKETe17kTWhiiIpLB2k5IEgnvA0QLfKlvd6Tvu0pzA==",
+ "path": "ude.netstandard/1.2.0",
+ "hashPath": "ude.netstandard.1.2.0.nupkg.sha512"
+ },
+ "YamlDotNet.NetCore/1.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-vPiKF4Yf02MS96Nzwcr8+WrvlhTx+camOgUzxhazU0hCzs2ESetWDCxaIT/MYdAw2oONYem1ow9PXWJjHkRUDw==",
+ "path": "yamldotnet.netcore/1.0.0",
+ "hashPath": "yamldotnet.netcore.1.0.0.nupkg.sha512"
+ },
+ "Luban.Bson/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Luban.Core/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Luban.Cpp/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Luban.CSharp/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Luban.Dart/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Luban.DataLoader.Builtin/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Luban.DataTarget.Builtin/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Luban.DataValidator.Builtin/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Luban.FlatBuffers/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Luban.Gdscript/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Luban.Golang/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Luban.Java/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Luban.Javascript/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Luban.L10N/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Luban.Lua/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Luban.MsgPack/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Luban.PHP/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Luban.Protobuf/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Luban.Python/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Luban.Rust/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Luban.Schema.Builtin/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Luban.Typescript/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/Luban/Luban.dll b/Luban/Luban.dll
new file mode 100644
index 0000000..d99d8b2
Binary files /dev/null and b/Luban/Luban.dll differ
diff --git a/NBConfigBuilder/NBConfigBuilder.exe b/Luban/Luban.exe
similarity index 99%
rename from NBConfigBuilder/NBConfigBuilder.exe
rename to Luban/Luban.exe
index 5fe07fe..0734672 100644
Binary files a/NBConfigBuilder/NBConfigBuilder.exe and b/Luban/Luban.exe differ
diff --git a/Luban/Luban.pdb b/Luban/Luban.pdb
new file mode 100644
index 0000000..644368a
Binary files /dev/null and b/Luban/Luban.pdb differ
diff --git a/Luban/Luban.runtimeconfig.json b/Luban/Luban.runtimeconfig.json
new file mode 100644
index 0000000..d784515
--- /dev/null
+++ b/Luban/Luban.runtimeconfig.json
@@ -0,0 +1,13 @@
+{
+ "runtimeOptions": {
+ "tfm": "net8.0",
+ "framework": {
+ "name": "Microsoft.NETCore.App",
+ "version": "8.0.0"
+ },
+ "configProperties": {
+ "System.Reflection.Metadata.MetadataUpdater.IsSupported": false,
+ "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
+ }
+ }
+}
\ No newline at end of file
diff --git a/Luban/MessagePack.Annotations.dll b/Luban/MessagePack.Annotations.dll
new file mode 100644
index 0000000..b3a3f48
Binary files /dev/null and b/Luban/MessagePack.Annotations.dll differ
diff --git a/Luban/MessagePack.dll b/Luban/MessagePack.dll
new file mode 100644
index 0000000..ed883d0
Binary files /dev/null and b/Luban/MessagePack.dll differ
diff --git a/Luban/Microsoft.NET.StringTools.dll b/Luban/Microsoft.NET.StringTools.dll
new file mode 100644
index 0000000..7d30439
Binary files /dev/null and b/Luban/Microsoft.NET.StringTools.dll differ
diff --git a/Luban/NLog.dll b/Luban/NLog.dll
new file mode 100644
index 0000000..49604e1
Binary files /dev/null and b/Luban/NLog.dll differ
diff --git a/Luban/Neo.Lua.dll b/Luban/Neo.Lua.dll
new file mode 100644
index 0000000..406f580
Binary files /dev/null and b/Luban/Neo.Lua.dll differ
diff --git a/Luban/Newtonsoft.Json.Bson.dll b/Luban/Newtonsoft.Json.Bson.dll
new file mode 100644
index 0000000..159d2ed
Binary files /dev/null and b/Luban/Newtonsoft.Json.Bson.dll differ
diff --git a/Luban/Newtonsoft.Json.dll b/Luban/Newtonsoft.Json.dll
new file mode 100644
index 0000000..1ffeabe
Binary files /dev/null and b/Luban/Newtonsoft.Json.dll differ
diff --git a/Luban/Scriban.dll b/Luban/Scriban.dll
new file mode 100644
index 0000000..c8131e2
Binary files /dev/null and b/Luban/Scriban.dll differ
diff --git a/Luban/Templates/common/cpp/enum.sbn b/Luban/Templates/common/cpp/enum.sbn
new file mode 100644
index 0000000..b9f3b0a
--- /dev/null
+++ b/Luban/Templates/common/cpp/enum.sbn
@@ -0,0 +1,23 @@
+{{~
+ comment = __enum.comment
+ items = __enum.items
+~}}
+{{namespace_with_grace_begin __namespace}}
+{{~if comment != '' ~}}
+ ///
+ /// {{escape_comment comment}}
+ ///
+{{~end~}}
+ enum class {{__name}}
+ {
+ {{~ for item in items ~}}
+{{~if item.comment != '' ~}}
+ ///
+ /// {{escape_comment item.comment_or_alias}}
+ ///
+{{~end~}}
+ {{format_enum_item_name __code_style item.name}} = {{item.value}},
+ {{~end~}}
+ };
+
+{{namespace_with_grace_end __namespace}}
diff --git a/Luban/Templates/common/cs/enum.sbn b/Luban/Templates/common/cs/enum.sbn
new file mode 100644
index 0000000..4dcd9b6
--- /dev/null
+++ b/Luban/Templates/common/cs/enum.sbn
@@ -0,0 +1,28 @@
+{{~
+ comment = __enum.comment
+ items = __enum.items
+~}}
+
+
+{{namespace_with_grace_begin __namespace_with_top_module}}
+{{~if comment != '' ~}}
+ ///
+ /// {{escape_comment comment}}
+ ///
+{{~end~}}
+ {{~if __enum.is_flags~}}
+ [System.Flags]
+ {{~end~}}
+ public enum {{__name}}
+ {
+ {{~ for item in items ~}}
+{{~if item.comment != '' ~}}
+ ///
+ /// {{escape_comment item.comment_or_alias}}
+ ///
+{{~end~}}
+ {{format_enum_item_name __code_style item.name}} = {{item.value}},
+ {{~end~}}
+ }
+
+{{namespace_with_grace_end __namespace_with_top_module}}
diff --git a/Luban/Templates/common/dart/enum.sbn b/Luban/Templates/common/dart/enum.sbn
new file mode 100644
index 0000000..97417f0
--- /dev/null
+++ b/Luban/Templates/common/dart/enum.sbn
@@ -0,0 +1,30 @@
+{{~if __this.comment != '' ~}}
+//{{escape_comment __this.comment}}
+{{~end~}}
+enum {{__name}}
+{
+ {{~if !has_enum_item __this~}}
+ empty_placeholder(0);
+ {{~else~}}
+{{~if !__this.has_zero_value_item ~}}
+ None(0),
+{{~end~}}
+ {{~end~}}
+
+
+ {{~ for item in __this.items ~}}
+{{~if item.comment_or_alias != '' ~}}
+ //{{escape_comment item.comment_or_alias}}
+{{~end~}}
+ {{item.name}}({{item.int_value}}) {{is_last_enum_item __this item.int_value ? ';' : ','}}
+
+ {{~end~}}
+ final int value;
+
+ const {{__name}}(this.value);
+
+ static {{__name}} fromValue(int value)
+ {
+ return {{__name}}.values.firstWhere((element) => element.value == value, orElse: () => fromValue(0));
+ }
+}
diff --git a/Luban/Templates/common/go/enum.sbn b/Luban/Templates/common/go/enum.sbn
new file mode 100644
index 0000000..7dd70a6
--- /dev/null
+++ b/Luban/Templates/common/go/enum.sbn
@@ -0,0 +1,19 @@
+{{~if ___top_module != ''~}}
+package {{__top_module}};
+{{~end~}}
+
+{{~if __this.comment != '' ~}}
+/**
+ * {{escape_comment __this.comment}}
+ */
+{{~end~}}
+const (
+ {{~ for item in __this.items ~}}
+{{~if item.comment_or_alias != '' ~}}
+ /**
+ * {{escape_comment item.comment_or_alias}}
+ */
+{{~end~}}
+ {{full_name __this}}_{{item.name}} = {{item.int_value}};
+ {{~end~}}
+)
diff --git a/Luban/Templates/common/java/enum.sbn b/Luban/Templates/common/java/enum.sbn
new file mode 100644
index 0000000..142d8a1
--- /dev/null
+++ b/Luban/Templates/common/java/enum.sbn
@@ -0,0 +1,19 @@
+{{~if __namespace_with_top_module != ''~}}
+package {{__namespace_with_top_module}};
+{{~end~}}
+
+{{~if __this.comment != '' ~}}
+/**
+ * {{escape_comment __this.comment}}
+ */
+{{~end~}}
+public final class {{__name}} {
+ {{~ for item in __this.items ~}}
+{{~if item.comment_or_alias != '' ~}}
+ /**
+ * {{escape_comment item.comment_or_alias}}
+ */
+{{~end~}}
+ public static final int {{item.name}} = {{item.int_value}};
+ {{~end~}}
+}
diff --git a/Luban/Templates/common/js/enum.sbn b/Luban/Templates/common/js/enum.sbn
new file mode 100644
index 0000000..139597f
--- /dev/null
+++ b/Luban/Templates/common/js/enum.sbn
@@ -0,0 +1,2 @@
+
+
diff --git a/Luban/Templates/common/php/enum.sbn b/Luban/Templates/common/php/enum.sbn
new file mode 100644
index 0000000..139597f
--- /dev/null
+++ b/Luban/Templates/common/php/enum.sbn
@@ -0,0 +1,2 @@
+
+
diff --git a/Luban/Templates/common/rs/macros/Cargo.toml.sbn b/Luban/Templates/common/rs/macros/Cargo.toml.sbn
new file mode 100644
index 0000000..ae3a110
--- /dev/null
+++ b/Luban/Templates/common/rs/macros/Cargo.toml.sbn
@@ -0,0 +1,14 @@
+[package]
+name = "macros"
+version = "0.1.0"
+edition = "2021"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
+quote = "1.0.36"
+syn = "2.0.60"
+proc-macro2 = "1.0.82"
+
+[lib]
+proc-macro = true
\ No newline at end of file
diff --git a/Luban/Templates/common/rs/macros/src/lib.rs.sbn b/Luban/Templates/common/rs/macros/src/lib.rs.sbn
new file mode 100644
index 0000000..7e93f74
--- /dev/null
+++ b/Luban/Templates/common/rs/macros/src/lib.rs.sbn
@@ -0,0 +1,65 @@
+#[macro_use]
+extern crate quote;
+
+use proc_macro::TokenStream;
+use proc_macro2;
+use quote::{format_ident, quote, ToTokens};
+use syn::{parse_macro_input, Data, DeriveInput};
+
+#[proc_macro_derive(TryIntoBase)]
+pub fn base_try_from(item: TokenStream) -> TokenStream {
+ let derive_input = parse_macro_input!(item as DeriveInput);
+ let ty_name = &derive_input.ident;
+
+ match derive_input.data {
+ Data::Struct(_) => {}
+ _ => panic!("base_try_from can only be used on structs or enums"),
+ }
+
+ let expanded = quote! {
+ impl<'a> TryFrom<&'a AbstractBase> for &'a #ty_name {
+ type Error = String;
+
+ fn try_from(value: &'a AbstractBase) -> Result {
+ let r = value.downcast_ref::<#ty_name>();
+ if let Some(v) = r {
+ return Ok(v);
+ }
+
+ Err(concat!("can not into to ", stringify!(#ty_name)).to_string())
+ }
+ }
+ };
+
+ TokenStream::from(expanded)
+}
+
+#[proc_macro_derive(EnumFromNum)]
+pub fn enum_from_num(input: TokenStream) -> TokenStream {
+ let input = parse_macro_input!(input as DeriveInput);
+ let ty_name = &input.ident;
+
+
+ let tokens = vec![
+ format_ident!("i64"),
+ format_ident!("i16"),
+ format_ident!("i8"),
+ format_ident!("isize"),
+ format_ident!("u64"),
+ format_ident!("u32"),
+ format_ident!("u16"),
+ format_ident!("u8"),
+ format_ident!("usize"),
+ format_ident!("f64"),
+ format_ident!("f32"),
+ ];
+ quote! {
+ #(
+ impl From<#tokens> for #ty_name {
+ fn from(value: #tokens) -> Self {
+ (value as i32).into()
+ }
+ }
+ )*
+ }.into()
+}
\ No newline at end of file
diff --git a/Luban/Templates/common/ts/enum.sbn b/Luban/Templates/common/ts/enum.sbn
new file mode 100644
index 0000000..139597f
--- /dev/null
+++ b/Luban/Templates/common/ts/enum.sbn
@@ -0,0 +1,2 @@
+
+
diff --git a/Luban/Templates/cpp-rawptr-bin/bean.sbn b/Luban/Templates/cpp-rawptr-bin/bean.sbn
new file mode 100644
index 0000000..2b856b0
--- /dev/null
+++ b/Luban/Templates/cpp-rawptr-bin/bean.sbn
@@ -0,0 +1,32 @@
+{{namespace_with_grace_begin __namespace}}
+
+{{~if __this.comment != '' ~}}
+/**
+ * {{escape_comment __this.comment}}
+ */
+{{~end~}}
+struct {{__name}} : public{{if __parent_def_type}} {{make_cpp_name __parent_def_type.full_name}} {{else}} luban::CfgBean {{end}}
+{
+ static bool deserialize{{__name}}(::luban::ByteBuf& _buf, {{__name}}*& _out);
+
+ virtual ~{{__name}}() {}
+
+ bool deserialize(::luban::ByteBuf& _buf);
+
+ {{~ for field in __export_fields ~}}
+{{~if field.comment != '' ~}}
+ /**
+ * {{escape_comment field.comment}}
+ */
+{{~end~}}
+ {{declaring_type_name field.ctype}} {{format_field_name __code_style field.name}};
+ {{~end~}}
+
+{{~if !__this.is_abstract_type~}}
+ static constexpr int __ID__ = {{__this.id}};
+
+ int getTypeId() const override { return __ID__; }
+{{~end~}}
+};
+
+{{namespace_with_grace_end __namespace}}
diff --git a/Luban/Templates/cpp-rawptr-bin/schema_cpp.sbn b/Luban/Templates/cpp-rawptr-bin/schema_cpp.sbn
new file mode 100644
index 0000000..18c1531
--- /dev/null
+++ b/Luban/Templates/cpp-rawptr-bin/schema_cpp.sbn
@@ -0,0 +1,45 @@
+#include "{{__schema_header_file}}"
+
+{{namespace_with_grace_begin __top_module}}
+
+{{~for bean in __beans~}}
+
+bool {{make_cpp_name bean.full_name}}::deserialize(::luban::ByteBuf& _buf)
+{
+ {{~if bean.parent_def_type~}}
+ if (!{{make_cpp_name bean.parent_def_type.full_name}}::deserialize(_buf))
+ {
+ return false;
+ }
+ {{~end~}}
+
+ {{~ for field in bean.export_fields ~}}
+ {{deserialize '_buf' (format_field_name __code_style field.name) field.ctype}}
+ {{~end~}}
+
+ return true;
+}
+
+{{~if bean.is_abstract_type~}}
+bool {{make_cpp_name bean.full_name}}::deserialize{{bean.name}}(::luban::ByteBuf& _buf, {{make_cpp_name bean.full_name}}*& _out)
+{
+ int32_t id;
+ if (!_buf.readInt(id)) return false;
+ switch (id)
+ {
+ {{~for child in bean.hierarchy_not_abstract_children~}}
+ case {{make_type_cpp_name child}}::__ID__: { _out = LUBAN_NEW({{make_type_cpp_name child}}); if (_out->deserialize(_buf)) { return true; } else { _out = nullptr; return false;} }
+ {{~end~}}
+ default: { _out = nullptr; return false;}
+ }
+}
+{{~else~}}
+bool {{make_cpp_name bean.full_name}}::deserialize{{bean.name}}(::luban::ByteBuf& _buf, {{make_cpp_name bean.full_name}}*& _out)
+{
+ _out = LUBAN_NEW({{make_type_cpp_name bean}});
+ return _out->deserialize(_buf);
+}
+{{~end~}}
+
+{{~end~}}
+{{namespace_with_grace_end __top_module}}
diff --git a/Luban/Templates/cpp-rawptr-bin/schema_h.sbn b/Luban/Templates/cpp-rawptr-bin/schema_h.sbn
new file mode 100644
index 0000000..90ba84c
--- /dev/null
+++ b/Luban/Templates/cpp-rawptr-bin/schema_h.sbn
@@ -0,0 +1,21 @@
+#pragma once
+#include
+#include
+
+#include "CfgBean.h"
+
+{{namespace_with_grace_begin __top_module}}
+
+{{__enum_codes~}}
+
+{{~for b in __beans~}}
+{{namespace_with_grace_begin b.namespace}} struct {{b.name}}; {{namespace_with_grace_end b.namespace}}
+{{~end~}}
+
+{{~__bean_codes~}}
+
+{{~__table_codes~}}
+
+{{__tables_code}}
+
+{{namespace_with_grace_end __top_module}}
diff --git a/Luban/Templates/cpp-rawptr-bin/table.sbn b/Luban/Templates/cpp-rawptr-bin/table.sbn
new file mode 100644
index 0000000..511a546
--- /dev/null
+++ b/Luban/Templates/cpp-rawptr-bin/table.sbn
@@ -0,0 +1,134 @@
+{{namespace_with_grace_begin __namespace}}
+
+{{~if __this.comment != '' ~}}
+/**
+ * {{escape_comment __this.comment}}
+ */
+{{~end~}}
+
+class {{__name}}
+{
+ {{~if __this.is_map_table ~}}
+ private:
+ ::luban::HashMap<{{declaring_type_name __key_type}}, {{declaring_type_name __value_type}}> _dataMap;
+ ::luban::Vector<{{declaring_type_name __value_type}}> _dataList;
+
+ public:
+ ~{{__name}}()
+ {
+ for (auto& _v : _dataList)
+ {
+ LUBAN_FREE(_v);
+ }
+ }
+
+ bool load(::luban::ByteBuf& _buf)
+ {
+ int n;
+ if (!_buf.readSize(n)) return false;
+ for(; n > 0 ; --n)
+ {
+ {{declaring_type_name __value_type}} _v;
+ {{deserialize '_buf' '_v' __value_type}}
+ _dataList.push_back(_v);
+ _dataMap[_v->{{format_field_name __code_style __this.index_field.name}}] = _v;
+ }
+ return true;
+ }
+
+ const ::luban::HashMap<{{declaring_type_name __key_type}}, {{declaring_type_name __value_type}}>& getDataMap() const { return _dataMap; }
+ const ::luban::Vector<{{declaring_type_name __value_type}}>& getDataList() const { return _dataList; }
+
+ {{declaring_type_name __value_type}} get({{declaring_type_name __key_type}} key)
+ {
+ auto it = _dataMap.find(key);
+ return it != _dataMap.end() ? it->second : nullptr;
+ }
+
+ {{~else if __this.is_list_table~}}
+ private:
+ ::luban::Vector<{{declaring_type_name __value_type}}> _dataList;
+ {{~if __this.is_union_index~}}
+
+ {{~else if !__this.index_list.empty?~}}
+ {{~for idx in __this.index_list~}}
+ ::luban::HashMap<{{declaring_type_name idx.type}}, {{declaring_type_name __value_type}}> _dataMap_{{idx.index_field.name}};
+ {{~end~}}
+ {{~else~}}
+ {{~end~}}
+
+ public:
+ bool load(::luban::ByteBuf& _buf)
+ {
+ int n;
+ if (!_buf.readSize(n)) return false;
+ for(; n > 0 ; --n)
+ {
+ {{declaring_type_name __value_type}} _v;
+ {{deserialize '_buf' '_v' __value_type}}
+ _dataList.push_back(_v);
+ {{~if __this.is_union_index~}}
+
+ {{~else if !__this.index_list.empty?~}}
+ {{~for idx in __this.index_list~}}
+ _dataMap_{{idx.index_field.name}}[_v->{{idx.index_field.name}}] = _v;
+ {{~end~}}
+ {{~else~}}
+ {{~end~}}
+ }
+ return true;
+ }
+
+ const ::luban::Vector<{{declaring_type_name __value_type}}>& getDataList() const { return _dataList; }
+
+ {{~if __this.is_union_index~}}
+
+ {{~else if !__this.index_list.empty?~}}
+ {{~for idx in __this.index_list~}}
+ ::luban::HashMap<{{declaring_type_name idx.type}}, {{declaring_type_name __value_type}}>& getDataMapBy{{idx.index_field.name}}()
+ {
+ return _dataMap_{{idx.index_field.name}};
+ }
+
+ {{declaring_type_name __value_type}} getBy{{idx.index_field.name}}({{declaring_type_name idx.type}} key)
+ {
+ auto it = _dataMap_{{idx.index_field.name}}.find(key);
+ return it != _dataMap_{{idx.index_field.name}}.end() ? it->second : nullptr;
+ }
+ {{~end~}}
+ {{~else~}}
+
+ {{declaring_type_name __value_type}} get(size_t index) const
+ {
+ return _dataList[index];
+ }
+ {{~end~}}
+ {{~else~}}
+ private:
+ {{declaring_type_name __value_type}} _data;
+
+ public:
+ {{declaring_type_name __value_type}} data() const { return _data; }
+
+ bool load(::luban::ByteBuf& _buf)
+ {
+ int n;
+ if (!_buf.readSize(n)) return false;
+ if (n != 1) return false;
+ {{deserialize '_buf' '_data' __value_type}}
+ return true;
+ }
+
+
+ {{~ for field in __value_type.def_bean.hierarchy_export_fields ~}}
+{{~if field.comment != '' ~}}
+ /**
+ * {{escape_comment field.comment}}
+ */
+{{~end~}}
+ {{declaring_type_name field.ctype}}& {{getter_name field.name}}() const { return _data->{{format_field_name __code_style field.name}}; }
+ {{~end~}}
+ {{~end~}}
+};
+
+{{namespace_with_grace_end __namespace}}
diff --git a/Luban/Templates/cpp-rawptr-bin/tables.sbn b/Luban/Templates/cpp-rawptr-bin/tables.sbn
new file mode 100644
index 0000000..76354d5
--- /dev/null
+++ b/Luban/Templates/cpp-rawptr-bin/tables.sbn
@@ -0,0 +1,23 @@
+class {{__name}}
+{
+ public:
+ {{~for table in __tables ~}}
+{{~if table.comment != '' ~}}
+ /**
+ * {{escape_comment table.comment}}
+ */
+{{~end~}}
+ {{make_cpp_name table.full_name}} {{table.name}};
+ {{~end~}}
+
+ bool load(::luban::Loader<::luban::ByteBuf> loader)
+ {
+ ::luban::ByteBuf buf;
+ {{~for table in __tables~}}
+ buf.clear();
+ if (!loader(buf, "{{table.output_data_file}}")) return false;
+ if (!{{table.name}}.load(buf)) return false;
+ {{~end~}}
+ return true;
+ }
+};
diff --git a/Luban/Templates/cpp-sharedptr-bin/bean.sbn b/Luban/Templates/cpp-sharedptr-bin/bean.sbn
new file mode 100644
index 0000000..f55cd31
--- /dev/null
+++ b/Luban/Templates/cpp-sharedptr-bin/bean.sbn
@@ -0,0 +1,32 @@
+{{namespace_with_grace_begin __namespace}}
+
+{{~if __this.comment != '' ~}}
+/**
+ * {{escape_comment __this.comment}}
+ */
+{{~end~}}
+struct {{__name}} : public{{if __parent_def_type}} {{make_cpp_name __parent_def_type.full_name}} {{else}} luban::CfgBean {{end}}
+{
+ static bool deserialize{{__name}}(::luban::ByteBuf& _buf, ::luban::SharedPtr<{{__name}}>& _out);
+
+ virtual ~{{__name}}() {}
+
+ bool deserialize(::luban::ByteBuf& _buf);
+
+ {{~ for field in __export_fields ~}}
+{{~if field.comment != '' ~}}
+ /**
+ * {{escape_comment field.comment}}
+ */
+{{~end~}}
+ {{declaring_type_name field.ctype}} {{format_field_name __code_style field.name}};
+ {{~end~}}
+
+{{~if !__this.is_abstract_type~}}
+ static constexpr int __ID__ = {{__this.id}};
+
+ int getTypeId() const override { return __ID__; }
+{{~end~}}
+};
+
+{{namespace_with_grace_end __namespace}}
\ No newline at end of file
diff --git a/Luban/Templates/cpp-sharedptr-bin/schema_cpp.sbn b/Luban/Templates/cpp-sharedptr-bin/schema_cpp.sbn
new file mode 100644
index 0000000..1d1a92c
--- /dev/null
+++ b/Luban/Templates/cpp-sharedptr-bin/schema_cpp.sbn
@@ -0,0 +1,50 @@
+#include "{{__schema_header_file}}"
+
+{{namespace_with_grace_begin __top_module}}
+
+{{~for bean in __beans~}}
+
+bool {{make_cpp_name bean.full_name}}::deserialize(::luban::ByteBuf& _buf)
+{
+ {{~if bean.parent_def_type~}}
+ if (!{{make_cpp_name bean.parent_def_type.full_name}}::deserialize(_buf))
+ {
+ return false;
+ }
+ {{~end~}}
+
+ {{~ for field in bean.export_fields ~}}
+ {{deserialize '_buf' (format_field_name __code_style field.name) field.ctype}}
+ {{~end~}}
+
+ return true;
+}
+
+bool {{make_cpp_name bean.full_name}}::deserialize{{bean.name}}(::luban::ByteBuf& _buf, ::luban::SharedPtr<{{make_cpp_name bean.full_name}}>& _out)
+{
+{{~if bean.is_abstract_type~}}
+ int32_t id;
+ if (!_buf.readInt(id)) return false;
+ switch (id)
+ {
+ {{~for child in bean.hierarchy_not_abstract_children~}}
+ case {{make_type_cpp_name child}}::__ID__: { _out.reset(LUBAN_NEW({{make_type_cpp_name child}})); if (_out->deserialize(_buf)) { return true; } else { _out.reset(); return false;} }
+ {{~end~}}
+ default: { _out = nullptr; return false;}
+ }
+{{~else~}}
+ _out.reset(LUBAN_NEW({{make_type_cpp_name bean}}));
+ if (_out->deserialize(_buf))
+ {
+ return true;
+ }
+ else
+ {
+ _out.reset();
+ return false;
+ }
+{{~end~}}
+}
+
+{{~end~}}
+{{namespace_with_grace_end __top_module}}
diff --git a/Luban/Templates/cpp-sharedptr-bin/schema_h.sbn b/Luban/Templates/cpp-sharedptr-bin/schema_h.sbn
new file mode 100644
index 0000000..90ba84c
--- /dev/null
+++ b/Luban/Templates/cpp-sharedptr-bin/schema_h.sbn
@@ -0,0 +1,21 @@
+#pragma once
+#include
+#include
+
+#include "CfgBean.h"
+
+{{namespace_with_grace_begin __top_module}}
+
+{{__enum_codes~}}
+
+{{~for b in __beans~}}
+{{namespace_with_grace_begin b.namespace}} struct {{b.name}}; {{namespace_with_grace_end b.namespace}}
+{{~end~}}
+
+{{~__bean_codes~}}
+
+{{~__table_codes~}}
+
+{{__tables_code}}
+
+{{namespace_with_grace_end __top_module}}
diff --git a/Luban/Templates/cpp-sharedptr-bin/table.sbn b/Luban/Templates/cpp-sharedptr-bin/table.sbn
new file mode 100644
index 0000000..f883847
--- /dev/null
+++ b/Luban/Templates/cpp-sharedptr-bin/table.sbn
@@ -0,0 +1,140 @@
+{{namespace_with_grace_begin __namespace}}
+
+{{~if __this.comment != '' ~}}
+/**
+ * {{escape_comment __this.comment}}
+ */
+{{~end~}}
+
+class {{__name}}
+{
+ {{~if __this.is_map_table ~}}
+ private:
+ ::luban::HashMap<{{declaring_type_name __key_type}}, {{declaring_type_name __value_type}}> _dataMap;
+ ::luban::Vector<{{declaring_type_name __value_type}}> _dataList;
+
+ public:
+ bool load(::luban::ByteBuf& _buf)
+ {
+ int n;
+ if (!_buf.readSize(n)) return false;
+ for(; n > 0 ; --n)
+ {
+ {{declaring_type_name __value_type}} _v;
+ {{deserialize '_buf' '_v' __value_type}}
+ _dataList.push_back(_v);
+ _dataMap[_v->{{format_field_name __code_style __this.index_field.name}}] = _v;
+ }
+ return true;
+ }
+
+ const ::luban::HashMap<{{declaring_type_name __key_type}}, {{declaring_type_name __value_type}}>& getDataMap() const { return _dataMap; }
+ const ::luban::Vector<{{declaring_type_name __value_type}}>& getDataList() const { return _dataList; }
+
+ {{make_type_cpp_name __value_type.def_bean}}* getRaw({{declaring_type_name __key_type}} key)
+ {
+ auto it = _dataMap.find(key);
+ return it != _dataMap.end() ? it->second.get() : nullptr;
+ }
+
+ {{declaring_type_name __value_type}} get({{declaring_type_name __key_type}} key)
+ {
+ auto it = _dataMap.find(key);
+ return it != _dataMap.end() ? it->second : nullptr;
+ }
+
+ {{~else if __this.is_list_table~}}
+ private:
+ ::luban::Vector<{{declaring_type_name __value_type}}> _dataList;
+ {{~if __this.is_union_index~}}
+
+ {{~else if !__this.index_list.empty?~}}
+ {{~for idx in __this.index_list~}}
+ ::luban::HashMap<{{declaring_type_name idx.type}}, {{declaring_type_name __value_type}}> _dataMap_{{idx.index_field.name}};
+ {{~end~}}
+ {{~else~}}
+ {{~end~}}
+
+ public:
+ bool load(::luban::ByteBuf& _buf)
+ {
+ int n;
+ if (!_buf.readSize(n)) return false;
+ for(; n > 0 ; --n)
+ {
+ {{declaring_type_name __value_type}} _v;
+ {{deserialize '_buf' '_v' __value_type}}
+ _dataList.push_back(_v);
+ {{~if __this.is_union_index~}}
+
+ {{~else if !__this.index_list.empty?~}}
+ {{~for idx in __this.index_list~}}
+ _dataMap_{{idx.index_field.name}}[_v->{{idx.index_field.name}}] = _v;
+ {{~end~}}
+ {{~else~}}
+ {{~end~}}
+ }
+ return true;
+ }
+
+ const ::luban::Vector<{{declaring_type_name __value_type}}>& getDataList() const { return _dataList; }
+
+ {{~if __this.is_union_index~}}
+
+ {{~else if !__this.index_list.empty?~}}
+ {{~for idx in __this.index_list~}}
+ ::luban::HashMap<{{declaring_type_name idx.type}}, {{declaring_type_name __value_type}}>& getDataMapBy{{idx.index_field.name}}()
+ {
+ return _dataMap_{{idx.index_field.name}};
+ }
+ {{make_type_cpp_name __value_type.def_bean}}* getRawBy{{idx.index_field.name}}({{declaring_type_name idx.type}} key)
+ {
+ auto it = _dataMap_{{idx.index_field.name}}.find(key);
+ return it != _dataMap_{{idx.index_field.name}}.end() ? it->second.get() : nullptr;
+ }
+ {{declaring_type_name __value_type}} getBy{{idx.index_field.name}}({{declaring_type_name idx.type}} key)
+ {
+ auto it = _dataMap_{{idx.index_field.name}}.find(key);
+ return it != _dataMap_{{idx.index_field.name}}.end() ? it->second : nullptr;
+ }
+ {{~end~}}
+ {{~else~}}
+ {{make_type_cpp_name __value_type.def_bean}}* getRaw(size_t index) const
+ {
+ return _dataList[index].get();
+ }
+
+ {{declaring_type_name __value_type}} get(size_t index) const
+ {
+ return _dataList[index];
+ }
+ {{~end~}}
+ {{~else~}}
+ private:
+ {{declaring_type_name __value_type}} _data;
+
+ public:
+ {{declaring_type_name __value_type}} data() const { return _data; }
+
+ bool load(::luban::ByteBuf& _buf)
+ {
+ int n;
+ if (!_buf.readSize(n)) return false;
+ if (n != 1) return false;
+ {{deserialize '_buf' '_data' __value_type}}
+ return true;
+ }
+
+
+ {{~ for field in __value_type.def_bean.hierarchy_export_fields ~}}
+{{~if field.comment != '' ~}}
+ /**
+ * {{escape_comment field.comment}}
+ */
+{{~end~}}
+ {{declaring_type_name field.ctype}}& {{getter_name field.name}}() const { return _data->{{format_field_name __code_style field.name}}; }
+ {{~end~}}
+ {{~end~}}
+};
+
+{{namespace_with_grace_end __namespace}}
\ No newline at end of file
diff --git a/Luban/Templates/cpp-sharedptr-bin/tables.sbn b/Luban/Templates/cpp-sharedptr-bin/tables.sbn
new file mode 100644
index 0000000..76354d5
--- /dev/null
+++ b/Luban/Templates/cpp-sharedptr-bin/tables.sbn
@@ -0,0 +1,23 @@
+class {{__name}}
+{
+ public:
+ {{~for table in __tables ~}}
+{{~if table.comment != '' ~}}
+ /**
+ * {{escape_comment table.comment}}
+ */
+{{~end~}}
+ {{make_cpp_name table.full_name}} {{table.name}};
+ {{~end~}}
+
+ bool load(::luban::Loader<::luban::ByteBuf> loader)
+ {
+ ::luban::ByteBuf buf;
+ {{~for table in __tables~}}
+ buf.clear();
+ if (!loader(buf, "{{table.output_data_file}}")) return false;
+ if (!{{table.name}}.load(buf)) return false;
+ {{~end~}}
+ return true;
+ }
+};
diff --git a/Luban/Templates/cs-bin/bean.sbn b/Luban/Templates/cs-bin/bean.sbn
new file mode 100644
index 0000000..4706226
--- /dev/null
+++ b/Luban/Templates/cs-bin/bean.sbn
@@ -0,0 +1,150 @@
+using Luban;
+{{
+ parent_def_type = __bean.parent_def_type
+ export_fields = __bean.export_fields
+ hierarchy_export_fields = __bean.hierarchy_export_fields
+}}
+
+{{namespace_with_grace_begin __namespace_with_top_module}}
+{{~if __bean.comment != '' ~}}
+///
+/// {{escape_comment __bean.comment}}
+///
+{{~end~}}
+{{~
+func get_ref_name
+ ret (format_property_name __code_style $0.name) + '_Ref'
+end
+
+func get_index_var_name
+ ret (format_property_name __code_style $0.name) + '_Index'
+end
+
+func generate_resolve_field_ref
+ field = $0
+ fieldName = format_property_name __code_style field.name
+ refTable = get_ref_table field
+ if can_generate_ref field
+ tableName = format_property_name __code_style refTable.name
+ if field.is_nullable
+ ret (get_ref_name field) + ' = ' + fieldName + '!= null ? tables.' + tableName + '.GetOrDefault(' + (get_value_of_nullable_type field.ctype fieldName) + ') : null;'
+ else
+ ret (get_ref_name field) + ' = tables.' + tableName + '.GetOrDefault(' + fieldName + ');'
+ end
+ else if can_generate_collection_ref field
+ collection_ref_table = get_collection_ref_table field
+ tableName = format_property_name __code_style collection_ref_table.name
+ if field.ctype.type_name == 'list' || field.ctype.type_name == 'set'
+ line1 = (get_ref_name field) + ' = new ' + (declaring_collection_ref_name field.ctype) + '();' + '\n'
+ line2 = 'foreach (var _v in ' + fieldName + ') { ' + (get_ref_name field) + '.Add(tables.' + tableName + '.GetOrDefault(_v)); }' + '\n'
+ ret line1 + line2
+ else if field.ctype.type_name == 'array'
+ line1 = (get_ref_name field) + ' = new ' + (declaring_type_name collection_ref_table.value_ttype) + '[' + fieldName + '.Length];' + '\n'
+ line2 = 'for (int _i = 0; _i < ' + fieldName + '.Length; _i++) { ' + (get_ref_name field) + '[_i] = tables.' + tableName + '.GetOrDefault(' + fieldName + '[_i]); }' + '\n'
+ ret line1 + line2
+ else if field.ctype.type_name == 'map'
+ line1 = (get_ref_name field) + ' = new ' + (declaring_collection_ref_name field.ctype) + '();' + '\n'
+ line2 = 'foreach (var kvp in ' + fieldName + ') { ' + (get_ref_name field) + '.Add(kvp.Key, tables.' + tableName + '.GetOrDefault(kvp.Value)); }' + '\n'
+ ret line1 + line2
+ else
+ ret ''
+ end
+ else
+ if (is_field_bean_need_resolve_ref field)
+ ret fieldName + '?.ResolveRef(tables);'
+ else if (is_field_array_like_need_resolve_ref field)
+ ret 'foreach (var _e in ' + fieldName + ') { _e?.ResolveRef(tables); }'
+ else if (is_field_map_need_resolve_ref field)
+ ret 'foreach (var _e in ' + fieldName + '.Values) { _e?.ResolveRef(tables); }'
+ else
+ ret ''
+ end
+ end
+end
+~}}
+{{~if __bean.is_value_type~}}
+public partial struct {{__name}}
+{{~else~}}
+public {{class_modifier __bean}} partial class {{__name}} : {{if parent_def_type}}{{__bean.parent}}{{else}}Luban.BeanBase{{end}}
+{{~end~}}
+{
+ public {{__name}}(ByteBuf _buf) {{if parent_def_type}} : base(_buf) {{end}}
+ {
+ {{~ for field in export_fields
+ fieldName = format_property_name __code_style field.name
+ ~}}
+ {{deserialize '_buf' fieldName field.ctype}}
+ {{~if can_generate_ref field~}}
+ {{get_ref_name field}} = null;
+ {{~end~}}
+ {{~if has_index field~}}
+ foreach(var _v in {{fieldName}})
+ {
+ {{get_index_var_name field}}.Add(_v.{{format_property_name __code_style (get_index_field field).name}}, _v);
+ }
+ {{~end~}}
+ {{~end~}}
+ }
+
+ public static {{__name}} Deserialize{{__name}}(ByteBuf _buf)
+ {
+ {{~if __bean.is_abstract_type~}}
+ switch (_buf.ReadInt())
+ {
+ {{~for child in __bean.hierarchy_not_abstract_children~}}
+ case {{child.full_name}}.__ID__: return new {{child.full_name}}(_buf);
+ {{~end~}}
+ default: throw new SerializationException();
+ }
+ {{~else~}}
+ return new {{__bean.full_name}}(_buf);
+ {{~end~}}
+ }
+
+ {{~ for field in export_fields ~}}
+{{~if field.comment != '' ~}}
+ ///
+ /// {{escape_comment field.comment}}
+ ///
+{{~end~}}
+ public readonly {{declaring_type_name field.ctype}} {{format_property_name __code_style field.name}};
+ {{~if can_generate_ref field~}}
+ public {{declaring_type_name (get_ref_type field)}} {{get_ref_name field}};
+ {{~else if can_generate_collection_ref field~}}
+ public {{declaring_collection_ref_name field.ctype}} {{get_ref_name field}};
+ {{~end~}}
+ {{~if has_index field
+ indexMapType = get_index_map_type field
+ ~}}
+ public readonly {{declaring_type_name indexMapType}} {{get_index_var_name field}} = new {{declaring_type_name indexMapType}}();
+ {{~end~}}
+ {{~end~}}
+
+{{~if !__bean.is_abstract_type && !__bean.is_value_type~}}
+ public const int __ID__ = {{__bean.id}};
+ public override int GetTypeId() => __ID__;
+{{~end~}}
+
+ public {{method_modifier __bean}} void ResolveRef({{__manager_name}} tables)
+ {
+ {{~if parent_def_type~}}
+ base.ResolveRef(tables);
+ {{~end~}}
+ {{~for field in export_fields~}}
+ {{~ line = generate_resolve_field_ref field ~}}
+ {{~ if line != ''~}}
+ {{line}}
+ {{~end~}}
+ {{~end~}}
+ }
+
+ public override string ToString()
+ {
+ return "{{full_name}}{ "
+ {{~for field in hierarchy_export_fields ~}}
+ + "{{format_field_name __code_style field.name}}:" + {{to_pretty_string (format_property_name __code_style field.name) field.ctype}} + ","
+ {{~end~}}
+ + "}";
+ }
+}
+{{namespace_with_grace_end __namespace_with_top_module}}
diff --git a/Luban/Templates/cs-bin/table.sbn b/Luban/Templates/cs-bin/table.sbn
new file mode 100644
index 0000000..d2afc6a
--- /dev/null
+++ b/Luban/Templates/cs-bin/table.sbn
@@ -0,0 +1,169 @@
+using Luban;
+
+{{
+ key_type = __table.key_ttype
+ value_type = __table.value_ttype
+
+ func index_type_name
+ ret (declaring_type_name $0.type)
+ end
+
+ func table_union_map_type_name
+ ret 'System.Collections.Generic.Dictionary<(' + (array.each __table.index_list @index_type_name | array.join ', ') + '), ' + (declaring_type_name value_type) + '>'
+ end
+
+ func table_key_list
+ varName = $0
+ indexList = __table.index_list |array.each do; ret varName + '.' + (format_property_name __code_style $0.index_field.name); end;
+ ret array.join indexList ', '
+ end
+
+ func table_param_def_list
+ paramList = __table.index_list |array.each do; ret (declaring_type_name $0.type) + ' ' + $0.index_field.name; end
+ ret array.join paramList ', '
+ end
+
+ func table_param_name_list
+ paramList = __table.index_list |array.each do; ret $0.index_field.name; end
+ ret array.join paramList ', '
+ end
+}}
+{{namespace_with_grace_begin __namespace_with_top_module}}
+{{~if __table.comment != '' ~}}
+///
+/// {{escape_comment __table.comment}}
+///
+{{~end~}}
+public partial class {{__name}}
+{
+ {{~if __table.is_map_table ~}}
+ private readonly System.Collections.Generic.Dictionary<{{declaring_type_name key_type}}, {{declaring_type_name value_type}}> _dataMap;
+ private readonly System.Collections.Generic.List<{{declaring_type_name value_type}}> _dataList;
+
+ public {{__name}}(ByteBuf _buf)
+ {
+ int n = _buf.ReadSize();
+ _dataMap = new System.Collections.Generic.Dictionary<{{declaring_type_name key_type}}, {{declaring_type_name value_type}}>(n);
+ _dataList = new System.Collections.Generic.List<{{declaring_type_name value_type}}>(n);
+ for(int i = n ; i > 0 ; --i)
+ {
+ {{declaring_type_name value_type}} _v;
+ {{deserialize '_buf' '_v' value_type}}
+ _dataList.Add(_v);
+ _dataMap.Add(_v.{{format_property_name __code_style __table.index_field.name}}, _v);
+ }
+ }
+
+ public System.Collections.Generic.Dictionary<{{declaring_type_name key_type}}, {{declaring_type_name value_type}}> DataMap => _dataMap;
+ public System.Collections.Generic.List<{{declaring_type_name value_type}}> DataList => _dataList;
+
+{{~if value_type.is_dynamic~}}
+ public T GetOrDefaultAs({{declaring_type_name key_type}} key) where T : {{declaring_type_name value_type}} => _dataMap.TryGetValue(key, out var v) ? (T)v : default;
+ public T GetAs({{declaring_type_name key_type}} key) where T : {{declaring_type_name value_type}} => (T)_dataMap[key];
+{{~end~}}
+ public {{declaring_type_name value_type}} GetOrDefault({{declaring_type_name key_type}} key) => _dataMap.TryGetValue(key, out var v) ? v : default;
+ public {{declaring_type_name value_type}} Get({{declaring_type_name key_type}} key) => _dataMap[key];
+ public {{declaring_type_name value_type}} this[{{declaring_type_name key_type}} key] => _dataMap[key];
+
+ public void ResolveRef({{__manager_name}} tables)
+ {
+ {{~if is_bean_need_resolve_ref value_type ~}}
+ foreach(var _v in _dataList)
+ {
+ _v.ResolveRef(tables);
+ }
+ {{~end~}}
+ }
+
+ {{~else if __table.is_list_table ~}}
+ private readonly System.Collections.Generic.List<{{declaring_type_name value_type}}> _dataList;
+
+ {{~if __table.is_union_index~}}
+ private {{table_union_map_type_name}} _dataMapUnion;
+ {{~else if !__table.index_list.empty?~}}
+ {{~for idx in __table.index_list~}}
+ private System.Collections.Generic.Dictionary<{{declaring_type_name idx.type}}, {{declaring_type_name value_type}}> _dataMap_{{idx.index_field.name}};
+ {{~end~}}
+ {{~end~}}
+
+ public {{__name}}(ByteBuf _buf)
+ {
+ int n = _buf.ReadSize();
+ _dataList = new System.Collections.Generic.List<{{declaring_type_name value_type}}>(n);
+ for(int i = n ; i > 0 ; --i)
+ {
+ {{declaring_type_name value_type}} _v;
+ {{deserialize '_buf' '_v' value_type}}
+ _dataList.Add(_v);
+ }
+ {{~if __table.is_union_index~}}
+ _dataMapUnion = new {{table_union_map_type_name}}(n);
+ foreach(var _v in _dataList)
+ {
+ _dataMapUnion.Add(({{table_key_list "_v"}}), _v);
+ }
+ {{~else if !__table.index_list.empty?~}}
+ {{~for idx in __table.index_list~}}
+ _dataMap_{{idx.index_field.name}} = new System.Collections.Generic.Dictionary<{{declaring_type_name idx.type}}, {{declaring_type_name value_type}}>(n);
+ {{~end~}}
+ foreach(var _v in _dataList)
+ {
+ {{~for idx in __table.index_list~}}
+ _dataMap_{{idx.index_field.name}}.Add(_v.{{format_property_name __code_style idx.index_field.name}}, _v);
+ {{~end~}}
+ }
+ {{~end~}}
+ }
+
+ public System.Collections.Generic.List<{{declaring_type_name value_type}}> DataList => _dataList;
+
+ {{~if __table.is_union_index~}}
+ public {{declaring_type_name value_type}} Get({{table_param_def_list}}) => _dataMapUnion.TryGetValue(({{table_param_name_list}}), out {{declaring_type_name value_type}} __v) ? __v : default;
+ {{~else if !__table.index_list.empty? ~}}
+ {{~for idx in __table.index_list~}}
+ public {{declaring_type_name value_type}} GetBy{{format_property_name __code_style idx.index_field.name}}({{declaring_type_name idx.type}} key) => _dataMap_{{idx.index_field.name}}.TryGetValue(key, out {{declaring_type_name value_type}} __v) ? __v : default;
+ {{~end~}}
+ {{~end~}}
+
+ public void ResolveRef({{__manager_name}} tables)
+ {
+ {{~if is_bean_need_resolve_ref value_type ~}}
+ foreach(var _v in _dataList)
+ {
+ _v.ResolveRef(tables);
+ }
+ {{~end~}}
+ }
+ {{~else~}}
+
+ private readonly {{declaring_type_name value_type}} _data;
+
+ public {{declaring_type_name value_type}} Data => _data;
+
+ public {{__name}}(ByteBuf _buf)
+ {
+ int n = _buf.ReadSize();
+ if (n != 1) throw new SerializationException("table mode=one, but size != 1");
+ {{deserialize '_buf' '_data' value_type}}
+ }
+
+
+ {{~ for field in value_type.def_bean.hierarchy_export_fields ~}}
+{{~if field.comment != '' ~}}
+ ///
+ /// {{escape_comment field.comment}}
+ ///
+{{~end~}}
+ public {{declaring_type_name field.ctype}} {{format_property_name __code_style field.name}} => _data.{{format_property_name __code_style field.name}};
+ {{~end~}}
+
+ public void ResolveRef({{__manager_name}} tables)
+ {
+ {{~if is_bean_need_resolve_ref value_type ~}}
+ _data.ResolveRef(tables);
+ {{~end~}}
+ }
+ {{~end~}}
+}
+
+{{namespace_with_grace_end __namespace_with_top_module}}
diff --git a/Luban/Templates/cs-bin/tables.sbn b/Luban/Templates/cs-bin/tables.sbn
new file mode 100644
index 0000000..be907ad
--- /dev/null
+++ b/Luban/Templates/cs-bin/tables.sbn
@@ -0,0 +1,31 @@
+using Luban;
+
+{{namespace_with_grace_begin __namespace}}
+public partial class {{__name}}
+{
+ {{~for table in __tables ~}}
+{{~if table.comment != '' ~}}
+ ///
+ /// {{escape_comment table.comment}}
+ ///
+{{~end~}}
+ public {{table.full_name}} {{format_property_name __code_style table.name}} {get; }
+ {{~end~}}
+
+ public {{__name}}(System.Func loader)
+ {
+ {{~for table in __tables ~}}
+ {{format_property_name __code_style table.name}} = new {{table.full_name}}(loader("{{table.output_data_file}}"));
+ {{~end~}}
+ ResolveRef();
+ }
+
+ private void ResolveRef()
+ {
+ {{~for table in __tables ~}}
+ {{format_property_name __code_style table.name}}.ResolveRef(this);
+ {{~end~}}
+ }
+}
+
+{{namespace_with_grace_end __namespace}}
\ No newline at end of file
diff --git a/Luban/Templates/cs-dotnet-json/bean.sbn b/Luban/Templates/cs-dotnet-json/bean.sbn
new file mode 100644
index 0000000..d661e08
--- /dev/null
+++ b/Luban/Templates/cs-dotnet-json/bean.sbn
@@ -0,0 +1,151 @@
+using Luban;
+using System.Text.Json;
+{{
+ parent_def_type = __bean.parent_def_type
+ export_fields = __bean.export_fields
+ hierarchy_export_fields = __bean.hierarchy_export_fields
+}}
+
+{{namespace_with_grace_begin __namespace_with_top_module}}
+{{~if __bean.comment != '' ~}}
+///
+/// {{escape_comment __bean.comment}}
+///
+{{~end~}}
+{{~
+func get_ref_name
+ ret (format_property_name __code_style $0.name) + '_Ref'
+end
+
+func get_index_var_name
+ ret (format_property_name __code_style $0.name) + '_Index'
+end
+
+func generate_resolve_field_ref
+ field = $0
+ fieldName = format_property_name __code_style field.name
+ refTable = get_ref_table field
+ if can_generate_ref field
+ tableName = format_property_name __code_style refTable.name
+ if field.is_nullable
+ ret (get_ref_name field) + ' = ' + fieldName + '!= null ? tables.' + tableName + '.GetOrDefault(' + (get_value_of_nullable_type field.ctype fieldName) + ') : null;'
+ else
+ ret (get_ref_name field) + ' = tables.' + tableName + '.GetOrDefault(' + fieldName + ');'
+ end
+ else if can_generate_collection_ref field
+ collection_ref_table = get_collection_ref_table field
+ tableName = format_property_name __code_style collection_ref_table.name
+ if field.ctype.type_name == 'list' || field.ctype.type_name == 'set'
+ line1 = (get_ref_name field) + ' = new ' + (declaring_collection_ref_name field.ctype) + '();' + '\n'
+ line2 = 'foreach (var _v in ' + fieldName + ') { ' + (get_ref_name field) + '.Add(tables.' + tableName + '.GetOrDefault(_v)); }' + '\n'
+ ret line1 + line2
+ else if field.ctype.type_name == 'array'
+ line1 = (get_ref_name field) + ' = new ' + (declaring_type_name collection_ref_table.value_ttype) + '[' + fieldName + '.Length];' + '\n'
+ line2 = 'for (int _i = 0; _i < ' + fieldName + '.Length; _i++) { ' + (get_ref_name field) + '[_i] = tables.' + tableName + '.GetOrDefault(' + fieldName + '[_i]); }' + '\n'
+ ret line1 + line2
+ else if field.ctype.type_name == 'map'
+ line1 = (get_ref_name field) + ' = new ' + (declaring_collection_ref_name field.ctype) + '();' + '\n'
+ line2 = 'foreach (var kvp in ' + fieldName + ') { ' + (get_ref_name field) + '.Add(kvp.Key, tables.' + tableName + '.GetOrDefault(kvp.Value)); }' + '\n'
+ ret line1 + line2
+ else
+ ret ''
+ end
+ else
+ if (is_field_bean_need_resolve_ref field)
+ ret fieldName + '?.ResolveRef(tables);'
+ else if (is_field_array_like_need_resolve_ref field)
+ ret 'foreach (var _e in ' + fieldName + ') { _e?.ResolveRef(tables); }'
+ else if (is_field_map_need_resolve_ref field)
+ ret 'foreach (var _e in ' + fieldName + '.Values) { _e?.ResolveRef(tables); }'
+ else
+ ret ''
+ end
+ end
+end
+~}}
+{{~if __bean.is_value_type~}}
+public partial struct {{__name}}
+{{~else~}}
+public {{class_modifier __bean}} partial class {{__name}} : {{if parent_def_type}}{{__bean.parent}}{{else}}Luban.BeanBase{{end}}
+{{~end~}}
+{
+ public {{__name}}(JsonElement _buf) {{if parent_def_type}} : base(_buf) {{end}}
+ {
+ {{~ for field in export_fields
+ fieldName = format_property_name __code_style field.name
+ ~}}
+ {{deserialize_field fieldName '_buf' field.name field.ctype}}
+ {{~if can_generate_ref field~}}
+ {{get_ref_name field}} = null;
+ {{~end~}}
+ {{~if has_index field~}}
+ foreach(var _v in {{fieldName}})
+ {
+ {{get_index_var_name field}}.Add(_v.{{format_property_name __code_style (get_index_field field).name}}, _v);
+ }
+ {{~end~}}
+ {{~end~}}
+ }
+
+ public static {{__name}} Deserialize{{__name}}(JsonElement _buf)
+ {
+ {{~if __bean.is_abstract_type~}}
+ switch (_buf.GetProperty("$type").GetString())
+ {
+ {{~for child in __bean.hierarchy_not_abstract_children~}}
+ case "{{impl_data_type child __bean}}": return new {{child.full_name}}(_buf);
+ {{~end~}}
+ default: throw new SerializationException();
+ }
+ {{~else~}}
+ return new {{__bean.full_name}}(_buf);
+ {{~end~}}
+ }
+
+ {{~ for field in export_fields ~}}
+{{~if field.comment != '' ~}}
+ ///
+ /// {{escape_comment field.comment}}
+ ///
+{{~end~}}
+ public readonly {{declaring_type_name field.ctype}} {{format_property_name __code_style field.name}};
+ {{~if can_generate_ref field~}}
+ public {{declaring_type_name (get_ref_type field)}} {{get_ref_name field}};
+ {{~else if can_generate_collection_ref field~}}
+ public {{declaring_collection_ref_name field.ctype}} {{get_ref_name field}};
+ {{~end~}}
+ {{~if has_index field
+ indexMapType = get_index_map_type field
+ ~}}
+ public readonly {{declaring_type_name indexMapType}} {{get_index_var_name field}} = new {{declaring_type_name indexMapType}}();
+ {{~end~}}
+ {{~end~}}
+
+{{~if !__bean.is_abstract_type && !__bean.is_value_type~}}
+ public const int __ID__ = {{__bean.id}};
+ public override int GetTypeId() => __ID__;
+{{~end~}}
+
+ public {{method_modifier __bean}} void ResolveRef({{__manager_name}} tables)
+ {
+ {{~if parent_def_type~}}
+ base.ResolveRef(tables);
+ {{~end~}}
+ {{~for field in export_fields~}}
+ {{~ line = generate_resolve_field_ref field ~}}
+ {{~ if line != ''~}}
+ {{line}}
+ {{~end~}}
+ {{~end~}}
+ }
+
+ public override string ToString()
+ {
+ return "{{full_name}}{ "
+ {{~for field in hierarchy_export_fields ~}}
+ + "{{format_field_name __code_style field.name}}:" + {{to_pretty_string (format_property_name __code_style field.name) field.ctype}} + ","
+ {{~end~}}
+ + "}";
+ }
+}
+{{namespace_with_grace_end __namespace_with_top_module}}
diff --git a/Luban/Templates/cs-dotnet-json/table.sbn b/Luban/Templates/cs-dotnet-json/table.sbn
new file mode 100644
index 0000000..76b04fd
--- /dev/null
+++ b/Luban/Templates/cs-dotnet-json/table.sbn
@@ -0,0 +1,172 @@
+using Luban;
+using System.Text.Json;
+
+{{
+ key_type = __table.key_ttype
+ value_type = __table.value_ttype
+
+ func index_type_name
+ ret (declaring_type_name $0.type)
+ end
+
+ func table_union_map_type_name
+ ret 'System.Collections.Generic.Dictionary<(' + (array.each __table.index_list @index_type_name | array.join ', ') + '), ' + (declaring_type_name __value_type) + '>'
+ end
+
+ func table_key_list
+ varName = $0
+ indexList = __table.index_list |array.each do; ret varName + '.' + (format_property_name __code_style $0.index_field.name); end;
+ ret array.join indexList ', '
+ end
+
+ func table_param_def_list
+ paramList = __table.index_list |array.each do; ret (declaring_type_name $0.type) + ' ' + $0.index_field.name; end
+ ret array.join paramList ', '
+ end
+
+ func table_param_name_list
+ paramList = __table.index_list |array.each do; ret $0.index_field.name; end
+ ret array.join paramList ', '
+ end
+}}
+{{namespace_with_grace_begin __namespace_with_top_module}}
+{{~if __table.comment != '' ~}}
+///
+/// {{escape_comment __table.comment}}
+///
+{{~end~}}
+public partial class {{__name}}
+{
+ {{~if __table.is_map_table ~}}
+ private readonly System.Collections.Generic.Dictionary<{{declaring_type_name __key_type}}, {{declaring_type_name __value_type}}> _dataMap;
+ private readonly System.Collections.Generic.List<{{declaring_type_name __value_type}}> _dataList;
+
+ public {{__name}}(JsonElement _buf)
+ {
+ int count = _buf.GetArrayLength();
+ _dataMap = new System.Collections.Generic.Dictionary<{{declaring_type_name __key_type}}, {{declaring_type_name __value_type}}>(count);
+ _dataList = new System.Collections.Generic.List<{{declaring_type_name __value_type}}>(count);
+
+ foreach(JsonElement _ele in _buf.EnumerateArray())
+ {
+ {{declaring_type_name __value_type}} _v;
+ {{deserialize '_v' '_ele' __value_type}}
+ _dataList.Add(_v);
+ _dataMap.Add(_v.{{format_property_name __code_style __table.index_field.name}}, _v);
+ }
+ }
+
+ public System.Collections.Generic.Dictionary<{{declaring_type_name __key_type}}, {{declaring_type_name __value_type}}> DataMap => _dataMap;
+ public System.Collections.Generic.List<{{declaring_type_name __value_type}}> DataList => _dataList;
+
+{{~if __value_type.is_dynamic~}}
+ public T GetOrDefaultAs({{declaring_type_name __key_type}} key) where T : {{declaring_type_name __value_type}} => _dataMap.TryGetValue(key, out var v) ? (T)v : default;
+ public T GetAs({{declaring_type_name __key_type}} key) where T : {{declaring_type_name __value_type}} => (T)_dataMap[key];
+{{~end~}}
+ public {{declaring_type_name __value_type}} GetOrDefault({{declaring_type_name __key_type}} key) => _dataMap.TryGetValue(key, out var v) ? v : default;
+ public {{declaring_type_name __value_type}} Get({{declaring_type_name __key_type}} key) => _dataMap[key];
+ public {{declaring_type_name __value_type}} this[{{declaring_type_name __key_type}} key] => _dataMap[key];
+
+ public void ResolveRef({{__manager_name}} tables)
+ {
+ {{~if is_bean_need_resolve_ref value_type ~}}
+ foreach(var _v in _dataList)
+ {
+ _v.ResolveRef(tables);
+ }
+ {{~end~}}
+ }
+
+ {{~else if __table.is_list_table ~}}
+ private readonly System.Collections.Generic.List<{{declaring_type_name __value_type}}> _dataList;
+
+ {{~if __table.is_union_index~}}
+ private {{table_union_map_type_name}} _dataMapUnion;
+ {{~else if !__table.index_list.empty?~}}
+ {{~for idx in __table.index_list~}}
+ private System.Collections.Generic.Dictionary<{{declaring_type_name idx.type}}, {{declaring_type_name __value_type}}> _dataMap_{{idx.index_field.name}};
+ {{~end~}}
+ {{~end~}}
+
+ public {{__name}}(JsonElement _buf)
+ {
+ int count = _buf.GetArrayLength();
+ _dataList = new System.Collections.Generic.List<{{declaring_type_name __value_type}}>(count);
+
+ foreach(JsonElement _ele in _buf.EnumerateArray())
+ {
+ {{declaring_type_name __value_type}} _v;
+ {{deserialize '_v' '_ele' __value_type}}
+ _dataList.Add(_v);
+ }
+ {{~if __table.is_union_index~}}
+ _dataMapUnion = new {{table_union_map_type_name}}();
+ foreach(var _v in _dataList)
+ {
+ _dataMapUnion.Add(({{table_key_list "_v"}}), _v);
+ }
+ {{~else if !__table.index_list.empty?~}}
+ {{~for idx in __table.index_list~}}
+ _dataMap_{{idx.index_field.name}} = new System.Collections.Generic.Dictionary<{{declaring_type_name idx.type}}, {{declaring_type_name __value_type}}>(count);
+ {{~end~}}
+ foreach(var _v in _dataList)
+ {
+ {{~for idx in __table.index_list~}}
+ _dataMap_{{idx.index_field.name}}.Add(_v.{{format_property_name __code_style idx.index_field.name}}, _v);
+ {{~end~}}
+ }
+ {{~end~}}
+ }
+
+ public System.Collections.Generic.List<{{declaring_type_name __value_type}}> DataList => _dataList;
+
+ {{~if __table.is_union_index~}}
+ public {{declaring_type_name __value_type}} Get({{table_param_def_list}}) => _dataMapUnion.TryGetValue(({{table_param_name_list}}), out {{declaring_type_name __value_type}} __v) ? __v : default;
+ {{~else if !__table.index_list.empty? ~}}
+ {{~for idx in __table.index_list~}}
+ public {{declaring_type_name __value_type}} GetBy{{format_property_name __code_style idx.index_field.name}}({{declaring_type_name idx.type}} key) => _dataMap_{{idx.index_field.name}}.TryGetValue(key, out {{declaring_type_name __value_type}} __v) ? __v : default;
+ {{~end~}}
+ {{~end~}}
+
+ public void ResolveRef({{__manager_name}} tables)
+ {
+ {{~if is_bean_need_resolve_ref value_type ~}}
+ foreach(var _v in _dataList)
+ {
+ _v.ResolveRef(tables);
+ }
+ {{~end~}}
+ }
+ {{~else~}}
+
+ private readonly {{declaring_type_name __value_type}} _data;
+
+ public {{declaring_type_name __value_type}} Data => _data;
+
+ public {{__name}}(JsonElement _buf)
+ {
+ int n = _buf.GetArrayLength();
+ if (n != 1) throw new SerializationException("table mode=one, but size != 1");
+ {{deserialize '_data' '_buf[0]' __value_type}}
+ }
+
+
+ {{~ for field in __value_type.def_bean.hierarchy_export_fields ~}}
+{{~if field.comment != '' ~}}
+ ///
+ /// {{escape_comment field.comment}}
+ ///
+{{~end~}}
+ public {{declaring_type_name field.ctype}} {{format_property_name __code_style field.name}} => _data.{{format_property_name __code_style field.name}};
+ {{~end~}}
+
+ public void ResolveRef({{__manager_name}} tables)
+ {
+ {{~if is_bean_need_resolve_ref value_type ~}}
+ _data.ResolveRef(tables);
+ {{~end~}}
+ }
+ {{~end~}}
+}
+
+{{namespace_with_grace_end __namespace_with_top_module}}
diff --git a/Luban/Templates/cs-dotnet-json/tables.sbn b/Luban/Templates/cs-dotnet-json/tables.sbn
new file mode 100644
index 0000000..fcb1832
--- /dev/null
+++ b/Luban/Templates/cs-dotnet-json/tables.sbn
@@ -0,0 +1,32 @@
+using Luban;
+using System.Text.Json;
+
+{{namespace_with_grace_begin __namespace}}
+public partial class {{__name}}
+{
+ {{~for table in __tables ~}}
+{{~if table.comment != '' ~}}
+ ///
+ /// {{escape_comment table.comment}}
+ ///
+{{~end~}}
+ public {{table.full_name}} {{format_property_name __code_style table.name}} {get; }
+ {{~end~}}
+
+ public {{__name}}(System.Func loader)
+ {
+ {{~for table in __tables ~}}
+ {{format_property_name __code_style table.name}} = new {{table.full_name}}(loader("{{table.output_data_file}}"));
+ {{~end~}}
+ ResolveRef();
+ }
+
+ private void ResolveRef()
+ {
+ {{~for table in __tables ~}}
+ {{format_property_name __code_style table.name}}.ResolveRef(this);
+ {{~end~}}
+ }
+}
+
+{{namespace_with_grace_end __namespace}}
\ No newline at end of file
diff --git a/Luban/Templates/cs-editor-json/bean.sbn b/Luban/Templates/cs-editor-json/bean.sbn
new file mode 100644
index 0000000..0ed8c8c
--- /dev/null
+++ b/Luban/Templates/cs-editor-json/bean.sbn
@@ -0,0 +1,101 @@
+using System.Collections.Generic;
+using SimpleJSON;
+using Luban;
+
+{{namespace_with_grace_begin __namespace_with_top_module}}
+
+{{~if __this.comment != '' ~}}
+///
+/// {{escape_comment __this.comment}}
+///
+{{~end~}}
+public {{class_modifier __bean}} class {{__name}} : {{if __parent_def_type}} {{__this.parent}} {{else}} Luban.EditorBeanBase {{end}}
+{
+ public {{__name}}()
+ {
+ {{~ for field in __fields ~}}
+ {{~if (need_init field.ctype) && !field.ctype.is_nullable ~}}
+ {{format_field_name __code_style field.name}} = {{init_value field.ctype}};
+ {{~end~}}
+ {{~end~}}
+ }
+
+ {{~if !__this.is_abstract_type~}}
+ public override void LoadJson(SimpleJSON.JSONObject _json)
+ {
+ {{~ for field in __hierarchy_fields ~}}
+ {
+ var _fieldJson = _json["{{field.name}}"];
+ if (_fieldJson != null)
+ {
+ {{deserialize '_fieldJson' (format_field_name __code_style field.name) field.ctype}}
+ }
+ }
+
+ {{~end~}}
+ }
+
+ public override void SaveJson(SimpleJSON.JSONObject _json)
+ {
+ {{~if parent~}}
+ _json["$type"] = "{{__this.full_name}}";
+ {{~end~}}
+ {{~ for field in __hierarchy_fields ~}}
+ {{~if field.ctype.is_nullable}}
+ if ({{format_field_name __code_style field.name}} != null)
+ {
+ {{serialize '_json' field.name (format_field_name __code_style field.name) field.ctype}}
+ }
+ {{~else~}}
+ {
+ {{~if (is_raw_nullable field.ctype)}}
+ if ({{format_field_name __code_style field.name}} == null) { throw new System.ArgumentNullException(); }
+ {{~end~}}
+ {{serialize '_json' field.name (format_field_name __code_style field.name) field.ctype}}
+ }
+ {{~end~}}
+ {{~end~}}
+ }
+ {{~end~}}
+
+ public static {{__name}} LoadJson{{__name}}(SimpleJSON.JSONNode _json)
+ {
+ {{~if __this.is_abstract_type~}}
+ string type = _json["$type"];
+ {{__name}} obj;
+ switch (type)
+ {
+ {{~for child in __this.hierarchy_not_abstract_children~}}
+ {{~if child.namespace == __this.namespace && __this.namespace != '' ~}}
+ case "{{child.full_name}}":
+ {{~end~}}
+ case "{{impl_data_type child __this}}":obj = new {{child.full_name}}(); break;
+ {{~end~}}
+ default: throw new SerializationException();
+ }
+ {{~else~}}
+ {{__name}} obj = new {{__this.full_name}}();
+ {{~end~}}
+ obj.LoadJson((SimpleJSON.JSONObject)_json);
+ return obj;
+ }
+
+ public static void SaveJson{{__name}}({{__name}} _obj, SimpleJSON.JSONNode _json)
+ {
+ {{~if __this.is_abstract_type~}}
+ _json["$type"] = _obj.GetType().Name;
+ {{~end~}}
+ _obj.SaveJson((SimpleJSON.JSONObject)_json);
+ }
+
+ {{~ for field in __fields ~}}
+{{~if field.comment != '' ~}}
+ ///
+ /// {{escape_comment field.comment}}
+ ///
+{{~end~}}
+ public {{declaring_type_name field.ctype}} {{format_field_name __code_style field.name}};
+
+ {{~end~}}
+}
+{{namespace_with_grace_end __namespace_with_top_module}}
diff --git a/Luban/Templates/cs-editor-json/enum.sbn b/Luban/Templates/cs-editor-json/enum.sbn
new file mode 100644
index 0000000..fb36236
--- /dev/null
+++ b/Luban/Templates/cs-editor-json/enum.sbn
@@ -0,0 +1,59 @@
+{{~
+ comment = __enum.comment
+ items = __enum.items
+ itemType = 'Luban.EditorEnumItemInfo'
+~}}
+
+{{namespace_with_grace_begin __namespace_with_top_module}}
+{{~if comment != '' ~}}
+ ///
+ /// {{escape_comment comment}}
+ ///
+{{~end~}}
+ {{~if __enum.is_flags~}}
+ [System.Flags]
+ {{~end~}}
+ public enum {{__name}}
+ {
+ {{~ for item in items ~}}
+{{~if item.comment != '' ~}}
+ ///
+ /// {{escape_comment item.comment_or_alias}}
+ ///
+{{~end~}}
+ {{format_enum_item_name __code_style item.name}} = {{item.value}},
+ {{~end~}}
+ }
+
+ public static class {{__name}}_Metadata
+ {
+ {{~ for item in items ~}}
+ public static readonly {{itemType}} {{item.name}} = new {{itemType}}("{{item.name}}", "{{item.alias}}", {{item.int_value}}, "{{item.comment}}");
+ {{~end~}}
+
+ private static readonly System.Collections.Generic.List<{{itemType}}> __items = new System.Collections.Generic.List<{{itemType}}>
+ {
+ {{~ for item in items ~}}
+ {{item.name}},
+ {{~end~}}
+ };
+
+ public static System.Collections.Generic.List<{{itemType}}> GetItems() => __items;
+
+ public static {{itemType}} GetByName(string name)
+ {
+ return __items.Find(c => c.Name == name);
+ }
+
+ public static {{itemType}} GetByNameOrAlias(string name)
+ {
+ return __items.Find(c => c.Name == name || c.Alias == name);
+ }
+
+ public static {{itemType}} GetByValue(int value)
+ {
+ return __items.Find(c => c.Value == value);
+ }
+ }
+
+{{namespace_with_grace_end __namespace_with_top_module}}
diff --git a/Luban/Templates/cs-newtonsoft-json/bean.sbn b/Luban/Templates/cs-newtonsoft-json/bean.sbn
new file mode 100644
index 0000000..f8ae9bd
--- /dev/null
+++ b/Luban/Templates/cs-newtonsoft-json/bean.sbn
@@ -0,0 +1,158 @@
+using Luban;
+using Newtonsoft.Json.Linq;
+
+{{
+ parent_def_type = __bean.parent_def_type
+ export_fields = __bean.export_fields
+ hierarchy_export_fields = __bean.hierarchy_export_fields
+}}
+
+{{namespace_with_grace_begin __namespace_with_top_module}}
+{{~if __bean.comment != '' ~}}
+///
+/// {{escape_comment __bean.comment}}
+///
+{{~end~}}
+{{~
+func get_ref_name
+ ret (format_property_name __code_style $0.name) + '_Ref'
+end
+
+func get_index_var_name
+ ret (format_property_name __code_style $0.name) + '_Index'
+end
+
+
+func generate_resolve_field_ref
+ field = $0
+ fieldName = format_property_name __code_style field.name
+ refTable = get_ref_table field
+ if can_generate_ref field
+ tableName = format_property_name __code_style refTable.name
+ if field.is_nullable
+ ret (get_ref_name field) + ' = ' + fieldName + '!= null ? tables.' + tableName + '.GetOrDefault(' + (get_value_of_nullable_type field.ctype fieldName) + ') : null;'
+ else
+ ret (get_ref_name field) + ' = tables.' + tableName + '.GetOrDefault(' + fieldName + ');'
+ end
+ else if can_generate_collection_ref field
+ collection_ref_table = get_collection_ref_table field
+ tableName = format_property_name __code_style collection_ref_table.name
+ if field.ctype.type_name == 'list' || field.ctype.type_name == 'set'
+ line1 = (get_ref_name field) + ' = new ' + (declaring_collection_ref_name field.ctype) + '();' + '\n'
+ line2 = 'foreach (var _v in ' + fieldName + ') { ' + (get_ref_name field) + '.Add(tables.' + tableName + '.GetOrDefault(_v)); }' + '\n'
+ ret line1 + line2
+ else if field.ctype.type_name == 'array'
+ line1 = (get_ref_name field) + ' = new ' + (declaring_type_name collection_ref_table.value_ttype) + '[' + fieldName + '.Length];' + '\n'
+ line2 = 'for (int _i = 0; _i < ' + fieldName + '.Length; _i++) { ' + (get_ref_name field) + '[_i] = tables.' + tableName + '.GetOrDefault(' + fieldName + '[_i]); }' + '\n'
+ ret line1 + line2
+ else if field.ctype.type_name == 'map'
+ line1 = (get_ref_name field) + ' = new ' + (declaring_collection_ref_name field.ctype) + '();' + '\n'
+ line2 = 'foreach (var kvp in ' + fieldName + ') { ' + (get_ref_name field) + '.Add(kvp.Key, tables.' + tableName + '.GetOrDefault(kvp.Value)); }' + '\n'
+ ret line1 + line2
+ else
+ ret ''
+ end
+ else
+ if (is_field_bean_need_resolve_ref field)
+ ret fieldName + '?.ResolveRef(tables);'
+ else if (is_field_array_like_need_resolve_ref field)
+ ret 'foreach (var _e in ' + fieldName + ') { _e?.ResolveRef(tables); }'
+ else if (is_field_map_need_resolve_ref field)
+ ret 'foreach (var _e in ' + fieldName + '.Values) { _e?.ResolveRef(tables); }'
+ else
+ ret ''
+ end
+ end
+end
+
+~}}
+
+{{~if __bean.is_value_type~}}
+public partial struct {{__name}}
+{{~else~}}
+public {{class_modifier __bean}} partial class {{__name}} : {{if parent_def_type}}{{__bean.parent}}{{else}}Luban.BeanBase{{end}}
+{{~end~}}
+{
+ public {{__name}}(JToken _buf) {{if parent_def_type}} : base(_buf) {{end}}
+ {
+ JObject _obj = _buf as JObject;
+ {{~ for field in export_fields
+ fieldName = format_property_name __code_style field.name
+ ~}}
+ {{deserialize_field fieldName '_obj' field.name field.ctype}}
+ {{~if can_generate_ref field~}}
+ {{get_ref_name field}} = null;
+ {{~end~}}
+ {{~if has_index field~}}
+ foreach(var _v in {{fieldName}})
+ {
+ {{get_index_var_name field}}.Add(_v.{{format_property_name __code_style (get_index_field field).name}}, _v);
+ }
+ {{~end~}}
+ {{~end~}}
+ }
+
+ public static {{__name}} Deserialize{{__name}}(JToken _buf)
+ {
+ {{~if __bean.is_abstract_type~}}
+ var _obj=_buf as JObject;
+ switch (_obj.GetValue("$type").ToString())
+ {
+ {{~for child in __bean.hierarchy_not_abstract_children~}}
+ case "{{impl_data_type child __bean}}": return new {{child.full_name}}(_buf);
+ {{~end~}}
+ default: throw new SerializationException();
+ }
+ {{~else~}}
+ return new {{__bean.full_name}}(_buf);
+ {{~end~}}
+ }
+
+ {{~ for field in export_fields ~}}
+{{~if field.comment != '' ~}}
+ ///
+ /// {{escape_comment field.comment}}
+ ///
+{{~end~}}
+ public readonly {{declaring_type_name field.ctype}} {{format_property_name __code_style field.name}};
+ {{~if can_generate_ref field~}}
+ public {{declaring_type_name (get_ref_type field)}} {{get_ref_name field}};
+ {{~else if can_generate_collection_ref field~}}
+ public {{declaring_collection_ref_name field.ctype}} {{get_ref_name field}};
+ {{~end~}}
+ {{~if has_index field
+ indexMapType = get_index_map_type field
+ ~}}
+ public readonly {{declaring_type_name indexMapType}} {{get_index_var_name field}} = new {{declaring_type_name indexMapType}}();
+ {{~end~}}
+ {{~end~}}
+
+
+ {{~if !__bean.is_abstract_type && !__bean.is_value_type~}}
+ public const int __ID__ = {{__bean.id}};
+ public override int GetTypeId() => __ID__;
+ {{~end~}}
+
+ public {{method_modifier __bean}} void ResolveRef({{__manager_name}} tables)
+ {
+ {{~if parent_def_type~}}
+ base.ResolveRef(tables);
+ {{~end~}}
+ {{~for field in export_fields~}}
+ {{~ line = generate_resolve_field_ref field ~}}
+ {{~ if line != ''~}}
+ {{line}}
+ {{~end~}}
+ {{~end~}}
+ }
+
+ public override string ToString()
+ {
+ return "{{full_name}}{ "
+ {{~for field in hierarchy_export_fields ~}}
+ + "{{format_field_name __code_style field.name}}:" + {{to_pretty_string (format_property_name __code_style field.name) field.ctype}} + ","
+ {{~end~}}
+ + "}";
+ }
+}
+{{namespace_with_grace_end __namespace_with_top_module}}
diff --git a/Luban/Templates/cs-newtonsoft-json/table.sbn b/Luban/Templates/cs-newtonsoft-json/table.sbn
new file mode 100644
index 0000000..8ba801a
--- /dev/null
+++ b/Luban/Templates/cs-newtonsoft-json/table.sbn
@@ -0,0 +1,177 @@
+using Newtonsoft.Json.Linq;
+using Luban;
+
+{{
+ key_type = __table.key_ttype
+ value_type = __table.value_ttype
+
+ func index_type_name
+ ret (declaring_type_name $0.type)
+ end
+
+ func table_union_map_type_name
+ ret 'System.Collections.Generic.Dictionary<(' + (array.each __table.index_list @index_type_name | array.join ', ') + '), ' + (declaring_type_name __value_type) + '>'
+ end
+
+ func table_key_list
+ varName = $0
+ indexList = __table.index_list |array.each do; ret varName + '.' + (format_property_name __code_style $0.index_field.name); end;
+ ret array.join indexList ', '
+ end
+
+ func table_param_def_list
+ paramList = __table.index_list |array.each do; ret (declaring_type_name $0.type) + ' ' + $0.index_field.name; end
+ ret array.join paramList ', '
+ end
+
+ func table_param_name_list
+ paramList = __table.index_list |array.each do; ret $0.index_field.name; end
+ ret array.join paramList ', '
+ end
+}}
+
+{{namespace_with_grace_begin __namespace_with_top_module}}
+
+{{~if __table.comment != '' ~}}
+///
+/// {{escape_comment __table.comment}}
+///
+{{~end~}}
+public partial class {{__name}}
+{
+ {{~if __table.is_map_table ~}}
+ private readonly System.Collections.Generic.Dictionary<{{declaring_type_name __key_type}}, {{declaring_type_name __value_type}}> _dataMap;
+ private readonly System.Collections.Generic.List<{{declaring_type_name __value_type}}> _dataList;
+
+ public {{__name}}(JArray _buf)
+ {
+ _dataMap = new System.Collections.Generic.Dictionary<{{declaring_type_name __key_type}}, {{declaring_type_name __value_type}}>(_buf.Count);
+ _dataList = new System.Collections.Generic.List<{{declaring_type_name __value_type}}>(_buf.Count);
+
+ foreach(JObject _ele in _buf)
+ {
+ {{declaring_type_name __value_type}} _v;
+ {{deserialize '_v' '_ele' __value_type}}
+ _dataList.Add(_v);
+ _dataMap.Add(_v.{{format_property_name __code_style __table.index_field.name}}, _v);
+ }
+ }
+
+
+ public System.Collections.Generic.Dictionary<{{declaring_type_name __key_type}}, {{declaring_type_name __value_type}}> DataMap => _dataMap;
+ public System.Collections.Generic.List<{{declaring_type_name __value_type}}> DataList => _dataList;
+
+{{~if __value_type.is_dynamic~}}
+ public T GetOrDefaultAs({{declaring_type_name __key_type}} key) where T : {{declaring_type_name __value_type}} => _dataMap.TryGetValue(key, out var v) ? (T)v : default;
+ public T GetAs({{declaring_type_name __key_type}} key) where T : {{declaring_type_name __value_type}} => (T)_dataMap[key];
+{{~end~}}
+ public {{declaring_type_name __value_type}} GetOrDefault({{declaring_type_name __key_type}} key) => _dataMap.TryGetValue(key, out var v) ? v : default;
+ public {{declaring_type_name __value_type}} Get({{declaring_type_name __key_type}} key) => _dataMap[key];
+ public {{declaring_type_name __value_type}} this[{{declaring_type_name __key_type}} key] => _dataMap[key];
+
+ public void ResolveRef({{__manager_name}} tables)
+ {
+ {{~if is_bean_need_resolve_ref value_type ~}}
+ foreach(var _v in _dataList)
+ {
+ _v.ResolveRef(tables);
+ }
+ {{~end~}}
+ }
+
+ {{~else if __table.is_list_table ~}}
+ private readonly System.Collections.Generic.List<{{declaring_type_name __value_type}}> _dataList;
+
+ {{~if __table.is_union_index~}}
+ private {{table_union_map_type_name}} _dataMapUnion;
+ {{~else if !__table.index_list.empty?~}}
+ {{~for idx in __table.index_list~}}
+ private System.Collections.Generic.Dictionary<{{declaring_type_name idx.type}}, {{declaring_type_name __value_type}}> _dataMap_{{idx.index_field.name}};
+ {{~end~}}
+ {{~end~}}
+
+
+ public {{__name}}(JArray _buf)
+ {
+ _dataList = new System.Collections.Generic.List<{{declaring_type_name __value_type}}>(_buf.Count);
+
+ foreach(JObject _ele in _buf)
+ {
+ {{declaring_type_name __value_type}} _v;
+ {{deserialize '_v' '_ele' __value_type}}
+ _dataList.Add(_v);
+ }
+ {{~if __table.is_union_index~}}
+ _dataMapUnion = new {{table_union_map_type_name}}(_buf.Count);
+ foreach(var _v in _dataList)
+ {
+ _dataMapUnion.Add(({{table_key_list "_v"}}), _v);
+ }
+ {{~else if !__table.index_list.empty?~}}
+ {{~for idx in __table.index_list~}}
+ _dataMap_{{idx.index_field.name}} = new System.Collections.Generic.Dictionary<{{declaring_type_name idx.type}}, {{declaring_type_name __value_type}}>(_buf.Count);
+ {{~end~}}
+ foreach(var _v in _dataList)
+ {
+ {{~for idx in __table.index_list~}}
+ _dataMap_{{idx.index_field.name}}.Add(_v.{{format_property_name __code_style idx.index_field.name}}, _v);
+ {{~end~}}
+ }
+ {{~end~}}
+ }
+
+ public System.Collections.Generic.List<{{declaring_type_name __value_type}}> DataList => _dataList;
+
+
+ {{~if __table.is_union_index~}}
+ public {{declaring_type_name __value_type}} Get({{table_param_def_list}}) => _dataMapUnion.TryGetValue(({{table_param_name_list}}), out {{declaring_type_name __value_type}} __v) ? __v : default;
+ {{~else if !__table.index_list.empty? ~}}
+ {{~for idx in __table.index_list~}}
+ public {{declaring_type_name __value_type}} GetBy{{format_property_name __code_style idx.index_field.name}}({{declaring_type_name idx.type}} key) => _dataMap_{{idx.index_field.name}}.TryGetValue(key, out {{declaring_type_name __value_type}} __v) ? __v : default;
+ {{~end~}}
+ {{~end~}}
+
+ public void ResolveRef({{__manager_name}} tables)
+ {
+ {{~if is_bean_need_resolve_ref value_type ~}}
+ foreach(var _v in _dataList)
+ {
+ _v.ResolveRef(tables);
+ }
+ {{~end~}}
+ }
+ {{~else~}}
+
+ private readonly {{declaring_type_name __value_type}} _data;
+
+ public {{declaring_type_name __value_type}} Data => _data;
+
+ public {{__name}}(JArray _buf)
+ {
+ int n = _buf.Count;
+ if (n != 1) throw new SerializationException("table mode=one, but size != 1");
+ {{deserialize '_data' '_buf[0]' __value_type}}
+ }
+
+
+ {{~ for field in __value_type.def_bean.hierarchy_export_fields ~}}
+{{~if field.comment != '' ~}}
+ ///
+ /// {{escape_comment field.comment}}
+ ///
+{{~end~}}
+ public {{declaring_type_name field.ctype}} {{format_property_name __code_style field.name}} => _data.{{format_property_name __code_style field.name}};
+ {{~end~}}
+
+ public void ResolveRef({{__manager_name}} tables)
+ {
+ {{~if is_bean_need_resolve_ref value_type ~}}
+ _data.ResolveRef(tables);
+ {{~end~}}
+ }
+
+
+
+ {{~end~}}
+}
+{{namespace_with_grace_end __namespace_with_top_module}}
diff --git a/Luban/Templates/cs-newtonsoft-json/tables.sbn b/Luban/Templates/cs-newtonsoft-json/tables.sbn
new file mode 100644
index 0000000..5f10e0a
--- /dev/null
+++ b/Luban/Templates/cs-newtonsoft-json/tables.sbn
@@ -0,0 +1,32 @@
+using Newtonsoft.Json.Linq;
+
+{{namespace_with_grace_begin __namespace}}
+public partial class {{__name}}
+{
+ {{~for table in __tables ~}}
+{{~if table.comment != '' ~}}
+ ///
+ /// {{escape_comment table.comment}}
+ ///
+{{~end~}}
+ public {{table.full_name}} {{format_property_name __code_style table.name}} {get; }
+ {{~end~}}
+
+
+ public {{__name}}(System.Func loader)
+ {
+ {{~for table in __tables ~}}
+ {{format_property_name __code_style table.name}} = new {{table.full_name}}(loader("{{table.output_data_file}}"));
+ {{~end~}}
+ ResolveRef();
+ }
+
+ private void ResolveRef()
+ {
+ {{~for table in __tables ~}}
+ {{format_property_name __code_style table.name}}.ResolveRef(this);
+ {{~end~}}
+ }
+}
+
+{{namespace_with_grace_end __namespace}}
diff --git a/Luban/Templates/cs-simple-json/bean.sbn b/Luban/Templates/cs-simple-json/bean.sbn
new file mode 100644
index 0000000..1d7a4d9
--- /dev/null
+++ b/Luban/Templates/cs-simple-json/bean.sbn
@@ -0,0 +1,151 @@
+using Luban;
+using SimpleJSON;
+{{
+ parent_def_type = __bean.parent_def_type
+ export_fields = __bean.export_fields
+ hierarchy_export_fields = __bean.hierarchy_export_fields
+}}
+
+{{namespace_with_grace_begin __namespace_with_top_module}}
+{{~if __bean.comment != '' ~}}
+///
+/// {{escape_comment __bean.comment}}
+///
+{{~end~}}
+{{~
+func get_ref_name
+ ret (format_property_name __code_style $0.name) + '_Ref'
+end
+
+func get_index_var_name
+ ret (format_property_name __code_style $0.name) + '_Index'
+end
+
+func generate_resolve_field_ref
+ field = $0
+ fieldName = format_property_name __code_style field.name
+ refTable = get_ref_table field
+ if can_generate_ref field
+ tableName = format_property_name __code_style refTable.name
+ if field.is_nullable
+ ret (get_ref_name field) + ' = ' + fieldName + '!= null ? tables.' + tableName + '.GetOrDefault(' + (get_value_of_nullable_type field.ctype fieldName) + ') : null;'
+ else
+ ret (get_ref_name field) + ' = tables.' + tableName + '.GetOrDefault(' + fieldName + ');'
+ end
+ else if can_generate_collection_ref field
+ collection_ref_table = get_collection_ref_table field
+ tableName = format_property_name __code_style collection_ref_table.name
+ if field.ctype.type_name == 'list' || field.ctype.type_name == 'set'
+ line1 = (get_ref_name field) + ' = new ' + (declaring_collection_ref_name field.ctype) + '();' + '\n'
+ line2 = 'foreach (var _v in ' + fieldName + ') { ' + (get_ref_name field) + '.Add(tables.' + tableName + '.GetOrDefault(_v)); }' + '\n'
+ ret line1 + line2
+ else if field.ctype.type_name == 'array'
+ line1 = (get_ref_name field) + ' = new ' + (declaring_type_name collection_ref_table.value_ttype) + '[' + fieldName + '.Length];' + '\n'
+ line2 = 'for (int _i = 0; _i < ' + fieldName + '.Length; _i++) { ' + (get_ref_name field) + '[_i] = tables.' + tableName + '.GetOrDefault(' + fieldName + '[_i]); }' + '\n'
+ ret line1 + line2
+ else if field.ctype.type_name == 'map'
+ line1 = (get_ref_name field) + ' = new ' + (declaring_collection_ref_name field.ctype) + '();' + '\n'
+ line2 = 'foreach (var kvp in ' + fieldName + ') { ' + (get_ref_name field) + '.Add(kvp.Key, tables.' + tableName + '.GetOrDefault(kvp.Value)); }' + '\n'
+ ret line1 + line2
+ else
+ ret ''
+ end
+ else
+ if (is_field_bean_need_resolve_ref field)
+ ret fieldName + '?.ResolveRef(tables);'
+ else if (is_field_array_like_need_resolve_ref field)
+ ret 'foreach (var _e in ' + fieldName + ') { _e?.ResolveRef(tables); }'
+ else if (is_field_map_need_resolve_ref field)
+ ret 'foreach (var _e in ' + fieldName + '.Values) { _e?.ResolveRef(tables); }'
+ else
+ ret ''
+ end
+ end
+end
+~}}
+{{~if __bean.is_value_type~}}
+public partial struct {{__name}}
+{{~else~}}
+public {{class_modifier __bean}} partial class {{__name}} : {{if parent_def_type}}{{__bean.parent}}{{else}}Luban.BeanBase{{end}}
+{{~end~}}
+{
+ public {{__name}}(JSONNode _buf) {{if parent_def_type}} : base(_buf) {{end}}
+ {
+ {{~ for field in export_fields
+ fieldName = format_property_name __code_style field.name
+ ~}}
+ {{deserialize_field fieldName '_buf' field.name field.ctype}}
+ {{~if can_generate_ref field~}}
+ {{get_ref_name field}} = null;
+ {{~end~}}
+ {{~if has_index field~}}
+ foreach(var _v in {{fieldName}})
+ {
+ {{get_index_var_name field}}.Add(_v.{{format_property_name __code_style (get_index_field field).name}}, _v);
+ }
+ {{~end~}}
+ {{~end~}}
+ }
+
+ public static {{__name}} Deserialize{{__name}}(JSONNode _buf)
+ {
+ {{~if __bean.is_abstract_type~}}
+ switch ((string)_buf["$type"])
+ {
+ {{~for child in __bean.hierarchy_not_abstract_children~}}
+ case "{{impl_data_type child __bean}}": return new {{child.full_name}}(_buf);
+ {{~end~}}
+ default: throw new SerializationException();
+ }
+ {{~else~}}
+ return new {{__bean.full_name}}(_buf);
+ {{~end~}}
+ }
+
+ {{~ for field in export_fields ~}}
+{{~if field.comment != '' ~}}
+ ///
+ /// {{escape_comment field.comment}}
+ ///
+{{~end~}}
+ public readonly {{declaring_type_name field.ctype}} {{format_property_name __code_style field.name}};
+ {{~if can_generate_ref field~}}
+ public {{declaring_type_name (get_ref_type field)}} {{get_ref_name field}};
+ {{~else if can_generate_collection_ref field~}}
+ public {{declaring_collection_ref_name field.ctype}} {{get_ref_name field}};
+ {{~end~}}
+ {{~if has_index field
+ indexMapType = get_index_map_type field
+ ~}}
+ public readonly {{declaring_type_name indexMapType}} {{get_index_var_name field}} = new {{declaring_type_name indexMapType}}();
+ {{~end~}}
+ {{~end~}}
+
+{{~if !__bean.is_abstract_type && !__bean.is_value_type~}}
+ public const int __ID__ = {{__bean.id}};
+ public override int GetTypeId() => __ID__;
+{{~end~}}
+
+ public {{method_modifier __bean}} void ResolveRef({{__manager_name}} tables)
+ {
+ {{~if parent_def_type~}}
+ base.ResolveRef(tables);
+ {{~end~}}
+ {{~for field in export_fields~}}
+ {{~ line = generate_resolve_field_ref field ~}}
+ {{~ if line != ''~}}
+ {{line}}
+ {{~end~}}
+ {{~end~}}
+ }
+
+ public override string ToString()
+ {
+ return "{{full_name}}{ "
+ {{~for field in hierarchy_export_fields ~}}
+ + "{{format_field_name __code_style field.name}}:" + {{to_pretty_string (format_property_name __code_style field.name) field.ctype}} + ","
+ {{~end~}}
+ + "}";
+ }
+}
+{{namespace_with_grace_end __namespace_with_top_module}}
diff --git a/Luban/Templates/cs-simple-json/table.sbn b/Luban/Templates/cs-simple-json/table.sbn
new file mode 100644
index 0000000..612341c
--- /dev/null
+++ b/Luban/Templates/cs-simple-json/table.sbn
@@ -0,0 +1,172 @@
+using Luban;
+using SimpleJSON;
+
+{{
+ key_type = __table.key_ttype
+ value_type = __table.value_ttype
+
+ func index_type_name
+ ret (declaring_type_name $0.type)
+ end
+
+ func table_union_map_type_name
+ ret 'System.Collections.Generic.Dictionary<(' + (array.each __table.index_list @index_type_name | array.join ', ') + '), ' + (declaring_type_name __value_type) + '>'
+ end
+
+ func table_key_list
+ varName = $0
+ indexList = __table.index_list |array.each do; ret varName + '.' + (format_property_name __code_style $0.index_field.name); end;
+ ret array.join indexList ', '
+ end
+
+ func table_param_def_list
+ paramList = __table.index_list |array.each do; ret (declaring_type_name $0.type) + ' ' + $0.index_field.name; end
+ ret array.join paramList ', '
+ end
+
+ func table_param_name_list
+ paramList = __table.index_list |array.each do; ret $0.index_field.name; end
+ ret array.join paramList ', '
+ end
+}}
+{{namespace_with_grace_begin __namespace_with_top_module}}
+{{~if __table.comment != '' ~}}
+///
+/// {{escape_comment __table.comment}}
+///
+{{~end~}}
+public partial class {{__name}}
+{
+ {{~if __table.is_map_table ~}}
+ private readonly System.Collections.Generic.Dictionary<{{declaring_type_name __key_type}}, {{declaring_type_name __value_type}}> _dataMap;
+ private readonly System.Collections.Generic.List<{{declaring_type_name __value_type}}> _dataList;
+
+ public {{__name}}(JSONNode _buf)
+ {
+ int count = _buf.Count;
+ _dataMap = new System.Collections.Generic.Dictionary<{{declaring_type_name __key_type}}, {{declaring_type_name __value_type}}>(count);
+ _dataList = new System.Collections.Generic.List<{{declaring_type_name __value_type}}>(count);
+
+ foreach(JSONNode _ele in _buf.Children)
+ {
+ {{declaring_type_name __value_type}} _v;
+ {{deserialize '_v' '_ele' __value_type}}
+ _dataList.Add(_v);
+ _dataMap.Add(_v.{{format_property_name __code_style __table.index_field.name}}, _v);
+ }
+ }
+
+ public System.Collections.Generic.Dictionary<{{declaring_type_name __key_type}}, {{declaring_type_name __value_type}}> DataMap => _dataMap;
+ public System.Collections.Generic.List<{{declaring_type_name __value_type}}> DataList => _dataList;
+
+{{~if __value_type.is_dynamic~}}
+ public T GetOrDefaultAs({{declaring_type_name __key_type}} key) where T : {{declaring_type_name __value_type}} => _dataMap.TryGetValue(key, out var v) ? (T)v : default;
+ public T GetAs({{declaring_type_name __key_type}} key) where T : {{declaring_type_name __value_type}} => (T)_dataMap[key];
+{{~end~}}
+ public {{declaring_type_name __value_type}} GetOrDefault({{declaring_type_name __key_type}} key) => _dataMap.TryGetValue(key, out var v) ? v : default;
+ public {{declaring_type_name __value_type}} Get({{declaring_type_name __key_type}} key) => _dataMap[key];
+ public {{declaring_type_name __value_type}} this[{{declaring_type_name __key_type}} key] => _dataMap[key];
+
+ public void ResolveRef({{__manager_name}} tables)
+ {
+ {{~if is_bean_need_resolve_ref value_type ~}}
+ foreach(var _v in _dataList)
+ {
+ _v.ResolveRef(tables);
+ }
+ {{~end~}}
+ }
+
+ {{~else if __table.is_list_table ~}}
+ private readonly System.Collections.Generic.List<{{declaring_type_name __value_type}}> _dataList;
+
+ {{~if __table.is_union_index~}}
+ private {{table_union_map_type_name}} _dataMapUnion;
+ {{~else if !__table.index_list.empty?~}}
+ {{~for idx in __table.index_list~}}
+ private System.Collections.Generic.Dictionary<{{declaring_type_name idx.type}}, {{declaring_type_name __value_type}}> _dataMap_{{idx.index_field.name}};
+ {{~end~}}
+ {{~end~}}
+
+ public {{__name}}(JSONNode _buf)
+ {
+ int count = _buf.Count;
+ _dataList = new System.Collections.Generic.List<{{declaring_type_name __value_type}}>(count);
+
+ foreach(JSONNode _ele in _buf.Children)
+ {
+ {{declaring_type_name __value_type}} _v;
+ {{deserialize '_v' '_ele' __value_type}}
+ _dataList.Add(_v);
+ }
+ {{~if __table.is_union_index~}}
+ _dataMapUnion = new {{table_union_map_type_name}}();
+ foreach(var _v in _dataList)
+ {
+ _dataMapUnion.Add(({{table_key_list "_v"}}), _v);
+ }
+ {{~else if !__table.index_list.empty?~}}
+ {{~for idx in __table.index_list~}}
+ _dataMap_{{idx.index_field.name}} = new System.Collections.Generic.Dictionary<{{declaring_type_name idx.type}}, {{declaring_type_name __value_type}}>(count);
+ {{~end~}}
+ foreach(var _v in _dataList)
+ {
+ {{~for idx in __table.index_list~}}
+ _dataMap_{{idx.index_field.name}}.Add(_v.{{format_property_name __code_style idx.index_field.name}}, _v);
+ {{~end~}}
+ }
+ {{~end~}}
+ }
+
+ public System.Collections.Generic.List<{{declaring_type_name __value_type}}> DataList => _dataList;
+
+ {{~if __table.is_union_index~}}
+ public {{declaring_type_name __value_type}} Get({{table_param_def_list}}) => _dataMapUnion.TryGetValue(({{table_param_name_list}}), out {{declaring_type_name __value_type}} __v) ? __v : default;
+ {{~else if !__table.index_list.empty? ~}}
+ {{~for idx in __table.index_list~}}
+ public {{declaring_type_name __value_type}} GetBy{{format_property_name __code_style idx.index_field.name}}({{declaring_type_name idx.type}} key) => _dataMap_{{idx.index_field.name}}.TryGetValue(key, out {{declaring_type_name __value_type}} __v) ? __v : default;
+ {{~end~}}
+ {{~end~}}
+
+ public void ResolveRef({{__manager_name}} tables)
+ {
+ {{~if is_bean_need_resolve_ref value_type ~}}
+ foreach(var _v in _dataList)
+ {
+ _v.ResolveRef(tables);
+ }
+ {{~end~}}
+ }
+ {{~else~}}
+
+ private readonly {{declaring_type_name __value_type}} _data;
+
+ public {{declaring_type_name __value_type}} Data => _data;
+
+ public {{__name}}(JSONNode _buf)
+ {
+ int n = _buf.Count;
+ if (n != 1) throw new SerializationException("table mode=one, but size != 1");
+ {{deserialize '_data' '_buf[0]' __value_type}}
+ }
+
+
+ {{~ for field in __value_type.def_bean.hierarchy_export_fields ~}}
+{{~if field.comment != '' ~}}
+ ///
+ /// {{escape_comment field.comment}}
+ ///
+{{~end~}}
+ public {{declaring_type_name field.ctype}} {{format_property_name __code_style field.name}} => _data.{{format_property_name __code_style field.name}};
+ {{~end~}}
+
+ public void ResolveRef({{__manager_name}} tables)
+ {
+ {{~if is_bean_need_resolve_ref value_type ~}}
+ _data.ResolveRef(tables);
+ {{~end~}}
+ }
+ {{~end~}}
+}
+
+{{namespace_with_grace_end __namespace_with_top_module}}
diff --git a/Luban/Templates/cs-simple-json/tables.sbn b/Luban/Templates/cs-simple-json/tables.sbn
new file mode 100644
index 0000000..66770e9
--- /dev/null
+++ b/Luban/Templates/cs-simple-json/tables.sbn
@@ -0,0 +1,32 @@
+using Luban;
+using SimpleJSON;
+
+{{namespace_with_grace_begin __namespace}}
+public partial class {{__name}}
+{
+ {{~for table in __tables ~}}
+{{~if table.comment != '' ~}}
+ ///
+ /// {{escape_comment table.comment}}
+ ///
+{{~end~}}
+ public {{table.full_name}} {{format_property_name __code_style table.name}} {get; }
+ {{~end~}}
+
+ public {{__name}}(System.Func loader)
+ {
+ {{~for table in __tables ~}}
+ {{format_property_name __code_style table.name}} = new {{table.full_name}}(loader("{{table.output_data_file}}"));
+ {{~end~}}
+ ResolveRef();
+ }
+
+ private void ResolveRef()
+ {
+ {{~for table in __tables ~}}
+ {{format_property_name __code_style table.name}}.ResolveRef(this);
+ {{~end~}}
+ }
+}
+
+{{namespace_with_grace_end __namespace}}
\ No newline at end of file
diff --git a/Luban/Templates/cs_pb/tables.sbn b/Luban/Templates/cs_pb/tables.sbn
new file mode 100644
index 0000000..837061f
--- /dev/null
+++ b/Luban/Templates/cs_pb/tables.sbn
@@ -0,0 +1,32 @@
+using Google.Protobuf;
+using Google.Protobuf.Collections;
+using System.Reflection;
+
+{{namespace_with_grace_begin __namespace}}
+public partial class {{__name}}
+{
+ {{~for table in __tables ~}}
+{{~if table.comment != '' ~}}
+ ///
+ /// {{escape_comment table.comment}}
+ ///
+{{~end~}}
+ public {{proto_full_name table.full_name}} {{format_property_name __code_style table.name}} { get; }
+
+ {{~end~}}
+
+ public {{__name}}(System.Func loader)
+ {
+ {{~for table in __tables ~}}
+ {{format_property_name __code_style table.name}} = {{proto_full_name table.full_name}}.Parser.ParseFrom(loader("{{table.output_data_file}}"));
+ {{~end~}}
+ }
+ public {{__name}}(System.Func loader)
+ {
+ {{~for table in __tables ~}}
+ {{format_property_name __code_style table.name}} = {{proto_full_name table.full_name}}.Parser.ParseJson(loader("{{table.output_data_file}}"));
+ {{~end~}}
+ }
+}
+
+{{namespace_with_grace_end __namespace}}
diff --git a/Luban/Templates/dart-json/bean.sbn b/Luban/Templates/dart-json/bean.sbn
new file mode 100644
index 0000000..c26884f
--- /dev/null
+++ b/Luban/Templates/dart-json/bean.sbn
@@ -0,0 +1,143 @@
+import 'dart:ffi';
+import 'dart:collection';
+import '/gen/Tables.dart';
+
+{{~
+ parent_def_type = __this.parent_def_type
+ export_fields = __this.export_fields
+ hierarchy_export_fields = __this.hierarchy_export_fields
+~}}
+{{for field in hierarchy_export_fields}}{{import_ref_type_dart field '/gen/'}}{{end}}
+{{if parent_def_type}}{{declaring_import_bean parent_def_type '/gen/'}}{{end}}
+{{~if __bean.is_abstract_type~}}
+{{~for child in __this.hierarchy_not_abstract_children~}}
+{{declaring_import_bean child '/gen/'}}
+{{~end~}}
+{{~end~}}
+{{~
+func get_ref_name
+ ret (format_property_name __code_style $0.name) + '_Ref'
+end
+
+func generate_resolve_field_ref
+ field = $0
+ fieldName = format_name_lower_camel field.name
+ refTable = get_ref_table field
+ if can_generate_ref field
+ tableName = format_name_lower_camel refTable.name
+ if field.is_nullable
+ ret (get_ref_name field) + ' = ' + fieldName + '!= null ? tables.' + tableName + '?.getOrDefault(' + (get_value_of_nullable_type field.ctype fieldName) + ') : null;'
+ else
+ ret (get_ref_name field) + ' = tables.' + tableName + '?.getOrDefault(' + fieldName + ');'
+ end
+ else if can_generate_collection_ref field
+ collection_ref_table = get_collection_ref_table field
+ tableName = format_name_lower_camel collection_ref_table.name
+ if field.ctype.type_name == 'list' || field.ctype.type_name == 'array'
+ line1 = (get_ref_name field) + ' = ' + (declaring_collection_ref_name field.ctype) + '.empty(growable: true);' + '\n'
+ line2 = 'for (var _v in ' + fieldName + ') { var ref=(tables.'+tableName + '?.getOrDefault(_v))!;'+ (get_ref_name field) + '?.add(ref); }' + '\n'
+ ret line1 + line2
+ else if field.ctype.type_name == 'set'
+ line1 = (get_ref_name field) + ' = ' + (declaring_collection_ref_name field.ctype) + '();' + '\n'
+ line2 = 'for (var _v in ' + fieldName + ') { var ref= (tables.'+tableName + '?.getOrDefault(_v))!;'+ (get_ref_name field) + '?.add(ref); }' + '\n'
+ ret line1 + line2
+ else if field.ctype.type_name == 'map'
+ line1 = (get_ref_name field) + ' = ' + (declaring_collection_ref_name field.ctype) + '();' + '\n'
+ line2 = 'for (var kvp in ' + fieldName + '.entries) { var ref= (tables.' + tableName + '?.getOrDefault(kvp.value))!;' + (get_ref_name field) + '?[kvp.key]= ref; }' + '\n'
+ ret line1 + line2
+ else
+ ret ''
+ end
+ else
+ if (is_field_bean_need_resolve_ref field)
+ ret fieldName + '?.resolveRef(tables);'
+ else if (is_field_array_like_need_resolve_ref field)
+ ret 'for (var _e in ' + fieldName + ') { _e?.resolveRef(tables); }'
+ else if (is_field_map_need_resolve_ref field)
+ ret 'for (var _e in ' + fieldName + '.values) { _e?.resolveRef(tables); }'
+ else
+ ret ''
+ end
+ end
+end
+
+~}}
+{{~if __bean.comment != '' ~}}
+//{{escape_comment __bean.comment}}
+{{~end~}}
+{{class_modifier __this}} class {{__name}} {{if parent_def_type}}extends {{ __this.parent_def_type.name}}{{end}}
+{
+ {{__name}}(
+{{~if need_gen_constructor hierarchy_export_fields~}}
+ {
+{{~ for field in hierarchy_export_fields ~}}
+ {{~if is_super_field field parent_def_type~}}
+ required super.{{format_name_lower_camel field.name}},
+ {{~else~}}
+ required this.{{format_name_lower_camel field.name}},
+ {{~end~}}
+{{~end~}}
+ }
+ {{~end~}}
+ );
+
+ factory {{__name}}.deserialize(dynamic _buf){
+ {{~if __bean.is_abstract_type~}}
+ switch (_buf['\$type'])
+ {
+ {{~for child in __this.hierarchy_not_abstract_children~}}
+ case "{{impl_data_type child __this}}": return {{child.name}}.deserialize(_buf);
+ {{~end~}}
+ default: throw Exception('unknown type:$_buf[\$type]');
+ }
+ {{~else~}}
+{{~ for field in hierarchy_export_fields
+ fieldName = format_name_lower_camel field.name
+~}}
+ final {{fieldName}};
+ {{deserialize_field fieldName '_buf' field.name field.ctype}}
+{{~end~}}
+ return {{__name}}(
+{{~ for field in hierarchy_export_fields
+ fieldName = format_name_lower_camel field.name
+~}}
+ {{fieldName}}:{{fieldName}},
+{{~end~}}
+ );
+ {{~end~}}
+ }
+
+ {{~ for field in export_fields ~}}
+{{~if field.comment != '' ~}}
+ //{{escape_comment field.comment}}
+{{~end~}}
+ final {{declaring_type_name field.ctype}} {{format_name_lower_camel field.name}};
+{{~if can_generate_ref field~}}
+ {{declaring_type_name (get_ref_type field)}}? {{get_ref_name field}};
+{{~else if can_generate_collection_ref field~}}
+ {{declaring_collection_ref_name field.ctype}}? {{get_ref_name field}};
+{{~end~}}
+ {{~end~}}
+{{~if !__bean.is_abstract_type && !__bean.is_value_type~}}
+ static final int __ID__ = {{__this.id}};
+{{~end~}}
+ {{method_modifier __bean}}
+ void resolveRef({{__manager_name}} tables)
+ {
+ {{~if parent_def_type~}}
+ super.resolveRef(tables);
+ {{~end~}}
+
+ {{~for field in export_fields~}}
+ {{~ line = generate_resolve_field_ref field ~}}
+ {{~ if line != ''~}}
+ {{line}}
+ {{~end~}}
+ {{~end~}}
+ }
+
+ @override
+ String toString() {
+ return '{{__name}}({{for field in hierarchy_export_fields}}{{format_name_lower_camel field.name}}:${{format_name_lower_camel field.name}}, {{end}})';
+ }
+}
diff --git a/Luban/Templates/dart-json/table.sbn b/Luban/Templates/dart-json/table.sbn
new file mode 100644
index 0000000..57b66c7
--- /dev/null
+++ b/Luban/Templates/dart-json/table.sbn
@@ -0,0 +1,145 @@
+import 'dart:collection';
+{{declaring_import_name __value_type '/gen/'}}
+{{~if __table.is_singleton_table ~}}
+{{for field in __value_type.def_bean.hierarchy_export_fields}}{{import_ref_type_dart field '/gen/'}}{{end}}
+{{~end~}}
+import '/gen/Tables.dart';
+{{
+ func index_type_name
+ ret (declaring_type_name $0.type)
+ end
+
+ func table_union_map_type_name
+ ret 'Map<(' + (array.each __table.index_list @index_type_name | array.join ', ') + '), ' + (declaring_type_name __value_type) + '>'
+ end
+
+ func table_key_list
+ varName = $0
+ indexList = __table.index_list |array.each do; ret varName + '.' + (format_property_name __code_style $0.index_field.name); end;
+ ret array.join indexList ', '
+ end
+
+ func table_param_def_list
+ paramList = __table.index_list |array.each do; ret (declaring_type_name $0.type) + ' ' + $0.index_field.name; end
+ ret array.join paramList ', '
+ end
+
+ func table_param_name_list
+ paramList = __table.index_list |array.each do; ret $0.index_field.name; end
+ ret array.join paramList ', '
+ end
+}}
+
+{{~if __this.comment != '' ~}}
+//{{escape_comment __this.comment}}
+{{~end~}}
+final class {{__name}} {
+
+ {{~if __table.is_map_table ~}}
+ final List<{{declaring_type_name __value_type}}> _dataList = [];
+ final Map<{{declaring_type_name __key_type}}, {{declaring_type_name __value_type}}> _dataMap = {};
+
+ {{__name}}(List _array) {
+
+ for (var _buf in _array) {
+
+ {{declaring_type_name __value_type}} _item = {{declaring_type_name __value_type}}.deserialize(_buf);
+
+ _dataList.add(_item);
+ _dataMap[_item.{{format_field_name __code_style __this.index_field.name}}] = _item;
+ }
+ }
+
+ {{declaring_type_name __value_type}}? getOrDefault({{declaring_type_name __key_type}} id) {
+ if (_dataMap.containsKey(id)) {
+ return _dataMap[id];
+ }
+ return null;
+ }
+
+ void resolveRef({{__manager_name}} tables)
+ {
+ for(var _v in _dataList)
+ {
+ _v.resolveRef(tables);
+ }
+ }
+
+ {{~else if __table.is_list_table ~}}
+ final List<{{declaring_type_name __value_type}}> _dataList = [];
+
+{{~if __table.is_union_index~}}
+ final {{table_union_map_type_name}} _dataMapUnion = {};
+{{~else if !__table.index_list.empty?~}}
+ {{~for idx in __table.index_list~}}
+ final Map<{{declaring_type_name idx.type}}, {{declaring_type_name __value_type}}> _dataMap_{{idx.index_field.name}}={};
+ {{~end~}}
+{{~end~}}
+
+ {{__name}}(List _array) {
+ for (var _buf in _array) {
+ {{declaring_type_name __value_type}} _item = {{declaring_type_name __value_type}}.deserialize(_buf);
+ _dataList.add(_item);
+ }
+
+ {{~if __table.is_union_index~}}
+ for(var _v in _dataList)
+ {
+ _dataMapUnion[({{table_key_list "_v"}})]= _v;
+ }
+ {{~else if !__table.index_list.empty?~}}
+ for(var _v in _dataList)
+ {
+ {{~for idx in __table.index_list~}}
+ _dataMap_{{idx.index_field.name}}[_v.{{format_property_name __code_style idx.index_field.name}}]= _v;
+ {{~end~}}
+ }
+ {{~end~}}
+ }
+
+ List<{{declaring_type_name __value_type}}> get dataList => _dataList;
+
+ {{~if __table.is_union_index~}}
+ {{declaring_type_name __value_type}}? get({{table_param_def_list}}) => _dataMapUnion[({{table_param_name_list}})];
+ {{~else if !__table.index_list.empty? ~}}
+ {{~for idx in __table.index_list~}}
+ {{declaring_type_name __value_type}}? getBy{{format_property_name __code_style idx.index_field.name}}({{declaring_type_name idx.type}} key) => _dataMap_{{idx.index_field.name}}[key];
+ {{~end~}}
+ {{~end~}}
+
+ void resolveRef({{__manager_name}} tables)
+ {
+
+ }
+ {{~else~}}
+
+ {{declaring_type_name __value_type}}? _data;
+
+ {{declaring_type_name __value_type}}? get data => _data;
+
+ {{__name}}(List _array) {
+
+ var n = _array.length;
+ if (n != 1)
+ {
+ throw Exception("table mode=one, but size != 1");
+ }
+ for (var _buf in _array) {
+ _data = {{declaring_type_name __value_type}}.deserialize(_buf);
+ }
+ }
+
+{{~ for field in __value_type.def_bean.hierarchy_export_fields ~}}
+{{~if field.comment != '' ~}}
+ ///
+ /// {{escape_comment field.comment}}
+ ///
+{{~end~}}
+ {{declaring_null_type_name field.ctype}} get {{format_property_name __code_style field.name}} => _data?.{{format_name_lower_camel field.name}};
+ {{~end~}}
+ void resolveRef({{__manager_name}} tables)
+ {
+
+ }
+ {{~end~}}
+}
diff --git a/Luban/Templates/dart-json/tables.sbn b/Luban/Templates/dart-json/tables.sbn
new file mode 100644
index 0000000..760be58
--- /dev/null
+++ b/Luban/Templates/dart-json/tables.sbn
@@ -0,0 +1,43 @@
+{{~
+func get_table_inner_name
+ ret '_' + ($0 | string.downcase)
+end
+~}}
+{{~for table in __tables ~}}
+{{declaring_import_table table '/gen/'}}
+{{~end~}}
+final class {{__name}}
+{
+ final Future Function(String filePath) _asyncloadFunction;
+ Tables(this._asyncloadFunction);
+
+ {{~for table in __tables ~}}
+{{~if table.comment != '' ~}}
+ //{{escape_comment table.comment}}
+{{~end~}}
+ {{table.name}}? _{{format_property_name __code_style table.name}};
+ {{~end~}}
+
+ Future waitLoad() async {
+ var results = await Future.wait([
+ {{~for table in __tables ~}}
+ _asyncloadFunction("{{table.output_data_file}}"),
+ {{~end~}}
+ ]);
+ {{ idx=0 }}
+ {{~for table in __tables ~}}
+ _{{format_property_name __code_style table.name}} = {{table.name}}(results[{{idx}}]);{{idx=idx+1}}
+ {{~end~}}
+ resolveRef();
+ }
+{{~for table in __tables ~}}
+ {{table.name}}? get {{format_name_lower_camel table.name}} => _{{format_property_name __code_style table.name}};
+{{~end~}}
+
+ void resolveRef(){
+ {{~for table in __tables ~}}
+ _{{format_property_name __code_style table.name}}?.resolveRef(this);
+ {{~end~}}
+ }
+
+}
diff --git a/Luban/Templates/flatbuffers/schema.sbn b/Luban/Templates/flatbuffers/schema.sbn
new file mode 100644
index 0000000..ca8099c
--- /dev/null
+++ b/Luban/Templates/flatbuffers/schema.sbn
@@ -0,0 +1,51 @@
+namespace {{__namespace}};
+
+{{~for enum in __enums
+ typeName = full_name enum
+ ~}}
+enum {{typeName}}:int {
+ {{~if !enum.has_zero_value_item~}}
+ __GENERATE_DEFAULT_VALUE = 0,
+ {{~end~}}
+ {{~for item in enum.items ~}}
+ {{typeName}}_{{item.name}} = {{item.int_value}},
+ {{~end~}}
+}
+{{~end~}}
+
+{{~for bean in __beans~}}
+{{~if bean.is_abstract_type ~}}
+union {{full_name bean}} {
+ {{~for c in bean.hierarchy_not_abstract_children~}}
+ {{full_name c}},
+ {{~end~}}
+}
+{{~end~}}
+{{~end~}}
+
+{{~for bean in __beans~}}
+{{~if !bean.is_abstract_type ~}}
+table {{full_name bean}} {
+ {{~for f in bean.hierarchy_export_fields ~}}
+ {{f.name}}:{{declaring_type_name f.ctype}}{{type_metadata f.ctype}};
+ {{~end~}}
+}
+{{~end~}}
+{{~end~}}
+
+{{~for map in __maps~}}
+table KeyValue_{{declaring_type_name map.key_type}}_{{declaring_type_name map.value_type}} {
+ key: {{declaring_type_name map.key_type}}{{type_metadata map.key_type}};
+ value: {{declaring_type_name map.value_type}}{{type_metadata map.value_type}};
+}
+{{~end~}}
+
+{{~for table in __tables~}}
+table {{full_name table}} {
+ // WARN! The name 'data_list' is used by FlatBuffersJsonExporter. don't modify it!
+ data_list:[{{declaring_type_name table.value_ttype}}](required);
+}
+
+root_type {{full_name table}};
+{{~end~}}
+
diff --git a/Luban/Templates/gdscript-json/schema.sbn b/Luban/Templates/gdscript-json/schema.sbn
new file mode 100644
index 0000000..dca9533
--- /dev/null
+++ b/Luban/Templates/gdscript-json/schema.sbn
@@ -0,0 +1,167 @@
+@tool
+class_name Schema
+extends RefCounted
+
+
+{{~for enum in __enums~}}
+{{~if enum.comment != '' ~}}
+## {{enum.comment | html.escape}}
+{{~end~}}
+enum {{full_name enum}}
+{
+ {{~ for item in enum.items ~}}
+ {{~if item.comment_or_alias != '' ~}}
+ ## {{item.comment_or_alias | html.escape}}
+ {{~end~}}
+ {{item.name}} = {{item.value}},
+ {{~end~}}
+}
+
+
+{{~end~}}
+{{~for bean in __beans
+ name = (full_name bean)
+~}}
+{{~if bean.comment != '' ~}}
+## {{bean.comment | html.escape}}
+{{~end~}}
+class {{name}}{{if bean.parent_def_type}} extends {{full_name bean.parent_def_type}}{{end}}:
+{{~ for field in bean.export_fields ~}}
+ {{~if field.comment != '' ~}}
+ ## {{field.comment | html.escape}}
+ {{~end~}}
+ var {{format_field_name __code_style field.name}}: {{declaring_type_name field.ctype}}
+{{~end~}}
+
+{{~if bean.is_abstract_type~}}
+ static func fromJson(_json_):
+ var type = _json_['$type']
+ match type:
+ {{~ for child in bean.hierarchy_not_abstract_children~}}
+ "{{impl_data_type child bean}}": return {{full_name child}}.new(_json_)
+ {{~end~}}
+ _: assert(false)
+
+{{~end~}}
+ func _init(_json_) -> void:
+{{~if bean.parent_def_type~}}
+ super(_json_)
+{{~end~}}
+ {{~ for field in bean.export_fields ~}}
+ {{deserialize_field ('self.' + (format_field_name __code_style field.name)) '_json_' field.name field.ctype}}
+ {{~end~}}
+ {{~if bean.export_fields.empty?~}}
+ pass
+ {{~end~}}
+
+
+{{~end~}}
+{{~for table in __tables
+ value_type = table.value_ttype
+ value_type_name = (declaring_type_name value_type)
+~}}
+{{~if table.comment != '' ~}}
+## {{table.comment | html.escape}}
+{{~end~}}
+class {{full_name table}}:
+ {{~if table.is_map_table ~}}
+ var _data_list: Array[{{value_type_name}}]
+ var _data_map: Dictionary
+
+ func _init(_json_) -> void:
+ for _json2_ in _json_:
+ var _v: {{value_type_name}}
+ {{deserialize '_v' '_json2_' value_type}}
+ self._data_list.append(_v)
+ self._data_map[_v.{{format_field_name __code_style table.index_field.name}}] = _v
+
+ func get_data_list() -> Array[{{value_type_name}}]:
+ return self._data_list
+
+ func get_data_map() -> Dictionary:
+ return self._data_map
+
+ func get_item(key) -> {{value_type_name}}:
+ return self._data_map.get(key)
+
+ {{~else if table.multi_key ~}}
+ var _data_list: Array[{{value_type_name}}]
+ {{~ for INDEX in table.index_list ~}}
+ var _{{INDEX.index_field.name}}_data_map: Dictionary
+ {{~ end ~}}
+
+ func _init(_json_) -> void:
+ {{~ for INDEX in table.index_list ~}}
+ self._{{INDEX.index_field.name}}_data_map = {}
+ {{~ end ~}}
+
+ for _json2_ in _json_:
+ var _v: {{value_type_name}}
+ {{deserialize '_v' '_json2_' value_type}}
+ self._data_list.append(_v)
+ {{~ for INDEX in table.index_list ~}}
+ self._{{INDEX.index_field.name}}_data_map[_v.{{INDEX.index_field.name}}] = _v
+ {{~ end ~}}
+
+ func get_data_list() -> Array[{{value_type_name}}]:
+ return self._data_list
+
+ {{~ for INDEX in table.index_list ~}}
+ func get_{{INDEX.index_field.name}}_data_map() -> Dictionary:
+ return self._{{INDEX.index_field.name}}_data_map
+ {{~ end ~}}
+
+{{~ for INDEX in table.index_list ~}}
+ func get_item_by_{{INDEX.index_field.name}}({{INDEX.index_field.name}}) -> {{value_type_name}}:
+ return self._{{INDEX.index_field.name}}_data_map.get({{INDEX.index_field.name}})
+
+{{~ end ~}}
+ {{~else if table.is_list_table ~}}
+ var _data_list: Array[{{value_type_name}}]
+
+ func _init(_json_) -> void:
+ for _json2_ in _json_:
+ var _v: {{value_type_name}}
+ {{deserialize '_v' '_json2_' value_type}}
+ self._data_list.append(_v)
+
+ func get_data_list() -> Array[{{value_type_name}}]:
+ return self._data_list
+
+ func get_item(index) -> {{value_type_name}}:
+ return self._data_list[index]
+ {{~else~}}
+ var _data:{{value_type_name}}
+
+ func _init(_json_) -> void:
+ assert(len(_json_) == 1, "table mode = one, but size != 1")
+ {{deserialize 'self._data' '_json_[0]' value_type}}
+
+ func get_data() -> {{value_type_name}}:
+ return self._data
+
+ {{~ for field in value_type.def_bean.hierarchy_export_fields
+ name = format_field_name __code_style field.name
+ ~}}
+{{~if field.comment != '' ~}}
+ ## {{escape_comment field.comment}}
+{{~end~}}
+ var {{name}}: {{declaring_type_name field.ctype}}:
+ get: return self._data.{{name}}
+
+ {{~end~}}
+ {{~end~}}
+
+{{~end~}}
+class {{str_full_name __full_name}}:
+ {{~for table in __tables ~}}
+ {{~if table.comment != ''~}}
+ ## {{table.comment | html.escape}}
+ {{~end~}}
+ var {{format_method_name __code_style table.name}}: {{full_name table}}
+ {{~end~}}
+
+ func _init(loader: Callable) -> void:
+ {{~for table in __tables ~}}
+ self.{{format_method_name __code_style table.name}} = {{full_name table}}.new(loader.call('{{table.output_data_file}}'))
+ {{~end~}}
\ No newline at end of file
diff --git a/Luban/Templates/go-bin/bean.sbn b/Luban/Templates/go-bin/bean.sbn
new file mode 100644
index 0000000..0ff01a0
--- /dev/null
+++ b/Luban/Templates/go-bin/bean.sbn
@@ -0,0 +1,54 @@
+{{~if ___top_module != ''~}}
+package {{__top_module}};
+{{~end~}}
+
+{{~
+ go_full_name = full_name __this
+ parent_def_type = __this.parent_def_type
+ is_abstract_type = __this.is_abstract_type
+ hierarchy_fields = __this.hierarchy_export_fields
+ hierarchy_not_abstract_children = __this.hierarchy_not_abstract_children
+~}}
+
+import (
+ "{{__luban_module_name}}"
+)
+
+{{collect_import __this}}
+
+type {{go_full_name}} struct {
+ {{~for field in hierarchy_fields ~}}
+ {{format_field_name __code_style field.name}} {{declaring_type_name field.ctype}}
+ {{~end~}}
+}
+
+const TypeId_{{go_full_name}} = {{__this.id}}
+
+func (*{{go_full_name}}) GetTypeId() int32 {
+ return {{__this.id}}
+}
+
+{{~if is_abstract_type~}}
+func New{{go_full_name}}(_buf *luban.ByteBuf) (interface{}, error) {
+ var id int32
+ var err error
+ if id, err = _buf.ReadInt() ; err != nil {
+ return nil, err
+ }
+ switch id {
+ {{~for child in hierarchy_not_abstract_children~}}
+ case {{child.id}}: _v, err := New{{full_name child}}(_buf); if err != nil { return nil, errors.New("{{child.full_name|string.downcase}}") } else { return _v, nil }
+ {{~end~}}
+ default: return nil, errors.New("unknown type id")
+ }
+}
+
+{{~else~}}
+func New{{go_full_name}}(_buf *luban.ByteBuf) (_v *{{go_full_name}}, err error) {
+ _v = &{{go_full_name}}{}
+ {{~for field in hierarchy_fields ~}}
+ {{deserialize_field field.ctype ("_v." + (format_field_name __code_style field.name)) '_buf' 'err'}}
+ {{~end~}}
+ return
+}
+{{~end~}}
diff --git a/Luban/Templates/go-bin/table.sbn b/Luban/Templates/go-bin/table.sbn
new file mode 100644
index 0000000..e511405
--- /dev/null
+++ b/Luban/Templates/go-bin/table.sbn
@@ -0,0 +1,116 @@
+{{~if ___top_module != ''~}}
+package {{__top_module}};
+{{~end~}}
+
+{{~
+ go_full_name = full_name __this
+ key_type = __this.key_ttype
+ value_type = __this.value_ttype
+ index_field = __this.index_field
+~}}
+
+import "{{__luban_module_name}}"
+
+{{~if __this.is_map_table~}}
+type {{go_full_name}} struct {
+ _dataMap map[{{declaring_type_name key_type}}]{{declaring_type_name value_type}}
+ _dataList []{{declaring_type_name value_type}}
+}
+
+func New{{go_full_name}}(_buf *luban.ByteBuf) (*{{go_full_name}}, error) {
+ if size, err := _buf.ReadSize() ; err != nil {
+ return nil, err
+ } else {
+ _dataList := make([]{{declaring_type_name value_type}}, 0, size)
+ dataMap := make(map[{{declaring_type_name key_type}}]{{declaring_type_name value_type}})
+
+ for i := 0 ; i < size ; i++ {
+ if _v, err2 := New{{full_name value_type.def_bean}}(_buf); err2 != nil {
+ return nil, err2
+ } else {
+ _dataList = append(_dataList, _v)
+{{~if value_type.is_dynamic ~}}
+ {{~for child in value_type.def_bean.hierarchy_not_abstract_children~}}
+ if __v, __is := _v.(*{{full_name child}}) ; __is {
+ dataMap[__v.{{format_field_name __code_style index_field.name}}] = _v
+ continue
+ }
+ {{~end~}}
+{{~else~}}
+ dataMap[_v.{{format_field_name __code_style index_field.name}}] = _v
+{{~end~}}
+ }
+ }
+ return &{{go_full_name}}{_dataList:_dataList, _dataMap:dataMap}, nil
+ }
+}
+
+func (table *{{go_full_name}}) GetDataMap() map[{{declaring_type_name key_type}}]{{declaring_type_name value_type}} {
+ return table._dataMap
+}
+
+func (table *{{go_full_name}}) GetDataList() []{{declaring_type_name value_type}} {
+ return table._dataList
+}
+
+func (table *{{go_full_name}}) Get(key {{declaring_type_name key_type}}) {{declaring_type_name value_type}} {
+ return table._dataMap[key]
+}
+
+{{~else if __this.is_list_table~}}
+type {{go_full_name}} struct {
+ _dataList []{{declaring_type_name value_type}}
+}
+
+func New{{go_full_name}}(_buf *luban.ByteBuf) (*{{go_full_name}}, error) {
+ if size, err := _buf.ReadSize() ; err != nil {
+ return nil, err
+ } else {
+ _dataList := make([]{{declaring_type_name value_type}}, 0, size)
+
+ for i := 0 ; i < size ; i++ {
+ if _v, err2 := New{{full_name value_type.def_bean}}(_buf); err2 != nil {
+ return nil, err2
+ } else {
+ _dataList = append(_dataList, _v)
+ }
+ }
+ return &{{go_full_name}}{_dataList:_dataList}, nil
+ }
+}
+
+func (table *{{go_full_name}}) GetDataList() []{{declaring_type_name value_type}} {
+ return table._dataList
+}
+
+func (table *{{go_full_name}}) Get(index int) {{declaring_type_name value_type}} {
+ return table._dataList[index]
+}
+
+{{~else~}}
+
+import "errors"
+
+type {{go_full_name}} struct {
+ _data {{declaring_type_name value_type}}
+}
+
+func New{{go_full_name}}(_buf *luban.ByteBuf) (*{{go_full_name}}, error) {
+ if size, err := _buf.ReadSize() ; err != nil {
+ return nil, err
+ } else if size != 1 {
+ return nil, errors.New(" size != 1 ")
+ } else {
+ if _v, err2 := New{{full_name value_type.def_bean}}(_buf); err2 != nil {
+ return nil, err2
+ } else {
+ return &{{go_full_name}}{_data:_v}, nil
+ }
+ }
+}
+
+func (table *{{go_full_name}}) Get() {{declaring_type_name value_type}} {
+ return table._data
+}
+
+{{~end~}}
diff --git a/Luban/Templates/go-bin/tables.sbn b/Luban/Templates/go-bin/tables.sbn
new file mode 100644
index 0000000..4b0e7d1
--- /dev/null
+++ b/Luban/Templates/go-bin/tables.sbn
@@ -0,0 +1,33 @@
+{{~if __namespace != ''~}}
+package {{__namespace}};
+{{~end~}}
+
+import (
+ "{{__luban_module_name}}"
+ "errors"
+)
+
+type ByteBufLoader func(string) (*luban.ByteBuf, error)
+
+type {{__name}} struct {
+ {{~for table in __tables ~}}
+ {{table.name}} *{{full_name table}}
+ {{~end~}}
+}
+
+func NewTables(loader ByteBufLoader) (*{{__name}}, error) {
+ var err error
+ var buf *luban.ByteBuf
+
+ tables := &{{__name}}{}
+ {{~for table in __tables ~}}
+ if buf, err = loader("{{table.output_data_file}}") ; err != nil {
+ return nil, err
+ }
+ if tables.{{table.name}}, err = New{{full_name table}}(buf) ; err != nil {
+ return nil, errors.Join(errors.New("failed to load {{table.name}}"), err)
+ }
+ {{~end~}}
+ return tables, nil
+}
+
diff --git a/Luban/Templates/go-json/bean.sbn b/Luban/Templates/go-json/bean.sbn
new file mode 100644
index 0000000..1da3b0e
--- /dev/null
+++ b/Luban/Templates/go-json/bean.sbn
@@ -0,0 +1,50 @@
+{{~if ___top_module != ''~}}
+package {{__top_module}};
+{{~end~}}
+
+{{~
+ go_full_name = full_name __this
+ parent_def_type = __this.parent_def_type
+ is_abstract_type = __this.is_abstract_type
+ hierarchy_fields = __this.hierarchy_export_fields
+ hierarchy_not_abstract_children = __this.hierarchy_not_abstract_children
+~}}
+
+{{collect_import __this}}
+
+type {{go_full_name}} struct {
+ {{~for field in hierarchy_fields ~}}
+ {{format_field_name __code_style field.name}} {{declaring_type_name field.ctype}}
+ {{~end~}}
+}
+
+const TypeId_{{go_full_name}} = {{__this.id}}
+
+func (*{{go_full_name}}) GetTypeId() int32 {
+ return {{__this.id}}
+}
+
+{{~if is_abstract_type~}}
+func New{{go_full_name}}(_buf map[string]interface{}) (interface{}, error) {
+ var id string
+ var _ok_ bool
+ if id, _ok_ = _buf["$type"].(string) ; !_ok_ {
+ return nil, errors.New("type id missing")
+ }
+ switch id {
+ {{~for child in hierarchy_not_abstract_children~}}
+ case "{{impl_data_type child __this}}": _v, err := New{{full_name child}}(_buf); if err != nil { return nil, errors.New("{{full_name child|string.downcase}}") } else { return _v, nil }
+ {{~end~}}
+ default: return nil, errors.New("unknown type id")
+ }
+}
+
+{{~else~}}
+func New{{go_full_name}}(_buf map[string]interface{}) (_v *{{go_full_name}}, err error) {
+ _v = &{{go_full_name}}{}
+ {{~for field in hierarchy_fields ~}}
+ {{deserialize_field field.ctype ("_v." + (format_field_name __code_style field.name)) field.name '_buf'}}
+ {{~end~}}
+ return
+}
+{{~end~}}
diff --git a/Luban/Templates/go-json/table.sbn b/Luban/Templates/go-json/table.sbn
new file mode 100644
index 0000000..3fd5f9e
--- /dev/null
+++ b/Luban/Templates/go-json/table.sbn
@@ -0,0 +1,103 @@
+{{~if ___top_module != ''~}}
+package {{__top_module}};
+{{~end~}}
+
+{{~
+ go_full_name = full_name __this
+ key_type = __this.key_ttype
+ value_type = __this.value_ttype
+ index_field = __this.index_field
+~}}
+
+{{~if __this.is_map_table~}}
+type {{go_full_name}} struct {
+ _dataMap map[{{declaring_type_name key_type}}]{{declaring_type_name value_type}}
+ _dataList []{{declaring_type_name value_type}}
+}
+
+func New{{go_full_name}}(_buf []map[string]interface{}) (*{{go_full_name}}, error) {
+ _dataList := make([]{{declaring_type_name value_type}}, 0, len(_buf))
+ dataMap := make(map[{{declaring_type_name key_type}}]{{declaring_type_name value_type}})
+
+ for _, _ele_ := range _buf {
+ if _v, err2 := New{{full_name value_type.def_bean}}(_ele_); err2 != nil {
+ return nil, err2
+ } else {
+ _dataList = append(_dataList, _v)
+{{~if value_type.is_dynamic ~}}
+ {{~for child in value_type.def_bean.hierarchy_not_abstract_children~}}
+ if __v, __is := _v.(*{{full_name child}}) ; __is {
+ dataMap[__v.{{format_field_name __code_style index_field.name}}] = _v
+ continue
+ }
+ {{~end~}}
+{{~else~}}
+ dataMap[_v.{{format_field_name __code_style index_field.name}}] = _v
+{{~end~}}
+ }
+ }
+ return &{{go_full_name}}{_dataList:_dataList, _dataMap:dataMap}, nil
+}
+
+func (table *{{go_full_name}}) GetDataMap() map[{{declaring_type_name key_type}}]{{declaring_type_name value_type}} {
+ return table._dataMap
+}
+
+func (table *{{go_full_name}}) GetDataList() []{{declaring_type_name value_type}} {
+ return table._dataList
+}
+
+func (table *{{go_full_name}}) Get(key {{declaring_type_name key_type}}) {{declaring_type_name value_type}} {
+ return table._dataMap[key]
+}
+
+{{~else if __this.is_list_table~}}
+type {{go_full_name}} struct {
+ _dataList []{{declaring_type_name value_type}}
+}
+
+func New{{go_full_name}}(_buf []map[string]interface{}) (*{{go_full_name}}, error) {
+ _dataList := make([]{{declaring_type_name value_type}}, 0, len(_buf))
+ for _, _ele_ := range _buf {
+ if _v, err2 := New{{full_name value_type.def_bean}}(_ele_); err2 != nil {
+ return nil, err2
+ } else {
+ _dataList = append(_dataList, _v)
+ }
+ }
+ return &{{go_full_name}}{_dataList:_dataList}, nil
+}
+
+func (table *{{go_full_name}}) GetDataList() []{{declaring_type_name value_type}} {
+ return table._dataList
+}
+
+func (table *{{go_full_name}}) Get(index int) {{declaring_type_name value_type}} {
+ return table._dataList[index]
+}
+
+{{~else~}}
+
+import "errors"
+
+type {{go_full_name}} struct {
+ _data {{declaring_type_name value_type}}
+}
+
+func New{{go_full_name}}(_buf []map[string]interface{}) (*{{go_full_name}}, error) {
+ if len(_buf) != 1 {
+ return nil, errors.New(" size != 1 ")
+ } else {
+ if _v, err2 := New{{full_name value_type.def_bean}}(_buf[0]); err2 != nil {
+ return nil, err2
+ } else {
+ return &{{go_full_name}}{_data:_v}, nil
+ }
+ }
+}
+
+func (table *{{go_full_name}}) Get() {{declaring_type_name value_type}} {
+ return table._data
+}
+
+{{~end~}}
diff --git a/Luban/Templates/go-json/tables.sbn b/Luban/Templates/go-json/tables.sbn
new file mode 100644
index 0000000..6f17482
--- /dev/null
+++ b/Luban/Templates/go-json/tables.sbn
@@ -0,0 +1,28 @@
+{{~if __namespace != ''~}}
+package {{__namespace}};
+{{~end~}}
+
+type JsonLoader func(string) ([]map[string]interface{}, error)
+
+type {{__name}} struct {
+ {{~for table in __tables ~}}
+ {{table.name}} *{{full_name table}}
+ {{~end~}}
+}
+
+func NewTables(loader JsonLoader) (*{{__name}}, error) {
+ var err error
+ var buf []map[string]interface{}
+
+ tables := &{{__name}}{}
+ {{~for table in __tables ~}}
+ if buf, err = loader("{{table.output_data_file}}") ; err != nil {
+ return nil, err
+ }
+ if tables.{{table.name}}, err = New{{full_name table}}(buf) ; err != nil {
+ return nil, err
+ }
+ {{~end~}}
+ return tables, nil
+}
+
diff --git a/Luban/Templates/java-bin/bean.sbn b/Luban/Templates/java-bin/bean.sbn
new file mode 100644
index 0000000..39f90f0
--- /dev/null
+++ b/Luban/Templates/java-bin/bean.sbn
@@ -0,0 +1,65 @@
+{{~if __namespace_with_top_module != ''~}}
+package {{__namespace_with_top_module}};
+{{~end~}}
+
+import luban.*;
+
+{{~
+ parent_def_type = __this.parent_def_type
+ export_fields = __this.export_fields
+ hierarchy_export_fields = __this.hierarchy_export_fields
+~}}
+
+{{~if __this.comment != '' ~}}
+/**
+ * {{escape_comment __this.comment}}
+ */
+{{~end~}}
+public {{class_modifier __this}} class {{__name}} extends {{if parent_def_type}}{{__this.parent_def_type.full_name_with_top_module}}{{else}}AbstractBean{{end}} {
+ public {{__name}}(ByteBuf _buf) {
+ {{~if parent_def_type~}}
+ super(_buf);
+ {{~end~}}
+ {{~ for field in export_fields ~}}
+ {{deserialize '_buf' (format_field_name __code_style field.name) field.ctype}}
+ {{~end~}}
+ }
+
+ public static {{__name}} deserialize(ByteBuf _buf) {
+ {{~if __this.is_abstract_type~}}
+ switch (_buf.readInt()) {
+ {{~for child in __this.hierarchy_not_abstract_children~}}
+ case {{child.full_name_with_top_module}}.__ID__: return new {{child.full_name_with_top_module}}(_buf);
+ {{~end~}}
+ default: throw new SerializationException();
+ }
+ {{~else~}}
+ return new {{__this.full_name_with_top_module}}(_buf);
+ {{~end~}}
+ }
+
+ {{~ for field in export_fields ~}}
+{{~if field.comment != '' ~}}
+ /**
+ * {{escape_comment field.comment}}
+ */
+{{~end~}}
+ public final {{declaring_type_name field.ctype}} {{format_field_name __code_style field.name}};
+ {{~end~}}
+
+{{~if !__this.is_abstract_type~}}
+ public static final int __ID__ = {{__this.id}};
+
+ @Override
+ public int getTypeId() { return __ID__; }
+{{~end~}}
+
+ @Override
+ public String toString() {
+ return "{{full_name}}{ "
+ {{~for field in hierarchy_export_fields ~}}
+ + "{{format_field_name __code_style field.name}}:" + {{format_field_name __code_style field.name}} + ","
+ {{~end~}}
+ + "}";
+ }
+}
diff --git a/Luban/Templates/java-bin/table.sbn b/Luban/Templates/java-bin/table.sbn
new file mode 100644
index 0000000..8f3c222
--- /dev/null
+++ b/Luban/Templates/java-bin/table.sbn
@@ -0,0 +1,81 @@
+{{~if __namespace_with_top_module != ''~}}
+package {{__namespace_with_top_module}};
+{{~end~}}
+
+import luban.*;
+
+
+{{~if __this.comment != '' ~}}
+/**
+ * {{escape_comment __this.comment}}
+ */
+{{~end~}}
+public final class {{__name}} {
+ {{~if __this.is_map_table
+ key_type = __this.key_ttype
+ ~}}
+ private final java.util.HashMap<{{declaring_box_type_name key_type}}, {{declaring_box_type_name __value_type}}> _dataMap;
+ private final java.util.ArrayList<{{declaring_box_type_name __value_type}}> _dataList;
+
+ public {{__name}}(ByteBuf _buf) {
+ _dataMap = new java.util.HashMap<{{declaring_box_type_name key_type}}, {{declaring_box_type_name __value_type}}>();
+ _dataList = new java.util.ArrayList<{{declaring_box_type_name __value_type}}>();
+
+ for(int n = _buf.readSize() ; n > 0 ; --n) {
+ {{declaring_box_type_name __value_type}} _v;
+ {{deserialize '_buf' '_v' __value_type}}
+ _dataList.add(_v);
+ _dataMap.put(_v.{{format_field_name __code_style __this.index_field.name}}, _v);
+ }
+ }
+
+ public java.util.HashMap<{{declaring_box_type_name key_type}}, {{declaring_box_type_name __value_type}}> getDataMap() { return _dataMap; }
+ public java.util.ArrayList<{{declaring_box_type_name __value_type}}> getDataList() { return _dataList; }
+
+{{~if __value_type.is_dynamic~}}
+ @SuppressWarnings("unchecked")
+ public T getAs({{declaring_type_name key_type}} key) { return (T)_dataMap.get(key); }
+{{~end~}}
+ public {{declaring_box_type_name __value_type}} get({{declaring_type_name key_type}} key) { return _dataMap.get(key); }
+
+ {{~else if __this.is_list_table ~}}
+ private final java.util.ArrayList<{{declaring_box_type_name __value_type}}> _dataList;
+
+ public {{__name}}(ByteBuf _buf) {
+ _dataList = new java.util.ArrayList<{{declaring_box_type_name __value_type}}>();
+
+ for(int n = _buf.readSize() ; n > 0 ; --n) {
+ {{declaring_box_type_name __value_type}} _v;
+ {{deserialize '_buf' '_v' __value_type}}
+ _dataList.add(_v);
+ }
+ }
+
+ public java.util.ArrayList<{{declaring_box_type_name __value_type}}> getDataList() { return _dataList; }
+
+ public {{declaring_box_type_name __value_type}} get(int index) { return _dataList.get(index); }
+
+
+ {{~else~}}
+ private final {{declaring_type_name __value_type}} _data;
+
+ public final {{declaring_type_name __value_type}} data() { return _data; }
+
+ public {{__name}}(ByteBuf _buf) {
+ int n = _buf.readSize();
+ if (n != 1) throw new SerializationException("table mode=one, but size != 1");
+ {{deserialize '_buf' '_data' __value_type}}
+ }
+
+
+ {{~ for field in __value_type.def_bean.hierarchy_export_fields ~}}
+{{~if field.comment != '' ~}}
+ /**
+ * {{escape_comment field.comment}}
+ */
+{{~end~}}
+ public {{declaring_type_name field.ctype}} {{getter_name field.name}}() { return _data.{{format_field_name __code_style field.name}}; }
+ {{~end~}}
+
+ {{~end~}}
+}
\ No newline at end of file
diff --git a/Luban/Templates/java-bin/tables.sbn b/Luban/Templates/java-bin/tables.sbn
new file mode 100644
index 0000000..7ab77d8
--- /dev/null
+++ b/Luban/Templates/java-bin/tables.sbn
@@ -0,0 +1,37 @@
+{{~if __namespace != ''~}}
+package {{__namespace}};
+{{~end~}}
+
+import luban.*;
+{{~
+func get_table_inner_name
+ ret '_' + ($0 | string.downcase)
+end
+~}}
+
+public final class {{__name}}
+{
+ public static interface IByteBufLoader {
+ ByteBuf load(String file) throws java.io.IOException;
+ }
+
+ {{~for table in __tables
+ inner_name = get_table_inner_name table.name
+ ~}}
+{{~if table.comment != '' ~}}
+ /**
+ * {{escape_comment table.comment}}
+ */
+{{~end~}}
+ private final {{table.full_name_with_top_module}} {{inner_name}};
+ public {{table.full_name_with_top_module}} get{{table.name}}() { return {{inner_name}}; }
+ {{~end~}}
+
+ public {{__name}}(IByteBufLoader loader) throws java.io.IOException {
+ {{~for table in __tables
+ inner_name = get_table_inner_name table.name
+ ~}}
+ {{inner_name}} = new {{table.full_name_with_top_module}}(loader.load("{{table.output_data_file}}"));
+ {{~end~}}
+ }
+}
diff --git a/Luban/Templates/java-json/bean.sbn b/Luban/Templates/java-json/bean.sbn
new file mode 100644
index 0000000..34fe415
--- /dev/null
+++ b/Luban/Templates/java-json/bean.sbn
@@ -0,0 +1,67 @@
+{{~if __namespace_with_top_module != ''~}}
+package {{__namespace_with_top_module}};
+{{~end~}}
+
+import luban.*;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+
+{{~
+ parent_def_type = __this.parent_def_type
+ export_fields = __this.export_fields
+ hierarchy_export_fields = __this.hierarchy_export_fields
+~}}
+
+{{~if __this.comment != '' ~}}
+/**
+ * {{escape_comment __this.comment}}
+ */
+{{~end~}}
+public {{class_modifier __this}} class {{__name}} extends {{if parent_def_type}}{{__this.parent_def_type.full_name_with_top_module}}{{else}}AbstractBean{{end}} {
+ public {{__name}}(JsonObject _buf) {
+ {{~if parent_def_type~}}
+ super(_buf);
+ {{~end~}}
+ {{~ for field in export_fields ~}}
+ {{deserialize_field (format_field_name __code_style field.name) '_buf' field.name field.ctype}}
+ {{~end~}}
+ }
+
+ public static {{__name}} deserialize(JsonObject _buf) {
+ {{~if __this.is_abstract_type~}}
+ switch (_buf.get("$type").getAsString()) {
+ {{~for child in __this.hierarchy_not_abstract_children~}}
+ case "{{impl_data_type child __this}}": return new {{child.full_name_with_top_module}}(_buf);
+ {{~end~}}
+ default: throw new SerializationException();
+ }
+ {{~else~}}
+ return new {{__this.full_name_with_top_module}}(_buf);
+ {{~end~}}
+ }
+
+ {{~ for field in export_fields ~}}
+{{~if field.comment != '' ~}}
+ /**
+ * {{escape_comment field.comment}}
+ */
+{{~end~}}
+ public final {{declaring_type_name field.ctype}} {{format_field_name __code_style field.name}};
+ {{~end~}}
+
+{{~if !__this.is_abstract_type~}}
+ public static final int __ID__ = {{__this.id}};
+
+ @Override
+ public int getTypeId() { return __ID__; }
+{{~end~}}
+
+ @Override
+ public String toString() {
+ return "{{full_name}}{ "
+ {{~for field in hierarchy_export_fields ~}}
+ + "{{format_field_name __code_style field.name}}:" + {{format_field_name __code_style field.name}} + ","
+ {{~end~}}
+ + "}";
+ }
+}
diff --git a/Luban/Templates/java-json/table.sbn b/Luban/Templates/java-json/table.sbn
new file mode 100644
index 0000000..d4a5ebd
--- /dev/null
+++ b/Luban/Templates/java-json/table.sbn
@@ -0,0 +1,82 @@
+{{~if __namespace_with_top_module != ''~}}
+package {{__namespace_with_top_module}};
+{{~end~}}
+
+import luban.*;
+import com.google.gson.JsonElement;
+
+
+{{~if __this.comment != '' ~}}
+/**
+ * {{escape_comment __this.comment}}
+ */
+{{~end~}}
+public final class {{__name}} {
+ {{~if __this.is_map_table
+ key_type = __this.key_ttype
+ ~}}
+ private final java.util.HashMap<{{declaring_box_type_name key_type}}, {{declaring_box_type_name __value_type}}> _dataMap;
+ private final java.util.ArrayList<{{declaring_box_type_name __value_type}}> _dataList;
+
+ public {{__name}}(JsonElement _buf) {
+ _dataMap = new java.util.HashMap<{{declaring_box_type_name key_type}}, {{declaring_box_type_name __value_type}}>();
+ _dataList = new java.util.ArrayList<{{declaring_box_type_name __value_type}}>();
+
+ for (com.google.gson.JsonElement _e_ : _buf.getAsJsonArray()) {
+ {{declaring_box_type_name __value_type}} _v;
+ {{deserialize '_v' '_e_' __value_type}}
+ _dataList.add(_v);
+ _dataMap.put(_v.{{format_field_name __code_style __this.index_field.name}}, _v);
+ }
+ }
+
+ public java.util.HashMap<{{declaring_box_type_name key_type}}, {{declaring_box_type_name __value_type}}> getDataMap() { return _dataMap; }
+ public java.util.ArrayList<{{declaring_box_type_name __value_type}}> getDataList() { return _dataList; }
+
+{{~if __value_type.is_dynamic~}}
+ @SuppressWarnings("unchecked")
+ public T getAs({{declaring_type_name key_type}} key) { return (T)_dataMap.get(key); }
+{{~end~}}
+ public {{declaring_box_type_name __value_type}} get({{declaring_type_name key_type}} key) { return _dataMap.get(key); }
+
+ {{~else if __this.is_list_table ~}}
+ private final java.util.ArrayList<{{declaring_box_type_name __value_type}}> _dataList;
+
+ public {{__name}}(JsonElement _buf) {
+ _dataList = new java.util.ArrayList<{{declaring_box_type_name __value_type}}>();
+
+ for (com.google.gson.JsonElement _e_ : _buf.getAsJsonArray()) {
+ {{declaring_box_type_name __value_type}} _v;
+ {{deserialize '_v' '_e_' __value_type}}
+ _dataList.add(_v);
+ }
+ }
+
+ public java.util.ArrayList<{{declaring_box_type_name __value_type}}> getDataList() { return _dataList; }
+
+ public {{declaring_box_type_name __value_type}} get(int index) { return _dataList.get(index); }
+
+
+ {{~else~}}
+ private final {{declaring_type_name __value_type}} _data;
+
+ public final {{declaring_type_name __value_type}} data() { return _data; }
+
+ public {{__name}}(JsonElement _buf) {
+ int n = _buf.getAsJsonArray().size();
+ if (n != 1) throw new SerializationException("table mode=one, but size != 1");
+ {{deserialize '_data' '_buf.getAsJsonArray().get(0).getAsJsonObject()' __value_type}}
+ }
+
+
+ {{~ for field in __value_type.def_bean.hierarchy_export_fields ~}}
+{{~if field.comment != '' ~}}
+ /**
+ * {{escape_comment field.comment}}
+ */
+{{~end~}}
+ public {{declaring_type_name field.ctype}} {{getter_name field.name}}() { return _data.{{format_field_name __code_style field.name}}; }
+ {{~end~}}
+
+ {{~end~}}
+}
\ No newline at end of file
diff --git a/Luban/Templates/java-json/tables.sbn b/Luban/Templates/java-json/tables.sbn
new file mode 100644
index 0000000..dbb624b
--- /dev/null
+++ b/Luban/Templates/java-json/tables.sbn
@@ -0,0 +1,39 @@
+{{~if __namespace != ''~}}
+package {{__namespace}};
+{{~end~}}
+
+import luban.*;
+import com.google.gson.JsonElement;
+{{~
+func get_table_inner_name
+ ret '_' + ($0 | string.downcase)
+end
+~}}
+
+public final class {{__name}}
+{
+
+ public interface IJsonLoader {
+ JsonElement load(String file) throws java.io.IOException;
+ }
+
+ {{~for table in __tables
+ inner_name = get_table_inner_name table.name
+ ~}}
+{{~if table.comment != '' ~}}
+ /**
+ * {{escape_comment table.comment}}
+ */
+{{~end~}}
+ private final {{table.full_name_with_top_module}} {{inner_name}};
+ public {{table.full_name_with_top_module}} get{{table.name}}() { return {{inner_name}}; }
+ {{~end~}}
+
+ public {{__name}}(IJsonLoader loader) throws java.io.IOException {
+ {{~for table in __tables
+ inner_name = get_table_inner_name table.name
+ ~}}
+ {{inner_name}} = new {{table.full_name_with_top_module}}(loader.load("{{table.output_data_file}}"));
+ {{~end~}}
+ }
+}
diff --git a/Luban/Templates/javascript-bin/schema.sbn b/Luban/Templates/javascript-bin/schema.sbn
new file mode 100644
index 0000000..5c79063
--- /dev/null
+++ b/Luban/Templates/javascript-bin/schema.sbn
@@ -0,0 +1,195 @@
+
+{{~for enum in __enums~}}{{~if enum.comment != '' ~}}
+/**
+ * {{enum.comment | html.escape}}
+ */
+{{~end~}}
+export const {{full_name enum}} = Object.freeze({
+ {{~for item in enum.items ~}}
+{{~if item.comment != '' ~}}
+ /**
+ * {{escape_comment item.comment}}
+ */
+{{~end~}}
+ {{item.name}}: {{item.int_value}},
+ {{~end~}}
+});
+
+{{~end~}}
+
+
+{{~
+func get_ref_name
+ ret (format_property_name __code_style $0.name) + '_ref'
+end
+
+func generate_resolve_field_ref
+ field = $0
+ fieldName = format_property_name __code_style field.name
+ refTable = get_ref_table field
+ if can_generate_ref field
+ tableName = refTable.name
+ if field.is_nullable
+ ret 'this.'+(get_ref_name field) + ' = this.' + fieldName + '!= null ? tables.' + tableName + '.get(this.' + fieldName + ') : null'
+ else
+ ret 'this.'+(get_ref_name field) + ' = tables.' + tableName + '.get(this.' + fieldName + ')'
+ end
+ else
+ if (is_field_bean_need_resolve_ref field)
+ ret 'this.'+fieldName + '?.resolve(tables);'
+ else if (is_field_array_like_need_resolve_ref field)
+ ret 'for (let _e of ' + 'this.' + fieldName + ') { _e?.resolve(tables); }'
+ else if (is_field_map_need_resolve_ref field)
+ ret 'for (let [_, _e] of ' + 'this.' + fieldName + ') { _e?.resolve(tables); }'
+ else
+ ret ''
+ end
+ end
+end
+~}}
+
+
+{{~for bean in __beans~}}
+
+{{~if bean.comment != '' ~}}
+/**
+ * {{escape_comment bean.comment}}
+ */
+{{~end~}}
+export class {{full_name bean}}{{if bean.parent_def_type}} extends {{full_name bean.parent_def_type}}{{end}} {
+{{~if bean.is_abstract_type~}}
+ static constructorFrom(_buf_) {
+ switch (_buf_.readInt()) {
+ {{~ for child in bean.hierarchy_not_abstract_children~}}
+ case {{child.id}}: return new {{full_name child}}(_buf_);
+ {{~end~}}
+ default: throw new Error();
+ }
+ }
+{{~end~}}
+
+ constructor(_buf_) {
+ {{~if bean.parent_def_type~}}
+ super(_buf_);
+ {{~end~}}
+ {{~ for field in bean.export_fields ~}}
+ {{deserialize ('this.' + format_field_name __code_style field.name) '_buf_' field.ctype}};
+ {{~end~}}
+ }
+
+ resolve(tables) {
+ {{~if bean.parent_def_type~}}
+ super.resolve(tables);
+ {{~end~}}
+ {{~ for field in bean.export_fields ~}}
+ {{generate_resolve_field_ref field}}
+ {{~end~}}
+ }
+}
+
+
+{{~end~}}
+
+{{~for table in __tables
+ key_type = table.key_ttype
+ value_type = table.value_ttype
+~}}
+
+{{~if table.comment != '' ~}}
+/**
+ * {{escape_comment table.comment}}
+ */
+{{~end~}}
+export class {{full_name table}} {
+ {{~if table.is_map_table ~}}
+
+ constructor(_buf_) {
+ this._dataMap = new Map();
+ this._dataList = [];
+ for(let n = _buf_.readInt(); n > 0; n--) {
+ let _v;
+ {{deserialize '_v' '_buf_' value_type}};
+ this._dataList.push(_v);
+ this._dataMap.set(_v.{{format_field_name __code_style table.index_field.name}}, _v);
+ }
+ }
+
+ getDataMap() { return this._dataMap; }
+ getDataList() { return this._dataList; }
+
+ get(key) { return this._dataMap.get(key); }
+
+ resolve(tables) {
+ for(let data of this._dataList) {
+ data.resolve(tables);
+ }
+ }
+ {{~else if table.is_list_table ~}}
+
+ constructor(_buf_) {
+ this._dataList = [];
+ for(let n = _buf_.readInt(); n > 0; n--) {
+ let _v;
+ {{deserialize '_v' '_buf_' value_type}};
+ this._dataList.push(_v);
+ }
+ }
+
+ getDataList() { return this._dataList }
+
+ get(index) { return this._dataList[index] }
+
+ resolve(tables) {
+ for(let data of this._dataList) {
+ data.resolve(tables);
+ }
+ }
+ {{~else~}}
+
+ constructor(_buf_) {
+ if (_buf_.readInt() != 1) throw new Error('table mode=one, but size != 1')
+ {{deserialize 'this._data' '_buf_' value_type}}
+ }
+
+ getData() { return this._data; }
+
+ {{~ for field in value_type.def_bean.hierarchy_export_fields ~}}
+{{~if field.comment != '' ~}}
+ /**
+ * {{escape_comment field.comment}}
+ */
+{{~end~}}
+ get {{format_field_name __code_style field.name}}() { return this._data.{{format_field_name __code_style field.name}}; }
+ {{~if can_generate_ref field~}}
+ get {{format_field_name __code_style field.name}}_ref(): { return this._data.{{format_field_name __code_style field.name}}_ref; }
+ {{~end~}}
+ {{~end~}}
+
+ resolve(tables) {
+ this._data.resolve(tables);
+ }
+ {{end}}
+}
+
+{{~end~}}
+
+export class {{__name}} {
+ {{~ for table in __tables ~}}
+{{~if table.comment != '' ~}}
+ /**
+ * {{escape_comment table.comment}}
+ */
+{{~end~}}
+ get {{table.name}}() { return this._{{table.name}};}
+ {{~end~}}
+
+ constructor(loader) {
+ {{~for table in __tables ~}}
+ this._{{table.name}} = new {{full_name table}}(loader('{{table.output_data_file}}'));
+ {{~end~}}
+
+ {{~for table in __tables ~}}
+ this._{{table.name}}.resolve(this);
+ {{~end~}}
+ }
+}
diff --git a/Luban/Templates/javascript-json/schema.sbn b/Luban/Templates/javascript-json/schema.sbn
new file mode 100644
index 0000000..5529bd2
--- /dev/null
+++ b/Luban/Templates/javascript-json/schema.sbn
@@ -0,0 +1,196 @@
+
+{{~for enum in __enums~}}{{~if enum.comment != '' ~}}
+/**
+ * {{enum.comment | html.escape}}
+ */
+{{~end~}}
+export const {{full_name enum}} = Object.freeze({
+ {{~for item in enum.items ~}}
+{{~if item.comment != '' ~}}
+ /**
+ * {{escape_comment item.comment}}
+ */
+{{~end~}}
+ {{item.name}}: {{item.int_value}},
+ {{~end~}}
+});
+
+{{~end~}}
+
+
+{{~
+func get_ref_name
+ ret (format_property_name __code_style $0.name) + '_ref'
+end
+
+func generate_resolve_field_ref
+ field = $0
+ fieldName = format_property_name __code_style field.name
+ refTable = get_ref_table field
+ if can_generate_ref field
+ tableName = refTable.name
+ if field.is_nullable
+ ret 'this.'+(get_ref_name field) + ' = this.' + fieldName + '!= null ? tables.' + tableName + '.get(this.' + fieldName + ') : null'
+ else
+ ret 'this.'+(get_ref_name field) + ' = tables.' + tableName + '.get(this.' + fieldName + ')'
+ end
+ else
+ if (is_field_bean_need_resolve_ref field)
+ ret 'this.'+fieldName + '?.resolve(tables);'
+ else if (is_field_array_like_need_resolve_ref field)
+ ret 'for (let _e of ' + 'this.' + fieldName + ') { _e?.resolve(tables); }'
+ else if (is_field_map_need_resolve_ref field)
+ ret 'for (let [_, _e] of ' + 'this.' + fieldName + ') { _e?.resolve(tables); }'
+ else
+ ret ''
+ end
+ end
+end
+~}}
+
+{{~for bean in __beans~}}
+
+{{~if bean.comment != '' ~}}
+/**
+ * {{escape_comment bean.comment}}
+ */
+{{~end~}}
+export class {{full_name bean}}{{if bean.parent_def_type}} extends {{full_name bean.parent_def_type}}{{end}} {
+{{~if bean.is_abstract_type~}}
+ static constructorFrom(_json_) {
+ switch (_json_["$type"]) {
+ {{~ for child in bean.hierarchy_not_abstract_children~}}
+ case '{{impl_data_type child bean}}': return new {{full_name child}}(_json_);
+ {{~end~}}
+ default: throw new Error();
+ }
+ }
+{{~end~}}
+
+ constructor(_json_) {
+ {{~if bean.parent_def_type~}}
+ super(_json_);
+ {{~end~}}
+ {{~ for field in bean.export_fields ~}}
+ {{~if !field.ctype.is_nullable~}}
+ if (_json_.{{field.name}} === undefined) { throw new Error() };
+ {{~end~}}
+ {{deserialize ('this.' + format_field_name __code_style field.name) ( '_json_.' + field.name) field.ctype}};
+ {{~end~}}
+ }
+
+ resolve(tables) {
+ {{~if bean.parent_def_type~}}
+ super.resolve(tables);
+ {{~end~}}
+ {{~ for field in bean.export_fields ~}}
+ {{generate_resolve_field_ref field}}
+ {{~end~}}
+ }
+}
+
+{{~end~}}
+
+{{~for table in __tables
+ key_type = table.key_ttype
+ value_type = table.value_ttype
+~}}
+
+{{~if table.comment != '' ~}}
+/**
+ * {{escape_comment table.comment}}
+ */
+{{~end~}}
+export class {{full_name table}} {
+ {{~if table.is_map_table ~}}
+
+ constructor(_json_) {
+ this._dataMap = new Map();
+ this._dataList = [];
+ for(var _json2_ of _json_) {
+ let _v;
+ {{deserialize '_v' '_json2_' value_type}};
+ this._dataList.push(_v);
+ this._dataMap.set(_v.{{format_field_name __code_style table.index_field.name}}, _v);
+ }
+ }
+
+ getDataMap() { return this._dataMap; }
+ getDataList() { return this._dataList; }
+
+ get(key) { return this._dataMap.get(key); }
+
+ resolve(tables) {
+ for(let data of this._dataList) {
+ data.resolve(tables);
+ }
+ }
+ {{~else if table.is_list_table ~}}
+
+ constructor(_json_) {
+ this._dataList = [];
+ for(var _json2_ of _json_) {
+ let _v;
+ {{deserialize '_v' '_json2_' value_type}};
+ this._dataList.push(_v);
+ }
+ }
+
+ getDataList() { return this._dataList }
+
+ get(index) { return this._dataList[index] }
+
+ resolve(tables) {
+ for(let data of this._dataList) {
+ data.resolve(tables);
+ }
+ }
+ {{~else~}}
+
+ constructor(_json_) {
+ if (_json_.length != 1) throw new Error('table mode=one, but size != 1');
+ {{deserialize 'this._data' '_json_[0]' value_type}};
+ }
+
+ getData() { return this._data; }
+
+ {{~ for field in value_type.def_bean.hierarchy_export_fields ~}}
+{{~if field.comment != '' ~}}
+ /**
+ * {{escape_comment field.comment}}
+ */
+{{~end~}}
+ get {{format_field_name __code_style field.name}}() { return this._data.{{format_field_name __code_style field.name}}; }
+ {{~if can_generate_ref field~}}
+ get {{format_field_name __code_style field.name}}_ref(): { return this._data.{{format_field_name __code_style field.name}}_ref; }
+ {{~end~}}
+ {{~end~}}
+
+ resolve(tables) {
+ this._data.resolve(tables);
+ }
+ {{end}}
+}
+
+{{~end~}}
+
+export class {{__name}} {
+ {{~ for table in __tables ~}}
+{{~if table.comment != '' ~}}
+ /**
+ * {{escape_comment table.comment}}
+ */
+{{~end~}}
+ get {{table.name}}() { return this._{{table.name}};}
+ {{~end~}}
+
+ constructor(loader) {
+ {{~for table in __tables ~}}
+ this._{{table.name}} = new {{full_name table}}(loader('{{table.output_data_file}}'));
+ {{~end~}}
+
+ {{~for table in __tables ~}}
+ this._{{table.name}}.resolve(this);
+ {{~end~}}
+ }
+}
diff --git a/Luban/Templates/lua-bin/schema.sbn b/Luban/Templates/lua-bin/schema.sbn
new file mode 100644
index 0000000..5a492a7
--- /dev/null
+++ b/Luban/Templates/lua-bin/schema.sbn
@@ -0,0 +1,158 @@
+local setmetatable = setmetatable
+local pairs = pairs
+local ipairs = ipairs
+local tinsert = table.insert
+
+local function SimpleClass()
+ local class = {}
+ class.__index = class
+ class.New = function(...)
+ local ctor = class.ctor
+ local o = ctor and ctor(...) or {}
+ setmetatable(o, class)
+ return o
+ end
+ return class
+end
+
+
+local function get_map_size(m)
+ local n = 0
+ for _ in pairs(m) do
+ n = n + 1
+ end
+ return n
+end
+
+local enums =
+{
+ {{~ for c in __enums ~}}
+ ---@class {{c.full_name}} {{-if c.comment != ''}} @{{escape_comment c.comment}}{{end}}
+ {{~ for item in c.items ~}}
+ ---@field public {{item.name}} integer {{-if item.comment != ''}} @{{escape_comment item.comment}}{{end}}
+ {{~end~}}
+ ['{{c.full_name}}'] = { {{ for item in c.items }} {{item.name}}={{item.int_value}}, {{end}} };
+ {{~end~}}
+}
+
+local tables =
+{
+{{~for table in __tables ~}}
+ {{~if table.is_map_table ~}}
+ { name='{{table.name}}', file='{{table.output_data_file}}', mode='map', index='{{table.index}}', value_type='{{table.value_ttype.def_bean.full_name}}' },
+ {{~else if table.is_list_table ~}}
+ { name='{{table.name}}', file='{{table.output_data_file}}', mode='list', index='{{table.index}}', value_type='{{table.value_ttype.def_bean.full_name}}' },
+ {{~else~}}
+ { name='{{table.name}}', file='{{table.output_data_file}}', mode='one', value_type='{{table.value_ttype.def_bean.full_name}}'},
+ {{~end~}}
+{{~end~}}
+}
+
+local function InitTypes(methods)
+ local readBool = methods.readBool
+ local readByte = methods.readByte
+ local readShort = methods.readShort
+ local readFshort = methods.readFshort
+ local readInt = methods.readInt
+ local readFint = methods.readFint
+ local readLong = methods.readLong
+ local readFlong = methods.readFlong
+ local readFloat = methods.readFloat
+ local readDouble = methods.readDouble
+ local readSize = methods.readSize
+
+ local readString = methods.readString
+
+ local function readList(bs, keyFun)
+ local list = {}
+ local v
+ for i = 1, readSize(bs) do
+ tinsert(list, keyFun(bs))
+ end
+ return list
+ end
+
+ local readArray = readList
+
+ local function readSet(bs, keyFun)
+ local set = {}
+ local v
+ for i = 1, readSize(bs) do
+ tinsert(set, keyFun(bs))
+ end
+ return set
+ end
+
+ local function readMap(bs, keyFun, valueFun)
+ local map = {}
+ for i = 1, readSize(bs) do
+ local k = keyFun(bs)
+ local v = valueFun(bs)
+ map[k] = v
+ end
+ return map
+ end
+
+ local function readNullableBool(bs)
+ if readBool(bs) then
+ return readBool(bs)
+ end
+ end
+
+ local beans = {}
+ {{~ for bean in __beans ~}}
+ do
+ ---@class {{bean.full_name}} {{if bean.parent_def_type}}:{{bean.parent}} {{end}} {{-if bean.comment != ''}} @{{escape_comment bean.comment}}{{end}}
+ {{~ for field in bean.export_fields~}}
+ ---@field public {{field.name}} {{comment_type field.ctype}} {{-if field.comment != ''}} @{{escape_comment field.comment}}{{end}}
+ {{~end~}}
+ local class = {
+ {{~ for field in bean.export_fields~}}
+ { name='{{field.name}}', type='{{comment_type field.ctype}}'},
+ {{~end~}}
+ }
+ beans['{{bean.full_name}}'] = class
+ end
+ {{~end~}}
+
+ local beans = {}
+{{~ for bean in __beans ~}}
+ do
+ ---@class {{bean.full_name}} {{if bean.parent_def_type}}:{{bean.parent}} {{end}}
+ {{~ for field in bean.export_fields~}}
+ ---@field public {{field.name}} {{comment_type field.ctype}}
+ {{~end~}}
+ local class = SimpleClass()
+ class._id = {{bean.id}}
+ class._type_ = '{{bean.full_name}}'
+ local id2name = { {{for c in bean.hierarchy_not_abstract_children}} [{{c.id}}] = '{{c.full_name}}', {{end}} }
+{{~if bean.is_abstract_type~}}
+ class._deserialize = function(bs)
+ local id = readInt(bs)
+ return beans[id2name[id]]._deserialize(bs)
+ end
+{{~else~}}
+ class._deserialize = function(bs)
+ local o = {
+ {{~ for field in bean.hierarchy_export_fields ~}}
+ {{~if !(need_marshal_bool_prefix field.ctype)~}}
+ {{field.name}} = {{deserialize 'bs' field.ctype}},
+ {{~else~}}
+ {{field.name}} = {{if !field.ctype.is_bool}}readBool(bs) and {{deserialize 'bs' field.ctype}} or nil {{-else-}} readNullableBool(bs) {{-end-}},
+ {{~end~}}
+ {{~end~}}
+ }
+ setmetatable(o, class)
+ return o
+ end
+{{~end~}}
+ beans[class._type_] = class
+ end
+{{~end~}}
+
+
+ return { enums = enums, beans = beans, tables = tables }
+ end
+
+return { InitTypes = InitTypes }
+
diff --git a/Luban/Templates/lua-lua/schema.sbn b/Luban/Templates/lua-lua/schema.sbn
new file mode 100644
index 0000000..3a75e1a
--- /dev/null
+++ b/Luban/Templates/lua-lua/schema.sbn
@@ -0,0 +1,42 @@
+
+local enums =
+{
+ {{~ for c in __enums ~}}
+ ---@class {{c.full_name}} {{-if c.comment != ''}} @{{escape_comment c.comment}}{{end}}
+ {{~ for item in c.items ~}}
+ ---@field public {{item.name}} integer {{-if item.comment != ''}} @{{escape_comment item.comment}}{{end}}
+ {{~end~}}
+ ['{{c.full_name}}'] = { {{ for item in c.items }} {{item.name}}={{item.int_value}}, {{end}} };
+ {{~end~}}
+}
+
+local beans = {}
+{{~ for bean in __beans ~}}
+ do
+ ---@class {{bean.full_name}} {{if bean.parent_def_type}}:{{bean.parent}} {{end}} {{-if bean.comment != ''}} @{{escape_comment bean.comment}}{{end}}
+ {{~ for field in bean.export_fields~}}
+ ---@field public {{field.name}} {{comment_type field.ctype}} {{-if field.comment != ''}} @{{escape_comment field.comment}}{{end}}
+ {{~end~}}
+ local class = {
+ {{~ for field in bean.export_fields~}}
+ { name='{{field.name}}', type='{{comment_type field.ctype}}'},
+ {{~end~}}
+ }
+ beans['{{bean.full_name}}'] = class
+ end
+{{~end~}}
+
+local tables =
+{
+{{~for table in __tables ~}}
+ {{~if table.is_map_table ~}}
+ { name='{{table.name}}', file='{{table.output_data_file}}', mode='map', index='{{table.index}}', value_type='{{table.value_ttype.def_bean.full_name}}' },
+ {{~else if table.is_list_table ~}}
+ { name='{{table.name}}', file='{{table.output_data_file}}', mode='list', index='{{table.index}}', value_type='{{table.value_ttype.def_bean.full_name}}' },
+ {{~else~}}
+ { name='{{table.name}}', file='{{table.output_data_file}}', mode='one', value_type='{{table.value_ttype.def_bean.full_name}}'},
+ {{~end~}}
+{{~end~}}
+}
+
+return { enums = enums, beans = beans, tables = tables }
diff --git a/Luban/Templates/pb/schema.sbn b/Luban/Templates/pb/schema.sbn
new file mode 100644
index 0000000..fce8035
--- /dev/null
+++ b/Luban/Templates/pb/schema.sbn
@@ -0,0 +1,41 @@
+syntax = "{{__syntax}}";
+
+package {{__namespace}};
+
+{{~for enum in __enums
+ typeName = full_name enum
+ ~}}
+enum {{typeName}} {
+ {{~if !enum.has_zero_value_item ~}}
+ {{typeName}}_EMPTY_PLACEHOLDER = 0;
+ {{~end~}}
+ {{~for item in enum.items ~}}
+ {{typeName}}_{{item.name}} = {{item.int_value}};
+ {{~end~}}
+}
+{{~end~}}
+
+{{~for bean in __beans
+ typeName = full_name bean
+~}}
+message {{typeName}} {
+{{~if bean.is_abstract_type ~}}
+ oneof value {
+ {{~for c in bean.hierarchy_not_abstract_children~}}
+ {{full_name c}} {{c.name}} = {{c.auto_id}};
+ {{~end~}}
+ }
+{{~else~}}
+ {{~for f in bean.hierarchy_export_fields ~}}
+ {{pre_decorator f.ctype}} {{declaring_type_name f.ctype}} {{f.name}} = {{f.auto_id}} {{suffix_options f.ctype}};
+ {{~end~}}
+{{~end~}}
+}
+{{~end~}}
+
+{{~for table in __tables~}}
+message {{full_name table}} {
+ repeated {{declaring_type_name table.value_ttype}} data_list = 1 [packed = false];
+}
+{{~end~}}
+
diff --git a/Luban/Templates/php-json/schema.sbn b/Luban/Templates/php-json/schema.sbn
new file mode 100644
index 0000000..478c850
--- /dev/null
+++ b/Luban/Templates/php-json/schema.sbn
@@ -0,0 +1,155 @@
+{{~namespace_with_grace_begin __namespace~}}
+
+{{~for enum in __enums~}}
+{{~if enum.comment != '' ~}}
+/**
+ * {{enum.comment | html.escape}}
+ */
+{{~end~}}
+class {{full_name enum}} {
+ {{~for item in enum.items ~}}
+{{~if item.comment != '' ~}}
+ /**
+ * {{escape_comment item.comment}}
+ */
+{{~end~}}
+ public const {{item.name}} = {{item.value}};
+ {{~end~}}
+}
+
+{{~end~}}
+
+
+{{~for bean in __beans~}}
+{{name = (full_name bean)}}
+{{~if bean.comment != '' ~}}
+/**
+ * {{escape_comment bean.comment}}
+ */
+{{~end~}}
+{{class_modifier bean}} class {{name}}{{if bean.parent_def_type}} extends {{full_name bean.parent_def_type}}{{end}} {
+{{~if bean.is_abstract_type~}}
+ public static function constructFrom($_json_) {
+ $type = $_json_['$type'];
+ switch ($type) {
+ {{~ for child in bean.hierarchy_not_abstract_children~}}
+ case '{{impl_data_type child bean}}': return new {{full_name child}}($_json_);
+ {{~end~}}
+ default: throw new \Exception("unknown type:$type");
+ }
+ }
+{{~end~}}
+
+ public function __construct($_json_) {
+ {{~if bean.parent_def_type~}}
+ parent::__construct($_json_);
+ {{~end~}}
+ {{~ for field in bean.export_fields ~}}
+ {{~if !field.ctype.is_nullable~}}
+ if (!array_key_exists('{{field.name}}', $_json_)) { throw new \Exception("field:'{{field.name}}' missing"); }
+ {{~end~}}
+ {{deserialize ('$this->' + format_field_name __code_style field.name) ( '$_json_[\'' + field.name + '\']') field.ctype}};
+ {{~end~}}
+ }
+
+ {{~ for field in bean.export_fields ~}}
+{{~if field.comment != '' ~}}
+ /**
+ * {{escape_comment field.comment}}
+ */
+{{~end~}}
+ public ${{format_field_name __code_style field.name}};
+ {{~end~}}
+}
+
+
+{{~end~}}
+
+{{~for table in __tables
+ key_type = table.key_ttype
+ value_type = table.value_ttype
+ name = (full_name table)
+~}}
+
+{{~if table.comment != '' ~}}
+/**
+ * {{escape_comment table.comment}}
+ */
+{{~end~}}
+class {{name}} {
+ {{~if table.is_map_table ~}}
+ private $_dataMap;
+ private $_dataList;
+ public function __construct($_json_) {
+ $this->_dataMap = [];
+ $this->_dataList = [];
+ foreach ($_json_ as $_json2_) {
+ {{deserialize '$_v' '$_json2_' value_type}};
+ array_push($this->_dataList, $_v);
+ $this->_dataMap[$_v->{{format_field_name __code_style table.index_field.name}}] = $_v;
+ }
+ }
+
+ public function getDataMap() { return $this->_dataMap; }
+ public function getDataList() { return $this->_dataList; }
+
+ public function get($key) { return $this->_dataMap[$key]; }
+
+ {{~else if table.is_list_table ~}}
+ private $_dataList;
+
+ public function __construct($_json_) {
+ $this->_dataList = [];
+ foreach ($_json_ as $_json2_) {
+ {{deserialize '$_v' '$_json2_' value_type}};
+ array_push($this->_dataList, $_v);
+ }
+ }
+
+ public function getDataList() { return $this->_dataList; }
+
+ public function get($index) { return $this->_dataList[$index]; }
+
+ {{~else~}}
+
+ private $_data;
+ public function __construct($_json_) {
+ if (count($_json_) != 1) throw new \Exception('table:{{table.name}} mode=one, but size != 1');
+ {{deserialize '$this->_data' '$_json_[0]' value_type}};
+ }
+
+ public function getData() { return $this->_data; }
+
+ {{~ for field in value_type.def_bean.hierarchy_export_fields ~}}
+{{~if field.comment != '' ~}}
+ /**
+ * {{escape_comment field.comment}}
+ */
+{{~end~}}
+ public function get{{format_field_name __code_style field.name}}() { return $this->_data->{{format_field_name __code_style field.name}}; }
+ {{~end~}}
+
+ {{end}}
+}
+
+{{~end~}}
+
+class {{__name}} {
+ {{~ for table in __tables ~}}
+ private $_{{table.name}};
+{{~if table.comment != '' ~}}
+ /**
+ * {{escape_comment table.comment}}
+ */
+{{~end~}}
+ public function get{{table.name}}() { return $this->_{{table.name}}; }
+ {{~end~}}
+
+ public function __construct($loader) {
+ {{~for table in __tables ~}}
+ $this->_{{table.name}} = new {{full_name table}}($loader('{{table.output_data_file}}'));
+ {{~end~}}
+ }
+}
+
+{{~namespace_with_grace_end __namespace~}}
diff --git a/Luban/Templates/python-json/schema.sbn b/Luban/Templates/python-json/schema.sbn
new file mode 100644
index 0000000..dfa6e4b
--- /dev/null
+++ b/Luban/Templates/python-json/schema.sbn
@@ -0,0 +1,156 @@
+from enum import Enum
+{{
+
+ func table_key_list
+ table = $0
+ varName = $1
+ indexList = table.index_list |array.each do; ret varName + '.' + (format_property_name __code_style $0.index_field.name); end;
+ ret array.join indexList ', '
+ end
+
+ func table_param_name_list
+ table = $0
+ paramList = table.index_list |array.each do; ret $0.index_field.name; end
+ ret array.join paramList ', '
+ end
+}}
+
+{{~for enum in __enums~}}
+{{~if enum.comment != '' ~}}
+'''
+{{enum.comment | html.escape}}
+'''
+{{~end~}}
+class {{full_name enum}}(Enum):
+ {{~ for item in enum.items ~}}
+{{~if item.comment_or_alias != '' ~}}
+ '''
+ {{item.comment_or_alias | html.escape}}
+ '''
+{{~end~}}
+ {{item.name}} = {{item.value}}
+ {{~end~}}
+ {{~if enum.items.empty?~}}
+ pass
+ {{~end~}}
+
+{{~end~}}
+
+{{~for bean in __beans
+ name = (full_name bean)
+~}}
+class {{name}} {{if bean.parent_def_type}}({{full_name bean.parent_def_type}}){{end}}:
+{{~if bean.is_abstract_type~}}
+ _childrenTypes = None
+ @staticmethod
+ def fromJson(_json_):
+ childrenTypes = {{name}}._childrenTypes
+ if not childrenTypes:
+ childrenTypes = {{name}}._childrenTypes = {
+ {{~ for child in bean.hierarchy_not_abstract_children~}}
+ '{{impl_data_type child bean}}': {{name}},
+ {{~end~}}
+ }
+ type = _json_['$type']
+ child = {{name}}._childrenTypes.get(type)
+ if child != None:
+ return child(_json_)
+ else:
+ raise Exception()
+{{~end~}}
+ def __init__(self, _json_):
+ {{~if bean.parent_def_type~}}
+ {{full_name bean.parent_def_type}}.__init__(self, _json_)
+ {{~end~}}
+ {{~ for field in bean.export_fields ~}}
+ {{deserialize_field ('self.' + (format_field_name __code_style field.name)) '_json_' field.name field.ctype}}
+ {{~end~}}
+ {{~if bean.export_fields.empty?}}
+ pass
+ {{~end~}}
+
+{{~end~}}
+
+{{~for table in __tables
+ value_type = table.value_ttype
+~}}
+class {{full_name table}}:
+ {{~if table.is_map_table ~}}
+
+ def __init__(self, _json_ ):
+ self._dataMap = {}
+ self._dataList = []
+
+ for _json2_ in _json_:
+ {{deserialize '_v' '_json2_' value_type}}
+ self._dataList.append(_v)
+ self._dataMap[_v.{{format_field_name __code_style table.index_field.name}}] = _v
+
+ def getDataMap(self) : return self._dataMap
+ def getDataList(self) : return self._dataList
+
+ def get(self, key) : return self._dataMap.get(key)
+ {{~else if table.is_union_index~}}
+
+ def __init__(self, _json_ ):
+ self._dataMap = {}
+ self._dataList = []
+
+ for _json2_ in _json_:
+ {{deserialize '_v' '_json2_' value_type}}
+ self._dataList.append(_v)
+ self._dataMap[({{table_key_list table '_v'}})] = _v
+
+ def getDataMap(self) : return self._dataMap
+ def getDataList(self) : return self._dataList
+
+ def get(self, {{table_param_name_list table}}) : return self._dataMap.get(({{table_param_name_list table}}))
+
+ {{~else if table.is_list_table ~}}
+
+ def __init__(self, _json_ ):
+ self._dataList = []
+ {{~for idx in table.index_list~}}
+ self._dataMap_{{idx.index_field.name}} = {}
+ {{~end~}}
+ for _json2_ in _json_:
+ {{deserialize '_v' '_json2_' value_type}}
+ self._dataList.append(_v)
+ {{~for idx in table.index_list~}}
+ self._dataMap_{{idx.index_field.name}}[_v.{{format_property_name __code_style idx.index_field.name}}] = _v
+ {{~end~}}
+
+ def getDataList(self) : return self._dataList
+
+ def get(self, index) : return self._dataList[index]
+ {{~for idx in table.index_list~}}
+ def get_by_{{format_property_name __code_style idx.index_field.name}}(self, key): return self._dataMap_{{idx.index_field.name}}.get(key)
+ {{~end~}}
+ {{~else~}}
+
+ def __init__(self, _json_):
+ if (len(_json_) != 1): raise Exception('table mode=one, but size != 1')
+ {{deserialize 'self._data' '_json_[0]' value_type}}
+
+ def getData(self) : return self._data
+
+ {{~ for field in value_type.def_bean.hierarchy_export_fields ~}}
+{{~if field.comment != ''
+ name = format_field_name __code_style field.name
+~}}
+ '''
+ {{escape_comment field.comment}}
+ '''
+{{~end~}}
+ def {{name}}(self) : return self._data.{{name}}
+ {{~end~}}
+ {{~end~}}
+
+{{~end~}}
+
+
+class {{str_full_name __full_name}}:
+ def __init__(self, loader):
+ {{~for table in __tables ~}}
+ self.{{format_method_name __code_style table.name}} = {{full_name table}}(loader('{{table.output_data_file}}'));
+ {{~end~}}
diff --git a/Luban/Templates/rust-bin/lib.sbn b/Luban/Templates/rust-bin/lib.sbn
new file mode 100644
index 0000000..254110e
--- /dev/null
+++ b/Luban/Templates/rust-bin/lib.sbn
@@ -0,0 +1,51 @@
+pub mod prelude{
+ pub use crate::*;
+{{~ for ns in __ns ~}}
+ pub use {{ns}}::*;
+{{~end~}}
+}
+{{~ if __polymorphic_beans.count != 0 ~}}
+
+type AbstractBase = dyn std::any::Any + Sync + Send;
+
+pub trait GetBase<'a, T> {
+ fn get_base(&'a self) -> Result;
+}
+{{~end~}}
+
+#[derive(Debug)]
+pub enum LubanError {
+ Loader(String),
+ Table(String),
+ Bean(String),
+ Polymorphic(String),
+ Unknown(String),
+}
+
+impl std::fmt::Display for LubanError {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ f.write_str(match self {
+ LubanError::Loader(msg) |
+ LubanError::Table(msg) |
+ LubanError::Bean(msg) |
+ LubanError::Polymorphic(msg) |
+ LubanError::Unknown(msg) => msg,
+ })
+ }
+}
+
+pub struct Tables{
+{{~ for table in __tables ~}}
+ pub {{table.name}}: std::sync::Arc<{{full_name table}}>,
+{{~end~}}
+}
+
+impl Tables {
+ pub fn new Result>(loader: T) -> Result {
+ Ok(Tables {
+{{~ for table in __tables ~}}
+ {{table.name}}: {{full_name table}}::new(loader("{{table.output_data_file}}")?)?,
+{{~end~}}
+ })
+ }
+}
\ No newline at end of file
diff --git a/Luban/Templates/rust-bin/mod.sbn b/Luban/Templates/rust-bin/mod.sbn
new file mode 100644
index 0000000..a844024
--- /dev/null
+++ b/Luban/Templates/rust-bin/mod.sbn
@@ -0,0 +1,280 @@
+{{~ for mod in __mod.sub_mods ~}}
+pub mod {{mod.name}};
+{{~end~}}
+
+{{~ if __mod.name != '' ~}}
+use super::*;
+{{~end~}}
+use luban_lib::*;
+
+{{~ for enum in __mod.enums ~}}
+{{~ if enum.comment != '' ~}}
+///{{enum.comment | html.escape}}
+{{~end~}}
+{{~ if enum.is_flags ~}}
+bitflags::bitflags!{
+ #[derive(Debug, Hash, Eq, PartialEq)]
+ pub struct {{enum.name}} : u32 {
+ {{~ for item in enum.items ~}}
+ {{~if item.comment_or_alias != '' ~}}
+ ///{{item.comment_or_alias | html.escape}}
+ {{~end~}}
+ const {{item.name}} = {{item.int_value}};
+ {{~end~}}
+ }
+}
+{{~else~}}
+#[derive(Debug, Hash, Eq, PartialEq, macros::EnumFromNum)]
+pub enum {{enum.name}} {
+ {{~ for item in enum.items ~}}
+{{~if item.comment_or_alias != '' ~}}
+ ///{{item.comment_or_alias | html.escape}}
+{{~end~}}
+ {{item.name}} = {{item.value}},
+ {{~end~}}
+ {{~if enum.items.empty?~}}
+ None
+ {{~end~}}
+}
+
+impl From for {{enum.name}} {
+ fn from(value: i32) -> Self {
+ match value {
+ {{~ for item in enum.items ~}}
+ {{item.value}} => {{enum.name}}::{{item.name}},
+ {{~end~}}
+ _ => panic!("Invalid value for {{enum.name}}:{}", value),
+ }
+ }
+}
+
+{{~end~}}
+{{~end~}}
+{{~ for bean in __mod.beans
+ hierarchy_fields = bean.hierarchy_export_fields
+~}}
+#[derive(Debug)]
+{{~if bean.parent != ''~}}
+#[derive(macros::TryIntoBase)]
+{{~end~}}
+pub struct {{bean.name}} {
+ {{~ for field in hierarchy_fields ~}}
+{{~if field.comment != '' ~}}
+ /// {{escape_comment field.comment}}
+{{~end~}}
+ pub {{field.name}}: {{declaring_type_name field.ctype}},
+ {{~end~}}
+}
+{{~if bean.is_abstract_type~}}
+
+impl {{bean.name}} {
+ pub fn new(mut buf: &mut ByteBuf) -> Result, LubanError> {
+ let type_id = buf.read_int();
+ match type_id {
+ {{~for child in bean.hierarchy_not_abstract_children~}}
+ {{full_name child}}::__ID__ => Ok(std::sync::Arc::new({{full_name child}}::new(buf)?)),
+ {{~end~}}
+ _ => Err(LubanError::Bean(format!("Invalid type for {{bean.name}}:{}", type_id)))
+ }
+ }
+}
+
+pub trait T{{bean.name}} {
+ {{~ for field in hierarchy_fields ~}}
+ fn {{getter_name field.name}}(&self) -> &{{declaring_type_name field.ctype}};
+ {{~end~}}
+}
+{{~for child in bean.hierarchy_not_abstract_children~}}
+
+impl {{base_trait_name bean}} for {{full_name child}} {
+ {{~ for field in hierarchy_fields ~}}
+ fn {{getter_name field.name}}(&self) -> &{{declaring_type_name field.ctype}} {
+ &self.{{field.name}}
+ }
+ {{~end~}}
+}
+{{~end~}}
+
+impl<'a> GetBase<'a, &'a dyn {{base_trait_name bean}}> for AbstractBase {
+ fn get_base(&'a self) -> Result<&'a dyn {{base_trait_name bean}}, LubanError> {
+ {{~for child in bean.hierarchy_not_abstract_children~}}
+ let base: Result<&{{full_name child}}, _> = self.try_into();
+ if let Ok(r) = base {
+ return Ok(r);
+ }
+ {{~end~}}
+
+ Err(LubanError::Polymorphic(format!("Invalid type for {{bean.name}}")))
+ }
+}
+{{~else~}}
+
+impl {{bean.name}}{
+ pub fn new(mut buf: &mut ByteBuf) -> Result<{{bean.name}}, LubanError> {
+ {{~ for field in hierarchy_fields ~}}
+ {{deserialize field.name 'buf' field.ctype}}
+ {{~end~}}
+
+ Ok({{bean.name}} { {{ for field in hierarchy_fields }}{{field.name}}, {{end}}})
+ }
+
+ pub const __ID__: i32 = {{bean.id}};
+}
+{{~end~}}
+
+{{~end~}}
+{{~ for table in __mod.tables
+ key_type = declaring_type_name table.key_ttype
+ if table.value_ttype.def_bean.is_abstract_type
+ value_type = declaring_type_name table.value_ttype
+ else
+ value_type = "std::sync::Arc<"+declaring_type_name table.value_ttype+">"
+ end
+ name = table.name
+ map_type = "std::collections::HashMap<"+key_type+", "+value_type+">"
+~}}
+{{
+
+ func index_type_name
+ ret (declaring_type_name $0.type)
+ end
+
+ func table_union_map_type_name
+ ret 'std::collections::HashMap<(' + (array.each table.index_list @index_type_name | array.join ', ') + '), ' + value_type + '>'
+ end
+
+ func table_key_list
+ varName = $0
+ indexList = table.index_list |array.each do; ret varName + '.' + (format_property_name __code_style $0.index_field.name); end;
+ ret array.join indexList ', '
+ end
+
+ func table_param_def_list
+ paramList = table.index_list |array.each do; ret (declaring_type_name $0.type) + ' ' + $0.index_field.name; end
+ ret array.join paramList ', '
+ end
+
+ func table_param_name_list
+ paramList = table.index_list |array.each do; ret $0.index_field.name; end
+ ret array.join paramList ', '
+ end
+}}
+{{~ if table.comment != '' ~}}
+///{{table.comment | html.escape}}
+{{~end~}}
+#[derive(Debug)]
+pub struct {{table.name}} {
+ {{~if table.is_map_table ~}}
+ pub data_list: Vec<{{value_type}}>,
+ pub data_map: {{map_type}},
+ {{~else if table.is_list_table ~}}
+ pub data_list: Vec<{{value_type}}>,
+ {{~if table.is_union_index~}}
+ pub data_map_union: {{table_union_map_type_name}},
+ {{~else if !table.index_list.empty?~}}
+ {{~for idx in table.index_list~}}
+ pub data_map_{{idx.index_field.name}}: std::collections::HashMap<{{declaring_type_name idx.type}}, {{value_type}}>,
+ {{~end~}}
+ {{~end~}}
+ {{~else~}}
+ pub data: {{declaring_type_name table.value_ttype}},
+ {{~end~}}
+}
+{{~if table.is_map_table ~}}
+
+impl {{name}} {
+ pub fn new(mut buf: ByteBuf) -> Result, LubanError> {
+ let mut data_map: {{map_type}} = Default::default();
+ let mut data_list: Vec<{{value_type}}> = vec![];
+
+ for x in (0..buf.read_size()).rev() {
+ {{deserialize_row "row" "buf" table.value_ttype}}
+ data_list.push(row.clone());
+ {{~ if table.value_ttype.def_bean.is_abstract_type ~}}
+ let key = >::get_base(std::ops::Deref::deref(&row))?;
+ data_map.insert(key.{{getter_name table.index_field.name}}().clone(), row.clone());
+ {{~else~}}
+ data_map.insert(row.{{table.index_field.name}}.clone(), row.clone());
+ {{~end~}}
+ }
+
+ Ok(std::sync::Arc::new({{name}} { data_map, data_list }))
+ }
+
+ pub fn get(&self, key: &{{key_type}}) -> Option<{{value_type}}> {
+ self.data_map.get(key).map(|x| x.clone())
+ }
+}
+
+impl std::ops::Index<{{key_type}}> for {{name}} {
+ type Output = {{value_type}};
+
+ fn index(&self, index: {{key_type}}) -> &Self::Output {
+ &self.data_map.get(&index).unwrap()
+ }
+}
+{{~else if table.is_list_table ~}}
+
+impl {{name}} {
+ pub fn new(mut buf: ByteBuf) -> Result, LubanError> {
+ let mut data_list: Vec<{{value_type}}> = vec![];
+
+ for x in (0..buf.read_size()).rev() {
+ {{deserialize_row "row" "buf" table.value_ttype}}
+ data_list.push(row.clone());
+ }
+ {{~if table.is_union_index~}}
+ let mut data_map_union: {{table_union_map_type_name}} = Default::default();
+ for x in &data_list {
+ data_map_union.insert(({{table_key_list "x"}}.clone()), x.clone());
+ }
+ {{~else if !table.index_list.empty?~}}
+ {{~for idx in table.index_list~}}
+ let mut data_map_{{idx.index_field.name}}: std::collections::HashMap<{{declaring_type_name idx.index_field.ctype}}, {{value_type}}> = Default::default();
+ {{~end~}}
+ for x in &data_list {
+ {{~for idx in table.index_list~}}
+ data_map_{{idx.index_field.name}}.insert(x.{{format_property_name __code_style idx.index_field.name}}.clone(), x.clone());
+ {{~end~}}
+ }
+ {{~end~}}
+
+ Ok(std::sync::Arc::new({{table.name}} {
+ data_list,
+{{~if table.is_union_index~}}
+ data_map_union,
+{{~else if !table.index_list.empty?~}}
+ {{~for idx in table.index_list~}}
+ data_map_{{idx.index_field.name}},
+ {{~end~}}
+{{~end~}}
+ }))
+ }
+
+ {{~if table.is_union_index~}}
+ pub fn get(&self, key: &({{array.each table.index_list @index_type_name | array.join ', '}})) -> Option<{{value_type}}> {
+ self.data_map_union.get(key).map(|x| x.clone())
+ }
+ {{~else if !table.index_list.empty? ~}}
+ {{~for idx in table.index_list
+ index = format_property_name __code_style idx.index_field.name
+ ~}}
+ pub fn get_by_{{index}}(&self, key: &{{declaring_type_name idx.type}}) -> Option<{{value_type}}> {
+ self.data_map_{{index}}.get(key).map(|x| x.clone())
+ }
+ {{~end~}}
+ {{~end~}}
+}
+{{~else~}}
+
+impl {{name}} {
+ pub fn new(mut buf: ByteBuf) -> Result, LubanError> {
+ let n = buf.read_size();
+ if n != 1 { return Err(LubanError::Table(format!("table mode=one, but size != 1"))); }
+ {{deserialize 'data' 'buf' table.value_ttype}}
+ Ok(std::sync::Arc::new({{name}} { data }))
+ }
+}
+{{~end~}}
+
+{{~end~}}
diff --git a/Luban/Templates/rust-bin/toml.sbn b/Luban/Templates/rust-bin/toml.sbn
new file mode 100644
index 0000000..6345181
--- /dev/null
+++ b/Luban/Templates/rust-bin/toml.sbn
@@ -0,0 +1,11 @@
+[package]
+name = "{{__name}}"
+version = "0.1.0"
+edition = "2021"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
+bitflags = { version = "2.5.x" , features = ["serde"] }
+macros = { path = "../macros" }
+luban_lib = { path = "../../luban_lib" }
\ No newline at end of file
diff --git a/Luban/Templates/rust-json/lib.sbn b/Luban/Templates/rust-json/lib.sbn
new file mode 100644
index 0000000..8f906cc
--- /dev/null
+++ b/Luban/Templates/rust-json/lib.sbn
@@ -0,0 +1,51 @@
+pub mod prelude{
+ pub use crate::*;
+{{~ for ns in __ns ~}}
+ pub use {{ns}}::*;
+{{~end~}}
+}
+{{~ if __polymorphic_beans.count != 0 ~}}
+
+type AbstractBase = dyn std::any::Any + Sync + Send;
+
+pub trait GetBase<'a, T> {
+ fn get_base(&'a self) -> Result;
+}
+{{~end~}}
+
+#[derive(Debug)]
+pub enum LubanError {
+ Loader(String),
+ Table(String),
+ Bean(String),
+ Polymorphic(String),
+ Unknown(String),
+}
+
+impl std::fmt::Display for LubanError {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ f.write_str(match self {
+ LubanError::Loader(msg) |
+ LubanError::Table(msg) |
+ LubanError::Bean(msg) |
+ LubanError::Polymorphic(msg) |
+ LubanError::Unknown(msg) => msg,
+ })
+ }
+}
+
+pub struct Tables{
+{{~ for table in __tables ~}}
+ pub {{table.name}}: std::sync::Arc<{{full_name table}}>,
+{{~end~}}
+}
+
+impl Tables {
+ pub fn new Result>(loader: T) -> Result {
+ Ok(Tables {
+{{~ for table in __tables ~}}
+ {{table.name}}: {{full_name table}}::new(&loader("{{table.output_data_file}}")?)?,
+{{~end~}}
+ })
+ }
+}
\ No newline at end of file
diff --git a/Luban/Templates/rust-json/mod.sbn b/Luban/Templates/rust-json/mod.sbn
new file mode 100644
index 0000000..fc2f0be
--- /dev/null
+++ b/Luban/Templates/rust-json/mod.sbn
@@ -0,0 +1,287 @@
+{{~ for mod in __mod.sub_mods ~}}
+pub mod {{mod.name}};
+{{~end~}}
+
+{{~ if __mod.name != '' ~}}
+use super::*;
+{{~end~}}
+use serde::Deserialize;
+
+{{~ for enum in __mod.enums ~}}
+{{~ if enum.comment != '' ~}}
+///{{enum.comment | html.escape}}
+{{~end~}}
+{{~ if enum.is_flags ~}}
+bitflags::bitflags!{
+ #[derive(Debug, Hash, Eq, PartialEq)]
+ pub struct {{enum.name}} : u32 {
+ {{~ for item in enum.items ~}}
+ {{~if item.comment_or_alias != '' ~}}
+ ///{{item.comment_or_alias | html.escape}}
+ {{~end~}}
+ const {{item.name}} = {{item.int_value}};
+ {{~end~}}
+ }
+}
+{{~else~}}
+#[derive(Deserialize, Debug, Hash, Eq, PartialEq, macros::EnumFromNum)]
+pub enum {{enum.name}} {
+ {{~ for item in enum.items ~}}
+{{~if item.comment_or_alias != '' ~}}
+ ///{{item.comment_or_alias | html.escape}}
+{{~end~}}
+ {{item.name}} = {{item.value}},
+ {{~end~}}
+ {{~if enum.items.empty?~}}
+ None
+ {{~end~}}
+}
+
+impl From for {{enum.name}} {
+ fn from(value: i32) -> Self {
+ match value {
+ {{~ for item in enum.items ~}}
+ {{item.value}} => {{enum.name}}::{{item.name}},
+ {{~end~}}
+ _ => panic!("Invalid value for {{enum.name}}:{}", value),
+ }
+ }
+}
+
+{{~end~}}
+{{~end~}}
+{{~ for bean in __mod.beans
+ hierarchy_fields = bean.hierarchy_export_fields
+~}}
+#[derive(Debug)]
+{{~if bean.parent != ''~}}
+#[derive(macros::TryIntoBase)]
+{{~end~}}
+pub struct {{bean.name}} {
+ {{~ for field in hierarchy_fields ~}}
+{{~if field.comment != '' ~}}
+ /// {{escape_comment field.comment}}
+{{~end~}}
+ pub {{field.name}}: {{declaring_type_name field.ctype}},
+ {{~end~}}
+}
+{{~if bean.is_abstract_type~}}
+
+impl {{bean.name}} {
+ pub fn new(json: &serde_json::Value) -> Result, LubanError> {
+ let type_id = json["$type"].as_str().unwrap();
+ match type_id {
+ {{~for child in bean.hierarchy_not_abstract_children~}}
+ "{{impl_data_type child bean}}" => Ok(std::sync::Arc::new({{full_name child}}::new(json)?)),
+ {{~end~}}
+ _ => Err(LubanError::Bean(format!("Invalid type for {{bean.name}}:{}", type_id)))
+ }
+ }
+}
+
+pub trait T{{bean.name}} {
+ {{~ for field in hierarchy_fields ~}}
+ fn {{getter_name field.name}}(&self) -> &{{declaring_type_name field.ctype}};
+ {{~end~}}
+}
+{{~for child in bean.hierarchy_not_abstract_children~}}
+
+impl {{base_trait_name bean}} for {{full_name child}} {
+ {{~ for field in hierarchy_fields ~}}
+ fn {{getter_name field.name}}(&self) -> &{{declaring_type_name field.ctype}} {
+ &self.{{field.name}}
+ }
+ {{~end~}}
+}
+{{~end~}}
+
+impl<'a> GetBase<'a, &'a dyn {{base_trait_name bean}}> for AbstractBase {
+ fn get_base(&'a self) -> Result<&'a dyn {{base_trait_name bean}}, LubanError> {
+ {{~for child in bean.hierarchy_not_abstract_children~}}
+ let base: Result<&{{full_name child}}, _> = self.try_into();
+ if let Ok(r) = base {
+ return Ok(r);
+ }
+ {{~end~}}
+
+ Err(LubanError::Polymorphic(format!("Invalid type for {{bean.name}}")))
+ }
+}
+{{~else~}}
+
+impl {{bean.name}}{
+ pub fn new(json: &serde_json::Value) -> Result<{{bean.name}}, LubanError> {
+ {{~ for field in hierarchy_fields ~}}
+ {{deserialize_field field.name 'json' field.ctype}}
+ {{~end~}}
+
+ Ok({{bean.name}} { {{ for field in hierarchy_fields }}{{field.name}}, {{end}}})
+ }
+}
+{{~end~}}
+
+{{~end~}}
+{{~ for table in __mod.tables
+ key_type = declaring_type_name table.key_ttype
+ if table.value_ttype.def_bean.is_abstract_type
+ value_type = declaring_type_name table.value_ttype
+ else
+ value_type = "std::sync::Arc<"+declaring_type_name table.value_ttype+">"
+ end
+ name = table.name
+ map_type = "std::collections::HashMap<"+key_type+", "+value_type+">"
+~}}
+{{
+
+ func index_type_name
+ ret (declaring_type_name $0.type)
+ end
+
+ func table_union_map_type_name
+ ret 'std::collections::HashMap<(' + (array.each table.index_list @index_type_name | array.join ', ') + '), ' + value_type + '>'
+ end
+
+ func table_key_list
+ varName = $0
+ indexList = table.index_list |array.each do; ret varName + '.' + (format_property_name __code_style $0.index_field.name); end;
+ ret array.join indexList ', '
+ end
+
+ func table_param_def_list
+ paramList = table.index_list |array.each do; ret (declaring_type_name $0.type) + ' ' + $0.index_field.name; end
+ ret array.join paramList ', '
+ end
+
+ func table_param_name_list
+ paramList = table.index_list |array.each do; ret $0.index_field.name; end
+ ret array.join paramList ', '
+ end
+}}
+{{~ if table.comment != '' ~}}
+///{{table.comment | html.escape}}
+{{~end~}}
+#[derive(Debug)]
+pub struct {{table.name}} {
+ {{~if table.is_map_table ~}}
+ pub data_list: Vec<{{value_type}}>,
+ pub data_map: {{map_type}},
+ {{~else if table.is_list_table ~}}
+ pub data_list: Vec<{{value_type}}>,
+ {{~if table.is_union_index~}}
+ pub data_map_union: {{table_union_map_type_name}},
+ {{~else if !table.index_list.empty?~}}
+ {{~for idx in table.index_list~}}
+ pub data_map_{{idx.index_field.name}}: std::collections::HashMap<{{declaring_type_name idx.type}}, {{value_type}}>,
+ {{~end~}}
+ {{~end~}}
+ {{~else~}}
+ pub data: {{declaring_type_name table.value_ttype}},
+ {{~end~}}
+}
+{{~if table.is_map_table ~}}
+
+impl {{name}} {
+ pub fn new(json: &serde_json::Value) -> Result, LubanError> {
+ let mut data_map: {{map_type}} = Default::default();
+ let mut data_list: Vec<{{value_type}}> = vec![];
+
+ for x in json.as_array().unwrap() {
+ {{~ if table.value_ttype.is_bean ~}}
+ {{deserialize_row "row" "x" table.value_ttype}}
+ {{~else~}}
+ let row: {{value_type}} = std::sync::Arc::new(serde_json::from_value(x.clone()).unwrap());
+ {{~end~}}
+ data_list.push(row.clone());
+ {{~ if table.value_ttype.def_bean.is_abstract_type ~}}
+ let key = >::get_base(std::ops::Deref::deref(&row))?;
+ data_map.insert(key.{{getter_name table.index_field.name}}().clone(), row.clone());
+ {{~else~}}
+ data_map.insert(row.{{table.index_field.name}}.clone(), row.clone());
+ {{~end~}}
+ }
+
+ Ok(std::sync::Arc::new({{name}} { data_map, data_list }))
+ }
+
+ pub fn get(&self, key: &{{key_type}}) -> Option<{{value_type}}> {
+ self.data_map.get(key).map(|x| x.clone())
+ }
+}
+
+impl std::ops::Index<{{key_type}}> for {{name}} {
+ type Output = {{value_type}};
+
+ fn index(&self, index: {{key_type}}) -> &Self::Output {
+ &self.data_map.get(&index).unwrap()
+ }
+}
+{{~else if table.is_list_table ~}}
+
+impl {{name}} {
+ pub fn new(json: &serde_json::Value) -> Result, LubanError> {
+ let mut data_list: Vec<{{value_type}}> = vec![];
+
+ for x in json.as_array().unwrap() {
+ {{~ if table.value_ttype.is_bean ~}}
+ {{deserialize_row "row" "x" table.value_ttype}}
+ {{~else~}}
+ let row: {{value_type}} = std::sync::Arc::new(serde_json::from_value(x.clone()).unwrap());
+ {{~end~}}
+ data_list.push(row.clone());
+ }
+ {{~if table.is_union_index~}}
+ let mut data_map_union: {{table_union_map_type_name}} = Default::default();
+ for x in &data_list {
+ data_map_union.insert(({{table_key_list "x"}}.clone()), x.clone());
+ }
+ {{~else if !table.index_list.empty?~}}
+ {{~for idx in table.index_list~}}
+ let mut data_map_{{idx.index_field.name}}: std::collections::HashMap<{{declaring_type_name idx.index_field.ctype}}, {{value_type}}> = Default::default();
+ {{~end~}}
+ for x in &data_list {
+ {{~for idx in table.index_list~}}
+ data_map_{{idx.index_field.name}}.insert(x.{{format_property_name __code_style idx.index_field.name}}.clone(), x.clone());
+ {{~end~}}
+ }
+ {{~end~}}
+
+ Ok(std::sync::Arc::new({{table.name}} {
+ data_list,
+{{~if table.is_union_index~}}
+ data_map_union,
+{{~else if !table.index_list.empty?~}}
+ {{~for idx in table.index_list~}}
+ data_map_{{idx.index_field.name}},
+ {{~end~}}
+{{~end~}}
+ }))
+ }
+
+ {{~if table.is_union_index~}}
+ pub fn get(&self, key: &({{array.each table.index_list @index_type_name | array.join ', '}})) -> Option<{{value_type}}> {
+ self.data_map_union.get(key).map(|x| x.clone())
+ }
+ {{~else if !table.index_list.empty? ~}}
+ {{~for idx in table.index_list
+ index = format_property_name __code_style idx.index_field.name
+ ~}}
+ pub fn get_by_{{index}}(&self, key: &{{declaring_type_name idx.type}}) -> Option<{{value_type}}> {
+ self.data_map_{{index}}.get(key).map(|x| x.clone())
+ }
+ {{~end~}}
+ {{~end~}}
+}
+{{~else~}}
+
+impl {{name}} {
+ pub fn new(json: &serde_json::Value) -> Result, LubanError> {
+ let json = json.as_array().unwrap();
+ let n = json.len();
+ if n != 1 { return Err(LubanError::Table(format!("table mode=one, but size != 1"))); }
+ let data = {{full_name table.value_ttype.def_bean}}::new(&json[0])?;
+ Ok(std::sync::Arc::new({{name}} { data }))
+ }
+}
+{{~end~}}
+
+{{~end~}}
diff --git a/Luban/Templates/rust-json/toml.sbn b/Luban/Templates/rust-json/toml.sbn
new file mode 100644
index 0000000..40870c7
--- /dev/null
+++ b/Luban/Templates/rust-json/toml.sbn
@@ -0,0 +1,12 @@
+[package]
+name = "{{__name}}"
+version = "0.1.0"
+edition = "2021"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
+serde = { version = "1.0.x", features = ["derive"] }
+serde_json = "1.0.x"
+bitflags = { version = "2.5.x" , features = ["serde"]}
+macros = {path = "../macros"}
\ No newline at end of file
diff --git a/Luban/Templates/typescript-bin/schema.sbn b/Luban/Templates/typescript-bin/schema.sbn
new file mode 100644
index 0000000..254a33f
--- /dev/null
+++ b/Luban/Templates/typescript-bin/schema.sbn
@@ -0,0 +1,234 @@
+
+import ByteBuf from '../luban/ByteBuf'
+
+{{~for enum in __enums~}}
+{{namespace_with_grace_begin enum.namespace}}
+{{~if enum.comment != '' ~}}
+/**
+ * {{enum.comment | html.escape}}
+ */
+{{~end~}}
+export enum {{enum.name}} {
+ {{~for item in enum.items ~}}
+{{~if item.comment != '' ~}}
+ /**
+ * {{escape_comment item.comment}}
+ */
+{{~end~}}
+ {{item.name}} = {{item.value}},
+ {{~end~}}
+}
+
+{{namespace_with_grace_end enum.namespace}}
+{{~end~}}
+
+
+{{~
+func get_ref_name
+ ret (format_property_name __code_style $0.name) + '_ref'
+end
+
+func generate_resolve_field_ref
+ field = $0
+ fieldName = format_property_name __code_style field.name
+ refTable = get_ref_table field
+ if can_generate_ref field
+ tableName = refTable.name
+ if field.is_nullable
+ ret 'this.'+(get_ref_name field) + ' = this.' + fieldName + '!= null ? tables.' + tableName + '.get(this.' + fieldName + ') : null'
+ else
+ ret 'this.'+(get_ref_name field) + ' = tables.' + tableName + '.get(this.' + fieldName + ')'
+ end
+ else
+ if (is_field_bean_need_resolve_ref field)
+ ret 'this.'+fieldName + '?.resolve(tables);'
+ else if (is_field_array_like_need_resolve_ref field)
+ ret 'for (let _e of ' + 'this.' + fieldName + ') { _e?.resolve(tables); }'
+ else if (is_field_map_need_resolve_ref field)
+ ret 'for (let [_, _e] of ' + 'this.' + fieldName + ') { _e?.resolve(tables); }'
+ else
+ ret ''
+ end
+ end
+end
+~}}
+
+{{~for bean in __beans~}}
+
+{{namespace_with_grace_begin bean.namespace}}
+{{~if bean.comment != '' ~}}
+/**
+ * {{escape_comment bean.comment}}
+ */
+{{~end~}}
+export {{if bean.is_abstract_type}}abstract {{end}}class {{bean.name}}{{if bean.parent_def_type}} extends {{bean.parent_def_type.full_name}}{{end}} {
+{{~if bean.is_abstract_type~}}
+ static constructorFrom(_buf_: ByteBuf): {{bean.name}}{
+ switch (_buf_.readInt()) {
+ {{~ for child in bean.hierarchy_not_abstract_children~}}
+ case {{child.id}}: return new {{child.full_name}}(_buf_)
+ {{~end~}}
+ default: throw new Error()
+ }
+ }
+{{~end~}}
+
+ constructor(_buf_: ByteBuf) {
+ {{~if bean.parent_def_type~}}
+ super(_buf_)
+ {{~end~}}
+ {{~ for field in bean.export_fields ~}}
+ {{deserialize ('this.' + format_field_name __code_style field.name) '_buf_' field.ctype}}
+ {{~end~}}
+ }
+
+ {{~ for field in bean.export_fields ~}}
+{{~if field.comment != '' ~}}
+ /**
+ * {{escape_comment field.comment}}
+ */
+{{~end~}}
+ readonly {{format_field_name __code_style field.name}}: {{declaring_type_name field.ctype}}
+ {{~if can_generate_ref field~}}
+ {{get_ref_name field}}: {{declaring_type_name (get_ref_type field)}} | undefined
+ {{~end~}}
+ {{~end~}}
+
+ resolve(tables:{{__name}}) {
+ {{~if bean.parent_def_type~}}
+ super.resolve(tables)
+ {{~end~}}
+ {{~ for field in bean.export_fields ~}}
+ {{generate_resolve_field_ref field}}
+ {{~end~}}
+ }
+}
+
+{{namespace_with_grace_end bean.namespace}}
+
+{{~end~}}
+
+{{~for table in __tables
+ key_type = table.key_ttype
+ value_type = table.value_ttype
+~}}
+
+{{namespace_with_grace_begin table.namespace}}
+{{~if table.comment != '' ~}}
+/**
+ * {{escape_comment table.comment}}
+ */
+{{~end~}}
+export class {{table.name}} {
+ {{~if table.is_map_table ~}}
+ private _dataMap: Map<{{declaring_type_name key_type}}, {{declaring_type_name value_type}}>
+ private _dataList: {{declaring_type_name value_type}}[]
+ constructor(_buf_: ByteBuf) {
+ this._dataMap = new Map<{{declaring_type_name key_type}}, {{declaring_type_name value_type}}>()
+ this._dataList = []
+ for(let n = _buf_.readInt(); n > 0; n--) {
+ let _v: {{declaring_type_name value_type}}
+ {{deserialize '_v' '_buf_' value_type}}
+ this._dataList.push(_v)
+ this._dataMap.set(_v.{{format_field_name __code_style table.index_field.name}}, _v)
+ }
+ }
+
+ getDataMap(): Map<{{declaring_type_name key_type}}, {{declaring_type_name value_type}}> { return this._dataMap; }
+ getDataList(): {{declaring_type_name value_type}}[] { return this._dataList; }
+
+ get(key: {{declaring_type_name key_type}}): {{declaring_type_name value_type}} | undefined {
+ return this._dataMap.get(key);
+ }
+
+ resolve(tables:{{__name}}) {
+ for(let data of this._dataList)
+ {
+ data.resolve(tables)
+ }
+ }
+ {{~else if table.is_list_table ~}}
+ private _dataList: {{declaring_type_name value_type}}[]
+
+ constructor(_buf_: ByteBuf) {
+ this._dataList = []
+ for(let n = _buf_.readInt(); n > 0; n--) {
+ let _v: {{declaring_type_name value_type}}
+ {{deserialize '_v' '_buf_' value_type}}
+ this._dataList.push(_v)
+ }
+ }
+
+ getDataList(): {{declaring_type_name value_type}}[] { return this._dataList }
+
+ get(index: number): {{declaring_type_name value_type}} | undefined { return this._dataList[index] }
+
+ resolve(tables:{{__name}}) {
+ for(let data of this._dataList)
+ {
+ data.resolve(tables)
+ }
+ }
+ {{~else~}}
+
+ private _data: {{declaring_type_name value_type}}
+ constructor(_buf_: ByteBuf) {
+ if (_buf_.readInt() != 1) throw new Error('table mode=one, but size != 1')
+ {{deserialize 'this._data' '_buf_' value_type}}
+ }
+
+ getData(): {{declaring_type_name value_type}} { return this._data; }
+
+ {{~ for field in value_type.def_bean.hierarchy_export_fields ~}}
+{{~if field.comment != '' ~}}
+ /**
+ * {{escape_comment field.comment}}
+ */
+{{~end~}}
+ get {{format_field_name __code_style field.name}}(): {{declaring_type_name field.ctype}} { return this._data.{{format_field_name __code_style field.name}}; }
+ {{~if can_generate_ref field~}}
+ get {{format_field_name __code_style field.name}}_ref(): {{declaring_type_name (get_ref_type field)}} | undefined { return this._data.{{format_field_name __code_style field.name}}_ref; }
+ {{~end~}}
+ {{~end~}}
+
+ resolve(tables:{{__name}}) {
+ this._data.resolve(tables)
+ }
+ {{end}}
+}
+{{namespace_with_grace_end table.namespace}}
+
+{{~end~}}
+
+
+type ByteBufLoader = (file: string) => ByteBuf
+
+export class {{__name}} {
+ {{~ for table in __tables ~}}
+ private _{{table.name}}: {{table.full_name}}
+{{~if table.comment != '' ~}}
+ /**
+ * {{escape_comment table.comment}}
+ */
+{{~end~}}
+ get {{table.name}}(): {{table.full_name}} { return this._{{table.name}};}
+ {{~end~}}
+
+ static getTableNames(): string[] {
+ let names: string[] = [];
+ {{~for table in __tables ~}}
+ names.push('{{table.output_data_file}}');
+ {{~end~}}
+ return names;
+ }
+
+ constructor(loader: ByteBufLoader) {
+ {{~for table in __tables ~}}
+ this._{{table.name}} = new {{table.full_name}}(loader('{{table.output_data_file}}'))
+ {{~end~}}
+
+ {{~for table in __tables ~}}
+ this._{{table.name}}.resolve(this)
+ {{~end~}}
+ }
+}
diff --git a/Luban/Templates/typescript-json/schema.sbn b/Luban/Templates/typescript-json/schema.sbn
new file mode 100644
index 0000000..ed79422
--- /dev/null
+++ b/Luban/Templates/typescript-json/schema.sbn
@@ -0,0 +1,226 @@
+
+{{~for enum in __enums~}}
+{{namespace_with_grace_begin enum.namespace}}
+{{~if enum.comment != '' ~}}
+/**
+ * {{enum.comment | html.escape}}
+ */
+{{~end~}}
+export enum {{enum.name}} {
+ {{~for item in enum.items ~}}
+{{~if item.comment != '' ~}}
+ /**
+ * {{escape_comment item.comment}}
+ */
+{{~end~}}
+ {{item.name}} = {{item.value}},
+ {{~end~}}
+}
+
+{{namespace_with_grace_end enum.namespace}}
+{{~end~}}
+
+
+{{~
+func get_ref_name
+ ret (format_property_name __code_style $0.name) + '_ref'
+end
+
+func generate_resolve_field_ref
+ field = $0
+ fieldName = format_property_name __code_style field.name
+ refTable = get_ref_table field
+ if can_generate_ref field
+ tableName = refTable.name
+ if field.is_nullable
+ ret 'this.'+(get_ref_name field) + ' = this.' + fieldName + '!= null ? tables.' + tableName + '.get(this.' + fieldName + ') : null'
+ else
+ ret 'this.'+(get_ref_name field) + ' = tables.' + tableName + '.get(this.' + fieldName + ')'
+ end
+ else
+ if (is_field_bean_need_resolve_ref field)
+ ret 'this.'+fieldName + '?.resolve(tables);'
+ else if (is_field_array_like_need_resolve_ref field)
+ ret 'for (let _e of ' + 'this.' + fieldName + ') { _e?.resolve(tables); }'
+ else if (is_field_map_need_resolve_ref field)
+ ret 'for (let [_, _e] of ' + 'this.' + fieldName + ') { _e?.resolve(tables); }'
+ else
+ ret ''
+ end
+ end
+end
+~}}
+
+{{~for bean in __beans~}}
+
+{{namespace_with_grace_begin bean.namespace}}
+{{~if bean.comment != '' ~}}
+/**
+ * {{escape_comment bean.comment}}
+ */
+{{~end~}}
+export {{if bean.is_abstract_type}}abstract {{end}}class {{bean.name}}{{if bean.parent_def_type}} extends {{bean.parent_def_type.full_name}}{{end}} {
+{{~if bean.is_abstract_type~}}
+ static constructorFrom(_json_: any): {{bean.name}}{
+ switch (_json_["$type"]) {
+ {{~ for child in bean.hierarchy_not_abstract_children~}}
+ case '{{impl_data_type child bean}}': return new {{child.full_name}}(_json_)
+ {{~end~}}
+ default: throw new Error()
+ }
+ }
+{{~end~}}
+
+ constructor(_json_: any) {
+ {{~if bean.parent_def_type~}}
+ super(_json_)
+ {{~end~}}
+ {{~ for field in bean.export_fields ~}}
+ {{~if !field.ctype.is_nullable~}}
+ if (_json_.{{field.name}} === undefined) { throw new Error() }
+ {{~end~}}
+ {{deserialize ('this.' + format_field_name __code_style field.name) ( '_json_.' + field.name) field.ctype}}
+ {{~end~}}
+ }
+
+ {{~ for field in bean.export_fields ~}}
+{{~if field.comment != '' ~}}
+ /**
+ * {{escape_comment field.comment}}
+ */
+{{~end~}}
+ readonly {{format_field_name __code_style field.name}}: {{declaring_type_name field.ctype}}
+ {{~if can_generate_ref field~}}
+ {{get_ref_name field}}: {{declaring_type_name (get_ref_type field)}} | undefined
+ {{~end~}}
+ {{~end~}}
+
+ resolve(tables:{{__name}}) {
+ {{~if bean.parent_def_type~}}
+ super.resolve(tables)
+ {{~end~}}
+ {{~ for field in bean.export_fields ~}}
+ {{generate_resolve_field_ref field}}
+ {{~end~}}
+ }
+}
+
+{{namespace_with_grace_end bean.namespace}}
+
+{{~end~}}
+
+{{~for table in __tables
+ key_type = table.key_ttype
+ value_type = table.value_ttype
+~}}
+
+{{namespace_with_grace_begin table.namespace}}
+{{~if table.comment != '' ~}}
+/**
+ * {{escape_comment table.comment}}
+ */
+{{~end~}}
+export class {{table.name}} {
+ {{~if table.is_map_table ~}}
+ private _dataMap: Map<{{declaring_type_name key_type}}, {{declaring_type_name value_type}}>
+ private _dataList: {{declaring_type_name value_type}}[]
+ constructor(_json_: any) {
+ this._dataMap = new Map<{{declaring_type_name key_type}}, {{declaring_type_name value_type}}>()
+ this._dataList = []
+ for(var _json2_ of _json_) {
+ let _v: {{declaring_type_name value_type}}
+ {{deserialize '_v' '_json2_' value_type}}
+ this._dataList.push(_v)
+ this._dataMap.set(_v.{{format_field_name __code_style table.index_field.name}}, _v)
+ }
+ }
+
+ getDataMap(): Map<{{declaring_type_name key_type}}, {{declaring_type_name value_type}}> { return this._dataMap; }
+ getDataList(): {{declaring_type_name value_type}}[] { return this._dataList; }
+
+ get(key: {{declaring_type_name key_type}}): {{declaring_type_name value_type}} | undefined { return this._dataMap.get(key); }
+
+ resolve(tables:{{__name}}) {
+ for(let data of this._dataList)
+ {
+ data.resolve(tables)
+ }
+ }
+ {{~else if table.is_list_table ~}}
+ private _dataList: {{declaring_type_name value_type}}[]
+
+ constructor(_json_: any) {
+ this._dataList = []
+ for(var _json2_ of _json_) {
+ let _v: {{declaring_type_name value_type}}
+ {{deserialize '_v' '_json2_' value_type}}
+ this._dataList.push(_v)
+ }
+ }
+
+ getDataList(): {{declaring_type_name value_type}}[] { return this._dataList }
+
+ get(index: number): {{declaring_type_name value_type}} | undefined { return this._dataList[index] }
+
+ resolve(tables:{{__name}}) {
+ for(let data of this._dataList)
+ {
+ data.resolve(tables)
+ }
+ }
+ {{~else~}}
+
+ private _data: {{declaring_type_name value_type}}
+ constructor(_json_: any) {
+ if (_json_.length != 1) throw new Error('table mode=one, but size != 1')
+ {{deserialize 'this._data' '_json_[0]' value_type}}
+ }
+
+ getData(): {{declaring_type_name value_type}} { return this._data; }
+
+ {{~ for field in value_type.def_bean.hierarchy_export_fields ~}}
+{{~if field.comment != '' ~}}
+ /**
+ * {{escape_comment field.comment}}
+ */
+{{~end~}}
+ get {{format_field_name __code_style field.name}}(): {{declaring_type_name field.ctype}} { return this._data.{{format_field_name __code_style field.name}}; }
+ {{~if can_generate_ref field~}}
+ get {{format_field_name __code_style field.name}}_ref(): {{declaring_type_name (get_ref_type field)}} | undefined { return this._data.{{format_field_name __code_style field.name}}_ref; }
+ {{~end~}}
+ {{~end~}}
+
+ resolve(tables:{{__name}})
+ {
+ this._data.resolve(tables)
+ }
+ {{end}}
+}
+{{namespace_with_grace_end table.namespace}}
+
+{{~end~}}
+
+
+type JsonLoader = (file: string) => any
+
+export class {{__name}} {
+ {{~ for table in __tables ~}}
+ private _{{table.name}}: {{table.full_name}}
+{{~if table.comment != '' ~}}
+ /**
+ * {{escape_comment table.comment}}
+ */
+{{~end~}}
+ get {{table.name}}(): {{table.full_name}} { return this._{{table.name}};}
+ {{~end~}}
+
+ constructor(loader: JsonLoader) {
+ {{~for table in __tables ~}}
+ this._{{table.name}} = new {{table.full_name}}(loader('{{table.output_data_file}}'))
+ {{~end~}}
+
+ {{~for table in __tables ~}}
+ this._{{table.name}}.resolve(this)
+ {{~end~}}
+ }
+}
diff --git a/Luban/Templates/typescript-protobuf/schema.sbn b/Luban/Templates/typescript-protobuf/schema.sbn
new file mode 100644
index 0000000..0538d7b
--- /dev/null
+++ b/Luban/Templates/typescript-protobuf/schema.sbn
@@ -0,0 +1,31 @@
+import pb from 'pb';
+
+type BufLoader = (file: string) => Uint8Array;
+
+export class {{__name}} {
+ {{~ for table in __tables ~}}
+ private _{{table.name}}: pb.cfg.{{table.name}}
+{{~if table.comment != '' ~}}
+ /**
+ * {{escape_comment table.comment}}
+ */
+{{~end~}}
+ get {{table.name}}(): pb.cfg.{{table.name}} { return this._{{table.name}};}
+ {{~end~}}
+
+ static getTableNames(): string[] {
+ let names: string[] = [];
+ {{~for table in __tables ~}}
+ names.push('{{table.output_data_file}}');
+ {{~end~}}
+ return names;
+ }
+
+ constructor(loader: BufLoader) {
+ let buffer: Uint8Array;
+ {{~for table in __tables ~}}
+ buffer = loader('{{table.output_data_file}}');
+ this._{{table.name}} = pb.cfg.{{table.name}}.decode(buffer, buffer.length);
+ {{~end~}}
+ }
+}
diff --git a/Luban/Ude.NetStandard.dll b/Luban/Ude.NetStandard.dll
new file mode 100644
index 0000000..2cb9b2f
Binary files /dev/null and b/Luban/Ude.NetStandard.dll differ
diff --git a/Luban/YamlDotNet.NetCore.dll b/Luban/YamlDotNet.NetCore.dll
new file mode 100644
index 0000000..1c598d7
Binary files /dev/null and b/Luban/YamlDotNet.NetCore.dll differ
diff --git a/Luban/de/Neo.Lua.resources.dll b/Luban/de/Neo.Lua.resources.dll
new file mode 100644
index 0000000..69bb385
Binary files /dev/null and b/Luban/de/Neo.Lua.resources.dll differ
diff --git a/Luban/nlog.xml b/Luban/nlog.xml
new file mode 100644
index 0000000..8c390bc
--- /dev/null
+++ b/Luban/nlog.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/NBConfigBuilder/EPPlus.Interfaces.dll b/NBConfigBuilder/EPPlus.Interfaces.dll
deleted file mode 100644
index 8a69f81..0000000
Binary files a/NBConfigBuilder/EPPlus.Interfaces.dll and /dev/null differ
diff --git a/NBConfigBuilder/EPPlus.dll b/NBConfigBuilder/EPPlus.dll
deleted file mode 100644
index 6628025..0000000
Binary files a/NBConfigBuilder/EPPlus.dll and /dev/null differ
diff --git a/NBConfigBuilder/Microsoft.CodeAnalysis.CSharp.dll b/NBConfigBuilder/Microsoft.CodeAnalysis.CSharp.dll
deleted file mode 100644
index e2821ad..0000000
Binary files a/NBConfigBuilder/Microsoft.CodeAnalysis.CSharp.dll and /dev/null differ
diff --git a/NBConfigBuilder/Microsoft.CodeAnalysis.dll b/NBConfigBuilder/Microsoft.CodeAnalysis.dll
deleted file mode 100644
index d3f985e..0000000
Binary files a/NBConfigBuilder/Microsoft.CodeAnalysis.dll and /dev/null differ
diff --git a/NBConfigBuilder/Microsoft.Extensions.Configuration.Abstractions.dll b/NBConfigBuilder/Microsoft.Extensions.Configuration.Abstractions.dll
deleted file mode 100644
index a5ab313..0000000
Binary files a/NBConfigBuilder/Microsoft.Extensions.Configuration.Abstractions.dll and /dev/null differ
diff --git a/NBConfigBuilder/Microsoft.Extensions.Configuration.FileExtensions.dll b/NBConfigBuilder/Microsoft.Extensions.Configuration.FileExtensions.dll
deleted file mode 100644
index 19d8f5c..0000000
Binary files a/NBConfigBuilder/Microsoft.Extensions.Configuration.FileExtensions.dll and /dev/null differ
diff --git a/NBConfigBuilder/Microsoft.Extensions.Configuration.Json.dll b/NBConfigBuilder/Microsoft.Extensions.Configuration.Json.dll
deleted file mode 100644
index 9e50db0..0000000
Binary files a/NBConfigBuilder/Microsoft.Extensions.Configuration.Json.dll and /dev/null differ
diff --git a/NBConfigBuilder/Microsoft.Extensions.Configuration.dll b/NBConfigBuilder/Microsoft.Extensions.Configuration.dll
deleted file mode 100644
index d3e5c22..0000000
Binary files a/NBConfigBuilder/Microsoft.Extensions.Configuration.dll and /dev/null differ
diff --git a/NBConfigBuilder/Microsoft.Extensions.FileProviders.Abstractions.dll b/NBConfigBuilder/Microsoft.Extensions.FileProviders.Abstractions.dll
deleted file mode 100644
index f907206..0000000
Binary files a/NBConfigBuilder/Microsoft.Extensions.FileProviders.Abstractions.dll and /dev/null differ
diff --git a/NBConfigBuilder/Microsoft.Extensions.FileProviders.Physical.dll b/NBConfigBuilder/Microsoft.Extensions.FileProviders.Physical.dll
deleted file mode 100644
index 6fb7f47..0000000
Binary files a/NBConfigBuilder/Microsoft.Extensions.FileProviders.Physical.dll and /dev/null differ
diff --git a/NBConfigBuilder/Microsoft.Extensions.FileSystemGlobbing.dll b/NBConfigBuilder/Microsoft.Extensions.FileSystemGlobbing.dll
deleted file mode 100644
index e590735..0000000
Binary files a/NBConfigBuilder/Microsoft.Extensions.FileSystemGlobbing.dll and /dev/null differ
diff --git a/NBConfigBuilder/Microsoft.Extensions.Primitives.dll b/NBConfigBuilder/Microsoft.Extensions.Primitives.dll
deleted file mode 100644
index c24f2a0..0000000
Binary files a/NBConfigBuilder/Microsoft.Extensions.Primitives.dll and /dev/null differ
diff --git a/NBConfigBuilder/Microsoft.IO.RecyclableMemoryStream.dll b/NBConfigBuilder/Microsoft.IO.RecyclableMemoryStream.dll
deleted file mode 100644
index 6e0ea40..0000000
Binary files a/NBConfigBuilder/Microsoft.IO.RecyclableMemoryStream.dll and /dev/null differ
diff --git a/NBConfigBuilder/NBConfigBuilder.deps.json b/NBConfigBuilder/NBConfigBuilder.deps.json
deleted file mode 100644
index 804b791..0000000
--- a/NBConfigBuilder/NBConfigBuilder.deps.json
+++ /dev/null
@@ -1,516 +0,0 @@
-{
- "runtimeTarget": {
- "name": ".NETCoreApp,Version=v8.0",
- "signature": ""
- },
- "compilationOptions": {},
- "targets": {
- ".NETCoreApp,Version=v8.0": {
- "NBConfigBuilder/1.0.0": {
- "dependencies": {
- "EPPlus": "8.2.0",
- "Microsoft.CodeAnalysis.CSharp": "4.14.0",
- "NLog": "6.0.4",
- "Newtonsoft.Json": "13.0.4",
- "protobuf-net": "3.2.56"
- },
- "runtime": {
- "NBConfigBuilder.dll": {}
- }
- },
- "EPPlus/8.2.0": {
- "dependencies": {
- "EPPlus.Interfaces": "8.1.0",
- "Microsoft.Extensions.Configuration.Json": "8.0.1",
- "Microsoft.IO.RecyclableMemoryStream": "3.0.1",
- "System.ComponentModel.Annotations": "5.0.0",
- "System.Security.Cryptography.Pkcs": "8.0.1",
- "System.Security.Cryptography.Xml": "8.0.2",
- "System.Text.Encoding.CodePages": "8.0.0"
- },
- "runtime": {
- "lib/net8.0/EPPlus.dll": {
- "assemblyVersion": "8.2.0.0",
- "fileVersion": "8.2.0.0"
- }
- }
- },
- "EPPlus.Interfaces/8.1.0": {
- "runtime": {
- "lib/net8.0/EPPlus.Interfaces.dll": {
- "assemblyVersion": "8.1.0.0",
- "fileVersion": "8.1.0.0"
- }
- }
- },
- "Microsoft.CodeAnalysis.Analyzers/3.11.0": {},
- "Microsoft.CodeAnalysis.Common/4.14.0": {
- "dependencies": {
- "Microsoft.CodeAnalysis.Analyzers": "3.11.0",
- "System.Collections.Immutable": "9.0.0",
- "System.Reflection.Metadata": "9.0.0"
- },
- "runtime": {
- "lib/net8.0/Microsoft.CodeAnalysis.dll": {
- "assemblyVersion": "4.14.0.0",
- "fileVersion": "4.1400.25.26210"
- }
- },
- "resources": {
- "lib/net8.0/cs/Microsoft.CodeAnalysis.resources.dll": {
- "locale": "cs"
- },
- "lib/net8.0/de/Microsoft.CodeAnalysis.resources.dll": {
- "locale": "de"
- },
- "lib/net8.0/es/Microsoft.CodeAnalysis.resources.dll": {
- "locale": "es"
- },
- "lib/net8.0/fr/Microsoft.CodeAnalysis.resources.dll": {
- "locale": "fr"
- },
- "lib/net8.0/it/Microsoft.CodeAnalysis.resources.dll": {
- "locale": "it"
- },
- "lib/net8.0/ja/Microsoft.CodeAnalysis.resources.dll": {
- "locale": "ja"
- },
- "lib/net8.0/ko/Microsoft.CodeAnalysis.resources.dll": {
- "locale": "ko"
- },
- "lib/net8.0/pl/Microsoft.CodeAnalysis.resources.dll": {
- "locale": "pl"
- },
- "lib/net8.0/pt-BR/Microsoft.CodeAnalysis.resources.dll": {
- "locale": "pt-BR"
- },
- "lib/net8.0/ru/Microsoft.CodeAnalysis.resources.dll": {
- "locale": "ru"
- },
- "lib/net8.0/tr/Microsoft.CodeAnalysis.resources.dll": {
- "locale": "tr"
- },
- "lib/net8.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll": {
- "locale": "zh-Hans"
- },
- "lib/net8.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll": {
- "locale": "zh-Hant"
- }
- }
- },
- "Microsoft.CodeAnalysis.CSharp/4.14.0": {
- "dependencies": {
- "Microsoft.CodeAnalysis.Analyzers": "3.11.0",
- "Microsoft.CodeAnalysis.Common": "4.14.0",
- "System.Collections.Immutable": "9.0.0",
- "System.Reflection.Metadata": "9.0.0"
- },
- "runtime": {
- "lib/net8.0/Microsoft.CodeAnalysis.CSharp.dll": {
- "assemblyVersion": "4.14.0.0",
- "fileVersion": "4.1400.25.26210"
- }
- },
- "resources": {
- "lib/net8.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll": {
- "locale": "cs"
- },
- "lib/net8.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll": {
- "locale": "de"
- },
- "lib/net8.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll": {
- "locale": "es"
- },
- "lib/net8.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll": {
- "locale": "fr"
- },
- "lib/net8.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll": {
- "locale": "it"
- },
- "lib/net8.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll": {
- "locale": "ja"
- },
- "lib/net8.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll": {
- "locale": "ko"
- },
- "lib/net8.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll": {
- "locale": "pl"
- },
- "lib/net8.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll": {
- "locale": "pt-BR"
- },
- "lib/net8.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll": {
- "locale": "ru"
- },
- "lib/net8.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll": {
- "locale": "tr"
- },
- "lib/net8.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll": {
- "locale": "zh-Hans"
- },
- "lib/net8.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll": {
- "locale": "zh-Hant"
- }
- }
- },
- "Microsoft.Extensions.Configuration/8.0.0": {
- "dependencies": {
- "Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
- "Microsoft.Extensions.Primitives": "8.0.0"
- },
- "runtime": {
- "lib/net8.0/Microsoft.Extensions.Configuration.dll": {
- "assemblyVersion": "8.0.0.0",
- "fileVersion": "8.0.23.53103"
- }
- }
- },
- "Microsoft.Extensions.Configuration.Abstractions/8.0.0": {
- "dependencies": {
- "Microsoft.Extensions.Primitives": "8.0.0"
- },
- "runtime": {
- "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll": {
- "assemblyVersion": "8.0.0.0",
- "fileVersion": "8.0.23.53103"
- }
- }
- },
- "Microsoft.Extensions.Configuration.FileExtensions/8.0.1": {
- "dependencies": {
- "Microsoft.Extensions.Configuration": "8.0.0",
- "Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
- "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0",
- "Microsoft.Extensions.FileProviders.Physical": "8.0.0",
- "Microsoft.Extensions.Primitives": "8.0.0"
- },
- "runtime": {
- "lib/net8.0/Microsoft.Extensions.Configuration.FileExtensions.dll": {
- "assemblyVersion": "8.0.0.0",
- "fileVersion": "8.0.724.31311"
- }
- }
- },
- "Microsoft.Extensions.Configuration.Json/8.0.1": {
- "dependencies": {
- "Microsoft.Extensions.Configuration": "8.0.0",
- "Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
- "Microsoft.Extensions.Configuration.FileExtensions": "8.0.1",
- "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0"
- },
- "runtime": {
- "lib/net8.0/Microsoft.Extensions.Configuration.Json.dll": {
- "assemblyVersion": "8.0.0.0",
- "fileVersion": "8.0.1024.46610"
- }
- }
- },
- "Microsoft.Extensions.FileProviders.Abstractions/8.0.0": {
- "dependencies": {
- "Microsoft.Extensions.Primitives": "8.0.0"
- },
- "runtime": {
- "lib/net8.0/Microsoft.Extensions.FileProviders.Abstractions.dll": {
- "assemblyVersion": "8.0.0.0",
- "fileVersion": "8.0.23.53103"
- }
- }
- },
- "Microsoft.Extensions.FileProviders.Physical/8.0.0": {
- "dependencies": {
- "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0",
- "Microsoft.Extensions.FileSystemGlobbing": "8.0.0",
- "Microsoft.Extensions.Primitives": "8.0.0"
- },
- "runtime": {
- "lib/net8.0/Microsoft.Extensions.FileProviders.Physical.dll": {
- "assemblyVersion": "8.0.0.0",
- "fileVersion": "8.0.23.53103"
- }
- }
- },
- "Microsoft.Extensions.FileSystemGlobbing/8.0.0": {
- "runtime": {
- "lib/net8.0/Microsoft.Extensions.FileSystemGlobbing.dll": {
- "assemblyVersion": "8.0.0.0",
- "fileVersion": "8.0.23.53103"
- }
- }
- },
- "Microsoft.Extensions.Primitives/8.0.0": {
- "runtime": {
- "lib/net8.0/Microsoft.Extensions.Primitives.dll": {
- "assemblyVersion": "8.0.0.0",
- "fileVersion": "8.0.23.53103"
- }
- }
- },
- "Microsoft.IO.RecyclableMemoryStream/3.0.1": {
- "runtime": {
- "lib/net6.0/Microsoft.IO.RecyclableMemoryStream.dll": {
- "assemblyVersion": "3.0.1.0",
- "fileVersion": "3.0.1.0"
- }
- }
- },
- "Newtonsoft.Json/13.0.4": {
- "runtime": {
- "lib/net6.0/Newtonsoft.Json.dll": {
- "assemblyVersion": "13.0.0.0",
- "fileVersion": "13.0.4.30916"
- }
- }
- },
- "NLog/6.0.4": {
- "runtime": {
- "lib/netstandard2.1/NLog.dll": {
- "assemblyVersion": "6.0.0.0",
- "fileVersion": "6.0.4.4534"
- }
- }
- },
- "protobuf-net/3.2.56": {
- "dependencies": {
- "protobuf-net.Core": "3.2.56"
- },
- "runtime": {
- "lib/net8.0/protobuf-net.dll": {
- "assemblyVersion": "3.0.0.0",
- "fileVersion": "3.2.56.57311"
- }
- }
- },
- "protobuf-net.Core/3.2.56": {
- "runtime": {
- "lib/net8.0/protobuf-net.Core.dll": {
- "assemblyVersion": "3.0.0.0",
- "fileVersion": "3.2.56.57311"
- }
- }
- },
- "System.Collections.Immutable/9.0.0": {
- "runtime": {
- "lib/net8.0/System.Collections.Immutable.dll": {
- "assemblyVersion": "9.0.0.0",
- "fileVersion": "9.0.24.52809"
- }
- }
- },
- "System.ComponentModel.Annotations/5.0.0": {},
- "System.Reflection.Metadata/9.0.0": {
- "dependencies": {
- "System.Collections.Immutable": "9.0.0"
- },
- "runtime": {
- "lib/net8.0/System.Reflection.Metadata.dll": {
- "assemblyVersion": "9.0.0.0",
- "fileVersion": "9.0.24.52809"
- }
- }
- },
- "System.Security.Cryptography.Pkcs/8.0.1": {
- "runtime": {
- "lib/net8.0/System.Security.Cryptography.Pkcs.dll": {
- "assemblyVersion": "8.0.0.0",
- "fileVersion": "8.0.1024.46610"
- }
- },
- "runtimeTargets": {
- "runtimes/win/lib/net8.0/System.Security.Cryptography.Pkcs.dll": {
- "rid": "win",
- "assetType": "runtime",
- "assemblyVersion": "8.0.0.0",
- "fileVersion": "8.0.1024.46610"
- }
- }
- },
- "System.Security.Cryptography.Xml/8.0.2": {
- "dependencies": {
- "System.Security.Cryptography.Pkcs": "8.0.1"
- },
- "runtime": {
- "lib/net8.0/System.Security.Cryptography.Xml.dll": {
- "assemblyVersion": "8.0.0.0",
- "fileVersion": "8.0.1024.46610"
- }
- }
- },
- "System.Text.Encoding.CodePages/8.0.0": {}
- }
- },
- "libraries": {
- "NBConfigBuilder/1.0.0": {
- "type": "project",
- "serviceable": false,
- "sha512": ""
- },
- "EPPlus/8.2.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-UFAjVAP4UyR9rPL/adHw1uezX1gDbt2mM7Bkb7cMmqbw51y0HFKyLoHpsjvNzKRL/u05vW4pHJAmkuvrPBcgSw==",
- "path": "epplus/8.2.0",
- "hashPath": "epplus.8.2.0.nupkg.sha512"
- },
- "EPPlus.Interfaces/8.1.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-Nfc7ehsn8Sb8Ed8KYYuOxqt8gWqmy2Vhts5nfLMw3zISi+aZFwyW+k9s3FOpVuW91VDSrhVAId9brYtz9NnmKA==",
- "path": "epplus.interfaces/8.1.0",
- "hashPath": "epplus.interfaces.8.1.0.nupkg.sha512"
- },
- "Microsoft.CodeAnalysis.Analyzers/3.11.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-v/EW3UE8/lbEYHoC2Qq7AR/DnmvpgdtAMndfQNmpuIMx/Mto8L5JnuCfdBYtgvalQOtfNCnxFejxuRrryvUTsg==",
- "path": "microsoft.codeanalysis.analyzers/3.11.0",
- "hashPath": "microsoft.codeanalysis.analyzers.3.11.0.nupkg.sha512"
- },
- "Microsoft.CodeAnalysis.Common/4.14.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-PC3tuwZYnC+idaPuoC/AZpEdwrtX7qFpmnrfQkgobGIWiYmGi5MCRtl5mx6QrfMGQpK78X2lfIEoZDLg/qnuHg==",
- "path": "microsoft.codeanalysis.common/4.14.0",
- "hashPath": "microsoft.codeanalysis.common.4.14.0.nupkg.sha512"
- },
- "Microsoft.CodeAnalysis.CSharp/4.14.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-568a6wcTivauIhbeWcCwfWwIn7UV7MeHEBvFB2uzGIpM2OhJ4eM/FZ8KS0yhPoNxnSpjGzz7x7CIjTxhslojQA==",
- "path": "microsoft.codeanalysis.csharp/4.14.0",
- "hashPath": "microsoft.codeanalysis.csharp.4.14.0.nupkg.sha512"
- },
- "Microsoft.Extensions.Configuration/8.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-0J/9YNXTMWSZP2p2+nvl8p71zpSwokZXZuJW+VjdErkegAnFdO1XlqtA62SJtgVYHdKu3uPxJHcMR/r35HwFBA==",
- "path": "microsoft.extensions.configuration/8.0.0",
- "hashPath": "microsoft.extensions.configuration.8.0.0.nupkg.sha512"
- },
- "Microsoft.Extensions.Configuration.Abstractions/8.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-3lE/iLSutpgX1CC0NOW70FJoGARRHbyKmG7dc0klnUZ9Dd9hS6N/POPWhKhMLCEuNN5nXEY5agmlFtH562vqhQ==",
- "path": "microsoft.extensions.configuration.abstractions/8.0.0",
- "hashPath": "microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512"
- },
- "Microsoft.Extensions.Configuration.FileExtensions/8.0.1": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-EJzSNO9oaAXnTdtdNO6npPRsIIeZCBSNmdQ091VDO7fBiOtJAAeEq6dtrVXIi3ZyjC5XRSAtVvF8SzcneRHqKQ==",
- "path": "microsoft.extensions.configuration.fileextensions/8.0.1",
- "hashPath": "microsoft.extensions.configuration.fileextensions.8.0.1.nupkg.sha512"
- },
- "Microsoft.Extensions.Configuration.Json/8.0.1": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-L89DLNuimOghjV3tLx0ArFDwVEJD6+uGB3BMCMX01kaLzXkaXHb2021xOMl2QOxUxbdePKUZsUY7n2UUkycjRg==",
- "path": "microsoft.extensions.configuration.json/8.0.1",
- "hashPath": "microsoft.extensions.configuration.json.8.0.1.nupkg.sha512"
- },
- "Microsoft.Extensions.FileProviders.Abstractions/8.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-ZbaMlhJlpisjuWbvXr4LdAst/1XxH3vZ6A0BsgTphZ2L4PGuxRLz7Jr/S7mkAAnOn78Vu0fKhEgNF5JO3zfjqQ==",
- "path": "microsoft.extensions.fileproviders.abstractions/8.0.0",
- "hashPath": "microsoft.extensions.fileproviders.abstractions.8.0.0.nupkg.sha512"
- },
- "Microsoft.Extensions.FileProviders.Physical/8.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-UboiXxpPUpwulHvIAVE36Knq0VSHaAmfrFkegLyBZeaADuKezJ/AIXYAW8F5GBlGk/VaibN2k/Zn1ca8YAfVdA==",
- "path": "microsoft.extensions.fileproviders.physical/8.0.0",
- "hashPath": "microsoft.extensions.fileproviders.physical.8.0.0.nupkg.sha512"
- },
- "Microsoft.Extensions.FileSystemGlobbing/8.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-OK+670i7esqlQrPjdIKRbsyMCe9g5kSLpRRQGSr4Q58AOYEe/hCnfLZprh7viNisSUUQZmMrbbuDaIrP+V1ebQ==",
- "path": "microsoft.extensions.filesystemglobbing/8.0.0",
- "hashPath": "microsoft.extensions.filesystemglobbing.8.0.0.nupkg.sha512"
- },
- "Microsoft.Extensions.Primitives/8.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-bXJEZrW9ny8vjMF1JV253WeLhpEVzFo1lyaZu1vQ4ZxWUlVvknZ/+ftFgVheLubb4eZPSwwxBeqS1JkCOjxd8g==",
- "path": "microsoft.extensions.primitives/8.0.0",
- "hashPath": "microsoft.extensions.primitives.8.0.0.nupkg.sha512"
- },
- "Microsoft.IO.RecyclableMemoryStream/3.0.1": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-s/s20YTVY9r9TPfTrN5g8zPF1YhwxyqO6PxUkrYTGI2B+OGPe9AdajWZrLhFqXIvqIW23fnUE4+ztrUWNU1+9g==",
- "path": "microsoft.io.recyclablememorystream/3.0.1",
- "hashPath": "microsoft.io.recyclablememorystream.3.0.1.nupkg.sha512"
- },
- "Newtonsoft.Json/13.0.4": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-pdgNNMai3zv51W5aq268sujXUyx7SNdE2bj1wZcWjAQrKMFZV260lbqYop1d2GM67JI1huLRwxo9ZqnfF/lC6A==",
- "path": "newtonsoft.json/13.0.4",
- "hashPath": "newtonsoft.json.13.0.4.nupkg.sha512"
- },
- "NLog/6.0.4": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-Xr+lIk1ZlTTFXEqnxQVLxrDqZlt2tm5X+/AhJbaY2emb/dVtGDiU5QuEtj3gHtwV/SWlP/rJ922I/BPuOJXlRw==",
- "path": "nlog/6.0.4",
- "hashPath": "nlog.6.0.4.nupkg.sha512"
- },
- "protobuf-net/3.2.56": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-4IPJeTYAMNewlN8MDaFkcmR/9hLhJeo9eARnTh104zh7mf+vXT2gu5MUfUnkSQU+CH578Q6vcdU7LQDQPG6eaw==",
- "path": "protobuf-net/3.2.56",
- "hashPath": "protobuf-net.3.2.56.nupkg.sha512"
- },
- "protobuf-net.Core/3.2.56": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-d6QOukTpDzs7zZv9tPnBZMtvHDNeHJQXUhMx54g4urUQsXK3oo9U70H9HvklYq7hlQ4A7AHJl7EVEqyCXXIl8Q==",
- "path": "protobuf-net.core/3.2.56",
- "hashPath": "protobuf-net.core.3.2.56.nupkg.sha512"
- },
- "System.Collections.Immutable/9.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-QhkXUl2gNrQtvPmtBTQHb0YsUrDiDQ2QS09YbtTTiSjGcf7NBqtYbrG/BE06zcBPCKEwQGzIv13IVdXNOSub2w==",
- "path": "system.collections.immutable/9.0.0",
- "hashPath": "system.collections.immutable.9.0.0.nupkg.sha512"
- },
- "System.ComponentModel.Annotations/5.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-dMkqfy2el8A8/I76n2Hi1oBFEbG1SfxD2l5nhwXV3XjlnOmwxJlQbYpJH4W51odnU9sARCSAgv7S3CyAFMkpYg==",
- "path": "system.componentmodel.annotations/5.0.0",
- "hashPath": "system.componentmodel.annotations.5.0.0.nupkg.sha512"
- },
- "System.Reflection.Metadata/9.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-ANiqLu3DxW9kol/hMmTWbt3414t9ftdIuiIU7j80okq2YzAueo120M442xk1kDJWtmZTqWQn7wHDvMRipVOEOQ==",
- "path": "system.reflection.metadata/9.0.0",
- "hashPath": "system.reflection.metadata.9.0.0.nupkg.sha512"
- },
- "System.Security.Cryptography.Pkcs/8.0.1": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-CoCRHFym33aUSf/NtWSVSZa99dkd0Hm7OCZUxORBjRB16LNhIEOf8THPqzIYlvKM0nNDAPTRBa1FxEECrgaxxA==",
- "path": "system.security.cryptography.pkcs/8.0.1",
- "hashPath": "system.security.cryptography.pkcs.8.0.1.nupkg.sha512"
- },
- "System.Security.Cryptography.Xml/8.0.2": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-aDM/wm0ZGEZ6ZYJLzgqjp2FZdHbDHh6/OmpGfb7AdZ105zYmPn/83JRU2xLIbwgoNz9U1SLUTJN0v5th3qmvjA==",
- "path": "system.security.cryptography.xml/8.0.2",
- "hashPath": "system.security.cryptography.xml.8.0.2.nupkg.sha512"
- },
- "System.Text.Encoding.CodePages/8.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-OZIsVplFGaVY90G2SbpgU7EnCoOO5pw1t4ic21dBF3/1omrJFpAGoNAVpPyMVOC90/hvgkGG3VFqR13YgZMQfg==",
- "path": "system.text.encoding.codepages/8.0.0",
- "hashPath": "system.text.encoding.codepages.8.0.0.nupkg.sha512"
- }
- }
-}
\ No newline at end of file
diff --git a/NBConfigBuilder/NBConfigBuilder.dll b/NBConfigBuilder/NBConfigBuilder.dll
deleted file mode 100644
index 50e9687..0000000
Binary files a/NBConfigBuilder/NBConfigBuilder.dll and /dev/null differ
diff --git a/NBConfigBuilder/NBConfigBuilder.pdb b/NBConfigBuilder/NBConfigBuilder.pdb
deleted file mode 100644
index 54cc7a1..0000000
Binary files a/NBConfigBuilder/NBConfigBuilder.pdb and /dev/null differ
diff --git a/NBConfigBuilder/NBConfigBuilder.runtimeconfig.json b/NBConfigBuilder/NBConfigBuilder.runtimeconfig.json
deleted file mode 100644
index b2dedf3..0000000
--- a/NBConfigBuilder/NBConfigBuilder.runtimeconfig.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "runtimeOptions": {
- "tfm": "net8.0",
- "frameworks": [
- {
- "name": "Microsoft.NETCore.App",
- "version": "8.0.0"
- },
- {
- "name": "Microsoft.WindowsDesktop.App",
- "version": "8.0.0"
- }
- ],
- "configProperties": {
- "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": true,
- "CSWINRT_USE_WINDOWS_UI_XAML_PROJECTIONS": false
- }
- }
-}
\ No newline at end of file
diff --git a/NBConfigBuilder/NLog.config b/NBConfigBuilder/NLog.config
deleted file mode 100644
index 4bd1557..0000000
--- a/NBConfigBuilder/NLog.config
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/NBConfigBuilder/NLog.dll b/NBConfigBuilder/NLog.dll
deleted file mode 100644
index 1d15c30..0000000
Binary files a/NBConfigBuilder/NLog.dll and /dev/null differ
diff --git a/NBConfigBuilder/Newtonsoft.Json.dll b/NBConfigBuilder/Newtonsoft.Json.dll
deleted file mode 100644
index 5813d8c..0000000
Binary files a/NBConfigBuilder/Newtonsoft.Json.dll and /dev/null differ
diff --git a/NBConfigBuilder/System.Collections.Immutable.dll b/NBConfigBuilder/System.Collections.Immutable.dll
deleted file mode 100644
index 9db8140..0000000
Binary files a/NBConfigBuilder/System.Collections.Immutable.dll and /dev/null differ
diff --git a/NBConfigBuilder/System.Reflection.Metadata.dll b/NBConfigBuilder/System.Reflection.Metadata.dll
deleted file mode 100644
index 2366da2..0000000
Binary files a/NBConfigBuilder/System.Reflection.Metadata.dll and /dev/null differ
diff --git a/NBConfigBuilder/System.Security.Cryptography.Pkcs.dll b/NBConfigBuilder/System.Security.Cryptography.Pkcs.dll
deleted file mode 100644
index e521fd3..0000000
Binary files a/NBConfigBuilder/System.Security.Cryptography.Pkcs.dll and /dev/null differ
diff --git a/NBConfigBuilder/System.Security.Cryptography.Xml.dll b/NBConfigBuilder/System.Security.Cryptography.Xml.dll
deleted file mode 100644
index 1cb01ca..0000000
Binary files a/NBConfigBuilder/System.Security.Cryptography.Xml.dll and /dev/null differ
diff --git a/NBConfigBuilder/TemplateBack.txt b/NBConfigBuilder/TemplateBack.txt
deleted file mode 100644
index ebbd5d3..0000000
--- a/NBConfigBuilder/TemplateBack.txt
+++ /dev/null
@@ -1,96 +0,0 @@
-using System;
-using ProtoBuf;
-using Fantasy;
-using System.Linq;
-using System.Reflection;
-using System.Collections.Generic;
-using System.Collections.Concurrent;
-#if FANTASY_NET
-using Fantasy.ConfigTable;
-using Fantasy.Serialize;
-#else
-using NBC;
-using NBC.Serialize;
-#endif
-// ReSharper disable CollectionNeverUpdated.Global
-// ReSharper disable UnusedAutoPropertyAccessor.Global
-#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member
-#pragma warning disable CS0169
-#pragma warning disable CS8618
-#pragma warning disable CS8625
-#pragma warning disable CS8603
-
-namespace (namespace)
-{
- [ProtoContract]
- public sealed partial class (ConfigName)Data : ASerialize, IConfigTable, IProto
- {
- [ProtoMember(1)]
- public List<(ConfigName)> List { get; set; } = new List<(ConfigName)>();
-#if FANTASY_NET
- [ProtoIgnore]
- private readonly ConcurrentDictionary _configs = new ConcurrentDictionary();
-#else
- [ProtoIgnore]
- private readonly Dictionary _configs = new Dictionary();
-#endif
- private static (ConfigName)Data _instance = null;
-
- public static (ConfigName)Data Instance
- {
- get { return _instance ??= ConfigTableHelper.Load<(ConfigName)Data>(); }
- private set => _instance = value;
- }
-
- public (ConfigName) Get(uint id, bool check = true)
- {
- if (_configs.ContainsKey(id))
- {
- return _configs[id];
- }
-
- if (check)
- {
- throw new Exception($"(ConfigName) not find {id} Id");
- }
-
- return null;
- }
- public bool TryGet(uint id, out (ConfigName) config)
- {
- config = null;
-
- if (!_configs.ContainsKey(id))
- {
- return false;
- }
-
- config = _configs[id];
- return true;
- }
- public override void AfterDeserialization()
- {
- foreach (var config in List)
- {
-#if FANTASY_NET
- _configs.TryAdd(config.Id, config);
-#else
- _configs.Add(config.Id, config);
-#endif
- config.AfterDeserialization();
- }
-
- EndInit();
- }
-
- public override void Dispose()
- {
- Instance = null;
- }
- }
-
- [ProtoContract]
- public sealed partial class (ConfigName) : ASerialize, IProto
- {(Fields)
- }
-}
\ No newline at end of file
diff --git a/NBConfigBuilder/TemplateClient.txt b/NBConfigBuilder/TemplateClient.txt
deleted file mode 100644
index 6136232..0000000
--- a/NBConfigBuilder/TemplateClient.txt
+++ /dev/null
@@ -1,79 +0,0 @@
-using System;
-using Fantasy;
-using System.Linq;
-using System.Reflection;
-using System.Collections.Generic;
-using System.Collections.Concurrent;
-using NBC;
-using Fantasy.Serialize;
-using LightProto;
-
-namespace NBF
-{
- [ProtoContract]
- public sealed partial class (ConfigName) : ASerialize, IConfigTable
- {
- (Fields)
- [ProtoIgnore]
- public uint Key => Id;
-
- #region Static
-
- private static ConfigContext<(ConfigName)> Context => ConfigTableHelper.Table<(ConfigName)>();
-
- public static (ConfigName) Get(uint key)
- {
- return Context.Get(key);
- }
-
- public static (ConfigName) Get(Predicate<(ConfigName)> match)
- {
- return Context.Get(match);
- }
-
- public static (ConfigName) Fist()
- {
- return Context.Fist();
- }
-
- public static (ConfigName) Last()
- {
- return Context.Last();
- }
-
- public static (ConfigName) Fist(Predicate<(ConfigName)> match)
- {
- return Context.Fist(match);
- }
-
- public static (ConfigName) Last(Predicate<(ConfigName)> match)
- {
- return Context.Last(match);
- }
-
- public static int Count()
- {
- return Context.Count();
- }
-
- public static int Count(Func<(ConfigName), bool> predicate)
- {
- return Context.Count(predicate);
- }
-
- public static List<(ConfigName)> GetList()
- {
- return Context.GetList();
- }
-
- public static List<(ConfigName)> GetList(Predicate<(ConfigName)> match)
- {
- return Context.GetList(match);
- }
- public static void ParseJson(Newtonsoft.Json.Linq.JArray arr)
- {
- ConfigTableHelper.ParseLine<(ConfigName)>(arr);
- }
- #endregion
- }
-}
\ No newline at end of file
diff --git a/NBConfigBuilder/TemplateServer.txt b/NBConfigBuilder/TemplateServer.txt
deleted file mode 100644
index 69c4016..0000000
--- a/NBConfigBuilder/TemplateServer.txt
+++ /dev/null
@@ -1,79 +0,0 @@
-using System;
-using LightProto;
-using Fantasy;
-using System.Linq;
-using System.Reflection;
-using System.Collections.Generic;
-using System.Collections.Concurrent;
-using Fantasy.Serialize;
-using NBF.ConfigTable;
-
-namespace NBF
-{
- [ProtoContract]
- public sealed partial class (ConfigName) : ASerialize, IConfigTable
- {
- (Fields)
- [ProtoIgnore]
- public uint Key => Id;
-
- #region Static
-
- private static ConfigContext<(ConfigName)> Context => ConfigTableHelper.Table<(ConfigName)>();
-
- public static (ConfigName) Get(uint key)
- {
- return Context.Get(key);
- }
-
- public static (ConfigName) Get(Predicate<(ConfigName)> match)
- {
- return Context.Get(match);
- }
-
- public static (ConfigName) Fist()
- {
- return Context.Fist();
- }
-
- public static (ConfigName) Last()
- {
- return Context.Last();
- }
-
- public static (ConfigName) Fist(Predicate<(ConfigName)> match)
- {
- return Context.Fist(match);
- }
-
- public static (ConfigName) Last(Predicate<(ConfigName)> match)
- {
- return Context.Last(match);
- }
-
- public static int Count()
- {
- return Context.Count();
- }
-
- public static int Count(Func<(ConfigName), bool> predicate)
- {
- return Context.Count(predicate);
- }
-
- public static List<(ConfigName)> GetList()
- {
- return Context.GetList();
- }
-
- public static List<(ConfigName)> GetList(Predicate<(ConfigName)> match)
- {
- return Context.GetList(match);
- }
- public static void ParseJson(Newtonsoft.Json.Linq.JArray arr)
- {
- ConfigTableHelper.ParseLine<(ConfigName)>(arr);
- }
- #endregion
- }
-}
\ No newline at end of file
diff --git a/NBConfigBuilder/config - 副本.json b/NBConfigBuilder/config - 副本.json
deleted file mode 100644
index 4891ac6..0000000
--- a/NBConfigBuilder/config - 副本.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "ExcelPath": "D:\\work\\Fishing2\\Config",
- "ClientPath": "D:\\work\\Fishing2\\Assets\\Scripts\\Generate\\Config",
- "ClientJsonPath": "D:\\work\\Fishing2\\Assets\\Resources\\config",
- "ServerPath": "D:\\work\\Fishing2Server\\Entity\\Generate\\ConfigTable\\Entity",
- "ServerJsonPath": "D:\\work\\Fishing2Server\\Config\\Json",
- "GenClient": true,
- "GenServer": true,
- "ExcelVersionPath": "D:\\work\\Fishing2\\Config\\Version.txt"
-}
\ No newline at end of file
diff --git a/NBConfigBuilder/config.json b/NBConfigBuilder/config.json
deleted file mode 100644
index 32e0c96..0000000
--- a/NBConfigBuilder/config.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "ExcelPath": "..\\",
- "ClientPath": "..\\..\\Fishing2\\Assets\\Scripts\\Generate\\Config",
- "ClientJsonPath": "..\\..\\Fishing2\\Assets\\Resources\\config",
- "ServerPath": "..\\..\\Fishing2Server\\Entity\\Generate\\ConfigTable\\Entity",
- "ServerJsonPath": "..\\..\\Fishing2Server\\Main",
- "GenClient": true,
- "GenServer": true,
- "ExcelVersionPath": "..\\Version.txt"
-}
\ No newline at end of file
diff --git a/NBConfigBuilder/cs/Microsoft.CodeAnalysis.CSharp.resources.dll b/NBConfigBuilder/cs/Microsoft.CodeAnalysis.CSharp.resources.dll
deleted file mode 100644
index 67560d7..0000000
Binary files a/NBConfigBuilder/cs/Microsoft.CodeAnalysis.CSharp.resources.dll and /dev/null differ
diff --git a/NBConfigBuilder/cs/Microsoft.CodeAnalysis.resources.dll b/NBConfigBuilder/cs/Microsoft.CodeAnalysis.resources.dll
deleted file mode 100644
index 155bcce..0000000
Binary files a/NBConfigBuilder/cs/Microsoft.CodeAnalysis.resources.dll and /dev/null differ
diff --git a/NBConfigBuilder/de/Microsoft.CodeAnalysis.CSharp.resources.dll b/NBConfigBuilder/de/Microsoft.CodeAnalysis.CSharp.resources.dll
deleted file mode 100644
index daca134..0000000
Binary files a/NBConfigBuilder/de/Microsoft.CodeAnalysis.CSharp.resources.dll and /dev/null differ
diff --git a/NBConfigBuilder/de/Microsoft.CodeAnalysis.resources.dll b/NBConfigBuilder/de/Microsoft.CodeAnalysis.resources.dll
deleted file mode 100644
index 0613dde..0000000
Binary files a/NBConfigBuilder/de/Microsoft.CodeAnalysis.resources.dll and /dev/null differ
diff --git a/NBConfigBuilder/es/Microsoft.CodeAnalysis.CSharp.resources.dll b/NBConfigBuilder/es/Microsoft.CodeAnalysis.CSharp.resources.dll
deleted file mode 100644
index 6528338..0000000
Binary files a/NBConfigBuilder/es/Microsoft.CodeAnalysis.CSharp.resources.dll and /dev/null differ
diff --git a/NBConfigBuilder/es/Microsoft.CodeAnalysis.resources.dll b/NBConfigBuilder/es/Microsoft.CodeAnalysis.resources.dll
deleted file mode 100644
index 1d20ff2..0000000
Binary files a/NBConfigBuilder/es/Microsoft.CodeAnalysis.resources.dll and /dev/null differ
diff --git a/NBConfigBuilder/fr/Microsoft.CodeAnalysis.CSharp.resources.dll b/NBConfigBuilder/fr/Microsoft.CodeAnalysis.CSharp.resources.dll
deleted file mode 100644
index d5d4b24..0000000
Binary files a/NBConfigBuilder/fr/Microsoft.CodeAnalysis.CSharp.resources.dll and /dev/null differ
diff --git a/NBConfigBuilder/fr/Microsoft.CodeAnalysis.resources.dll b/NBConfigBuilder/fr/Microsoft.CodeAnalysis.resources.dll
deleted file mode 100644
index e7aee2a..0000000
Binary files a/NBConfigBuilder/fr/Microsoft.CodeAnalysis.resources.dll and /dev/null differ
diff --git a/NBConfigBuilder/it/Microsoft.CodeAnalysis.CSharp.resources.dll b/NBConfigBuilder/it/Microsoft.CodeAnalysis.CSharp.resources.dll
deleted file mode 100644
index 57a91a7..0000000
Binary files a/NBConfigBuilder/it/Microsoft.CodeAnalysis.CSharp.resources.dll and /dev/null differ
diff --git a/NBConfigBuilder/it/Microsoft.CodeAnalysis.resources.dll b/NBConfigBuilder/it/Microsoft.CodeAnalysis.resources.dll
deleted file mode 100644
index 78cb09d..0000000
Binary files a/NBConfigBuilder/it/Microsoft.CodeAnalysis.resources.dll and /dev/null differ
diff --git a/NBConfigBuilder/ja/Microsoft.CodeAnalysis.CSharp.resources.dll b/NBConfigBuilder/ja/Microsoft.CodeAnalysis.CSharp.resources.dll
deleted file mode 100644
index a301df0..0000000
Binary files a/NBConfigBuilder/ja/Microsoft.CodeAnalysis.CSharp.resources.dll and /dev/null differ
diff --git a/NBConfigBuilder/ja/Microsoft.CodeAnalysis.resources.dll b/NBConfigBuilder/ja/Microsoft.CodeAnalysis.resources.dll
deleted file mode 100644
index 77a390c..0000000
Binary files a/NBConfigBuilder/ja/Microsoft.CodeAnalysis.resources.dll and /dev/null differ
diff --git a/NBConfigBuilder/ko/Microsoft.CodeAnalysis.CSharp.resources.dll b/NBConfigBuilder/ko/Microsoft.CodeAnalysis.CSharp.resources.dll
deleted file mode 100644
index 5108385..0000000
Binary files a/NBConfigBuilder/ko/Microsoft.CodeAnalysis.CSharp.resources.dll and /dev/null differ
diff --git a/NBConfigBuilder/ko/Microsoft.CodeAnalysis.resources.dll b/NBConfigBuilder/ko/Microsoft.CodeAnalysis.resources.dll
deleted file mode 100644
index 3c56215..0000000
Binary files a/NBConfigBuilder/ko/Microsoft.CodeAnalysis.resources.dll and /dev/null differ
diff --git a/NBConfigBuilder/logs/2025-10-19.log b/NBConfigBuilder/logs/2025-10-19.log
deleted file mode 100644
index 499b421..0000000
--- a/NBConfigBuilder/logs/2025-10-19.log
+++ /dev/null
@@ -1,3 +0,0 @@
-2025-10-19 20:08:15.9571 INFO Application started
-2025-10-19 20:09:51.7518 INFO Application closing
-2025-10-19 20:09:59.2390 INFO Application started
diff --git a/NBConfigBuilder/logs/2025-10-21.log b/NBConfigBuilder/logs/2025-10-21.log
deleted file mode 100644
index 256ad00..0000000
--- a/NBConfigBuilder/logs/2025-10-21.log
+++ /dev/null
@@ -1 +0,0 @@
-2025-10-21 22:43:24.1482 INFO Application started
diff --git a/NBConfigBuilder/logs/2025-10-29.log b/NBConfigBuilder/logs/2025-10-29.log
deleted file mode 100644
index 0146bf9..0000000
--- a/NBConfigBuilder/logs/2025-10-29.log
+++ /dev/null
@@ -1 +0,0 @@
-2025-10-29 21:37:12.6535 INFO Application started
diff --git a/NBConfigBuilder/logs/2025-10-31.log b/NBConfigBuilder/logs/2025-10-31.log
deleted file mode 100644
index c87443f..0000000
--- a/NBConfigBuilder/logs/2025-10-31.log
+++ /dev/null
@@ -1,4 +0,0 @@
-2025-10-31 22:34:48.9949 INFO Application started
-2025-10-31 22:44:35.8362 INFO Application started
-2025-10-31 22:45:20.2602 INFO Application closing
-2025-10-31 22:47:03.4779 INFO Application started
diff --git a/NBConfigBuilder/logs/2025-11-16.log b/NBConfigBuilder/logs/2025-11-16.log
deleted file mode 100644
index f92cf34..0000000
--- a/NBConfigBuilder/logs/2025-11-16.log
+++ /dev/null
@@ -1,2 +0,0 @@
-2025-11-16 16:09:02.3819 INFO Application started
-2025-11-16 19:29:36.1699 INFO Application closing
diff --git a/NBConfigBuilder/logs/2025-11-22.log b/NBConfigBuilder/logs/2025-11-22.log
deleted file mode 100644
index 122e17d..0000000
--- a/NBConfigBuilder/logs/2025-11-22.log
+++ /dev/null
@@ -1 +0,0 @@
-2025-11-22 22:00:10.3128 INFO Application started
diff --git a/NBConfigBuilder/logs/2026-01-18.log b/NBConfigBuilder/logs/2026-01-18.log
deleted file mode 100644
index bed0f23..0000000
--- a/NBConfigBuilder/logs/2026-01-18.log
+++ /dev/null
@@ -1,2 +0,0 @@
-2026-01-18 15:53:38.8893 INFO Application started
-2026-01-18 15:53:41.7447 INFO Application closing
diff --git a/NBConfigBuilder/pl/Microsoft.CodeAnalysis.CSharp.resources.dll b/NBConfigBuilder/pl/Microsoft.CodeAnalysis.CSharp.resources.dll
deleted file mode 100644
index 965c984..0000000
Binary files a/NBConfigBuilder/pl/Microsoft.CodeAnalysis.CSharp.resources.dll and /dev/null differ
diff --git a/NBConfigBuilder/pl/Microsoft.CodeAnalysis.resources.dll b/NBConfigBuilder/pl/Microsoft.CodeAnalysis.resources.dll
deleted file mode 100644
index 2915250..0000000
Binary files a/NBConfigBuilder/pl/Microsoft.CodeAnalysis.resources.dll and /dev/null differ
diff --git a/NBConfigBuilder/protobuf-net.Core.dll b/NBConfigBuilder/protobuf-net.Core.dll
deleted file mode 100644
index 00b3bfe..0000000
Binary files a/NBConfigBuilder/protobuf-net.Core.dll and /dev/null differ
diff --git a/NBConfigBuilder/protobuf-net.dll b/NBConfigBuilder/protobuf-net.dll
deleted file mode 100644
index f29616e..0000000
Binary files a/NBConfigBuilder/protobuf-net.dll and /dev/null differ
diff --git a/NBConfigBuilder/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll b/NBConfigBuilder/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll
deleted file mode 100644
index 5afc260..0000000
Binary files a/NBConfigBuilder/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll and /dev/null differ
diff --git a/NBConfigBuilder/pt-BR/Microsoft.CodeAnalysis.resources.dll b/NBConfigBuilder/pt-BR/Microsoft.CodeAnalysis.resources.dll
deleted file mode 100644
index 700e2aa..0000000
Binary files a/NBConfigBuilder/pt-BR/Microsoft.CodeAnalysis.resources.dll and /dev/null differ
diff --git a/NBConfigBuilder/ru/Microsoft.CodeAnalysis.CSharp.resources.dll b/NBConfigBuilder/ru/Microsoft.CodeAnalysis.CSharp.resources.dll
deleted file mode 100644
index b4138f4..0000000
Binary files a/NBConfigBuilder/ru/Microsoft.CodeAnalysis.CSharp.resources.dll and /dev/null differ
diff --git a/NBConfigBuilder/ru/Microsoft.CodeAnalysis.resources.dll b/NBConfigBuilder/ru/Microsoft.CodeAnalysis.resources.dll
deleted file mode 100644
index 2cf63e5..0000000
Binary files a/NBConfigBuilder/ru/Microsoft.CodeAnalysis.resources.dll and /dev/null differ
diff --git a/NBConfigBuilder/runtimes/win/lib/net8.0/System.Security.Cryptography.Pkcs.dll b/NBConfigBuilder/runtimes/win/lib/net8.0/System.Security.Cryptography.Pkcs.dll
deleted file mode 100644
index b4d03d5..0000000
Binary files a/NBConfigBuilder/runtimes/win/lib/net8.0/System.Security.Cryptography.Pkcs.dll and /dev/null differ
diff --git a/NBConfigBuilder/tr/Microsoft.CodeAnalysis.CSharp.resources.dll b/NBConfigBuilder/tr/Microsoft.CodeAnalysis.CSharp.resources.dll
deleted file mode 100644
index 7ca2e8f..0000000
Binary files a/NBConfigBuilder/tr/Microsoft.CodeAnalysis.CSharp.resources.dll and /dev/null differ
diff --git a/NBConfigBuilder/tr/Microsoft.CodeAnalysis.resources.dll b/NBConfigBuilder/tr/Microsoft.CodeAnalysis.resources.dll
deleted file mode 100644
index 0f76b86..0000000
Binary files a/NBConfigBuilder/tr/Microsoft.CodeAnalysis.resources.dll and /dev/null differ
diff --git a/NBConfigBuilder/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll b/NBConfigBuilder/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll
deleted file mode 100644
index 8c80a88..0000000
Binary files a/NBConfigBuilder/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll and /dev/null differ
diff --git a/NBConfigBuilder/zh-Hans/Microsoft.CodeAnalysis.resources.dll b/NBConfigBuilder/zh-Hans/Microsoft.CodeAnalysis.resources.dll
deleted file mode 100644
index 52f232d..0000000
Binary files a/NBConfigBuilder/zh-Hans/Microsoft.CodeAnalysis.resources.dll and /dev/null differ
diff --git a/NBConfigBuilder/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll b/NBConfigBuilder/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll
deleted file mode 100644
index 1936f8d..0000000
Binary files a/NBConfigBuilder/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll and /dev/null differ
diff --git a/NBConfigBuilder/zh-Hant/Microsoft.CodeAnalysis.resources.dll b/NBConfigBuilder/zh-Hant/Microsoft.CodeAnalysis.resources.dll
deleted file mode 100644
index fe815c6..0000000
Binary files a/NBConfigBuilder/zh-Hant/Microsoft.CodeAnalysis.resources.dll and /dev/null differ
diff --git a/gen_client.bat b/gen_client.bat
new file mode 100644
index 0000000..7d9e720
--- /dev/null
+++ b/gen_client.bat
@@ -0,0 +1,14 @@
+set WORKSPACE=.
+set LUBAN_DLL=%WORKSPACE%\Luban\Luban.dll
+set CONF_ROOT=.
+set GEN_ROOT=../Fishing2
+
+dotnet %LUBAN_DLL% ^
+ -t all ^
+ -d json ^
+ -c cs-simple-json ^
+ --conf %CONF_ROOT%\luban.conf ^
+ -x outputCodeDir=%GEN_ROOT%/Assets/Scripts/Generate/Config ^
+ -x outputDataDir=%GEN_ROOT%/Assets/ResRaw/config/tb
+
+pause
\ No newline at end of file
diff --git a/luban.conf b/luban.conf
new file mode 100644
index 0000000..716d6fb
--- /dev/null
+++ b/luban.conf
@@ -0,0 +1,26 @@
+{
+ "groups":
+ [
+ {"names":["c"], "default":true},
+ {"names":["s"], "default":true},
+ {"names":["e"], "default":true}
+ ],
+ "schemaFiles":
+ [
+ {"fileName":"Defines", "type":""},
+ {"fileName":"Datas/__tables__.xlsx", "type":"table"},
+ {"fileName":"Datas/__beans__.xlsx", "type":"bean"},
+ {"fileName":"Datas/__enums__.xlsx", "type":"enum"}
+ ],
+ "dataDir": "Datas",
+ "targets":
+ [
+ {"name":"server", "manager":"Tables", "groups":["s"], "topModule":"cfg"},
+ {"name":"client", "manager":"Tables", "groups":["c"], "topModule":"cfg"},
+ {"name":"all", "manager":"Tables", "groups":["c","s","e"], "topModule":"cfg"}
+ ],
+ "xargs":
+ [
+
+ ]
+}
diff --git a/output/tbbait.json b/output/tbbait.json
new file mode 100644
index 0000000..8e343ca
--- /dev/null
+++ b/output/tbbait.json
@@ -0,0 +1,39 @@
+[
+ {
+ "id": 70001,
+ "efficacy_base": 15,
+ "arr": [
+ 250,
+ 1,
+ 2,
+ 3
+ ],
+ "strength": 0
+ },
+ {
+ "id": 70002,
+ "efficacy_base": 15,
+ "arr": [
+ 120,
+ 4,
+ 3
+ ],
+ "strength": 0
+ },
+ {
+ "id": 70003,
+ "efficacy_base": 15,
+ "arr": [
+ 120
+ ],
+ "strength": 0
+ },
+ {
+ "id": 70004,
+ "efficacy_base": 15,
+ "arr": [
+ 120
+ ],
+ "strength": 0
+ }
+]
\ No newline at end of file
diff --git a/output/tbbasicconfig.json b/output/tbbasicconfig.json
new file mode 100644
index 0000000..464e8f9
--- /dev/null
+++ b/output/tbbasicconfig.json
@@ -0,0 +1,16 @@
+[
+ {
+ "x1": 1101001101,
+ "x2": 150,
+ "x3": 500,
+ "x4": 50,
+ "x5": 10,
+ "x6": 4,
+ "x7": [
+ 1,
+ 2,
+ 3,
+ 4
+ ]
+ }
+]
\ No newline at end of file
diff --git a/output/tbbobber.json b/output/tbbobber.json
new file mode 100644
index 0000000..f792b1f
--- /dev/null
+++ b/output/tbbobber.json
@@ -0,0 +1,30 @@
+[
+ {
+ "id": 50001,
+ "displacement": 40,
+ "night_light": [
+ 0
+ ]
+ },
+ {
+ "id": 50002,
+ "displacement": 40,
+ "night_light": [
+ 0
+ ]
+ },
+ {
+ "id": 50003,
+ "displacement": 40,
+ "night_light": [
+ 0
+ ]
+ },
+ {
+ "id": 50004,
+ "displacement": 40,
+ "night_light": [
+ 0
+ ]
+ }
+]
\ No newline at end of file
diff --git a/output/tbfeeder.json b/output/tbfeeder.json
new file mode 100644
index 0000000..f2106e9
--- /dev/null
+++ b/output/tbfeeder.json
@@ -0,0 +1,7 @@
+[
+ {
+ "id": 110001,
+ "capacity": 100,
+ "weight": 5
+ }
+]
\ No newline at end of file
diff --git a/output/tbfish.json b/output/tbfish.json
new file mode 100644
index 0000000..8a689e5
--- /dev/null
+++ b/output/tbfish.json
@@ -0,0 +1,34 @@
+[
+ {
+ "id": 210001,
+ "name": "鲤鱼",
+ "model": "fish/carp/carp",
+ "min_weight": 1,
+ "max_weight": 34,
+ "accept": 2100001
+ },
+ {
+ "id": 210002,
+ "name": "金鲫",
+ "model": "fish/c.carp/c_carp",
+ "min_weight": 1,
+ "max_weight": 34,
+ "accept": 2100001
+ },
+ {
+ "id": 210003,
+ "name": "银鲫",
+ "model": "fish/crucian/crucian",
+ "min_weight": 1,
+ "max_weight": 34,
+ "accept": 2100001
+ },
+ {
+ "id": 210004,
+ "name": "拟鲤",
+ "model": "fish/c.roach/c_roach",
+ "min_weight": 1,
+ "max_weight": 34,
+ "accept": 2100001
+ }
+]
\ No newline at end of file
diff --git a/output/tbhook.json b/output/tbhook.json
new file mode 100644
index 0000000..e6e07f1
--- /dev/null
+++ b/output/tbhook.json
@@ -0,0 +1,22 @@
+[
+ {
+ "id": 90001,
+ "ding": 1
+ },
+ {
+ "id": 90002,
+ "ding": 1
+ },
+ {
+ "id": 90003,
+ "ding": 1
+ },
+ {
+ "id": 90004,
+ "ding": 1
+ },
+ {
+ "id": 90005,
+ "ding": 1
+ }
+]
\ No newline at end of file
diff --git a/output/tbinititemconfig.json b/output/tbinititemconfig.json
new file mode 100644
index 0000000..c01121e
--- /dev/null
+++ b/output/tbinititemconfig.json
@@ -0,0 +1,386 @@
+[
+ {
+ "id": 10001,
+ "count": 100
+ },
+ {
+ "id": 10002,
+ "count": 200
+ },
+ {
+ "id": 10003,
+ "count": 0
+ },
+ {
+ "id": 30001,
+ "count": 1
+ },
+ {
+ "id": 30002,
+ "count": 1
+ },
+ {
+ "id": 30003,
+ "count": 1
+ },
+ {
+ "id": 30004,
+ "count": 1
+ },
+ {
+ "id": 30005,
+ "count": 1
+ },
+ {
+ "id": 30006,
+ "count": 1
+ },
+ {
+ "id": 30007,
+ "count": 1
+ },
+ {
+ "id": 30008,
+ "count": 1
+ },
+ {
+ "id": 30009,
+ "count": 1
+ },
+ {
+ "id": 30010,
+ "count": 1
+ },
+ {
+ "id": 30011,
+ "count": 1
+ },
+ {
+ "id": 40001,
+ "count": 1
+ },
+ {
+ "id": 40002,
+ "count": 1
+ },
+ {
+ "id": 40003,
+ "count": 1
+ },
+ {
+ "id": 40004,
+ "count": 1
+ },
+ {
+ "id": 40005,
+ "count": 1
+ },
+ {
+ "id": 40006,
+ "count": 1
+ },
+ {
+ "id": 40007,
+ "count": 1
+ },
+ {
+ "id": 40008,
+ "count": 1
+ },
+ {
+ "id": 40009,
+ "count": 1
+ },
+ {
+ "id": 40010,
+ "count": 1
+ },
+ {
+ "id": 50001,
+ "count": 1
+ },
+ {
+ "id": 50002,
+ "count": 1
+ },
+ {
+ "id": 50003,
+ "count": 1
+ },
+ {
+ "id": 50004,
+ "count": 1
+ },
+ {
+ "id": 50005,
+ "count": 1
+ },
+ {
+ "id": 50006,
+ "count": 1
+ },
+ {
+ "id": 50007,
+ "count": 1
+ },
+ {
+ "id": 50008,
+ "count": 1
+ },
+ {
+ "id": 50009,
+ "count": 1
+ },
+ {
+ "id": 50010,
+ "count": 1
+ },
+ {
+ "id": 50011,
+ "count": 1
+ },
+ {
+ "id": 50012,
+ "count": 1
+ },
+ {
+ "id": 50013,
+ "count": 1
+ },
+ {
+ "id": 50014,
+ "count": 1
+ },
+ {
+ "id": 60001,
+ "count": 1
+ },
+ {
+ "id": 60002,
+ "count": 1
+ },
+ {
+ "id": 60003,
+ "count": 1
+ },
+ {
+ "id": 60004,
+ "count": 1
+ },
+ {
+ "id": 60005,
+ "count": 1
+ },
+ {
+ "id": 60006,
+ "count": 1
+ },
+ {
+ "id": 60007,
+ "count": 1
+ },
+ {
+ "id": 60008,
+ "count": 1
+ },
+ {
+ "id": 60009,
+ "count": 1
+ },
+ {
+ "id": 60010,
+ "count": 1
+ },
+ {
+ "id": 70001,
+ "count": 1
+ },
+ {
+ "id": 70002,
+ "count": 1
+ },
+ {
+ "id": 70003,
+ "count": 1
+ },
+ {
+ "id": 70004,
+ "count": 1
+ },
+ {
+ "id": 80001,
+ "count": 1
+ },
+ {
+ "id": 80002,
+ "count": 1
+ },
+ {
+ "id": 80003,
+ "count": 1
+ },
+ {
+ "id": 80004,
+ "count": 1
+ },
+ {
+ "id": 80005,
+ "count": 1
+ },
+ {
+ "id": 80006,
+ "count": 1
+ },
+ {
+ "id": 80007,
+ "count": 1
+ },
+ {
+ "id": 80008,
+ "count": 1
+ },
+ {
+ "id": 80009,
+ "count": 1
+ },
+ {
+ "id": 80010,
+ "count": 1
+ },
+ {
+ "id": 80011,
+ "count": 1
+ },
+ {
+ "id": 80012,
+ "count": 1
+ },
+ {
+ "id": 80013,
+ "count": 1
+ },
+ {
+ "id": 90001,
+ "count": 1
+ },
+ {
+ "id": 90002,
+ "count": 1
+ },
+ {
+ "id": 90003,
+ "count": 1
+ },
+ {
+ "id": 90004,
+ "count": 1
+ },
+ {
+ "id": 90005,
+ "count": 1
+ },
+ {
+ "id": 90006,
+ "count": 1
+ },
+ {
+ "id": 90007,
+ "count": 1
+ },
+ {
+ "id": 90008,
+ "count": 1
+ },
+ {
+ "id": 90009,
+ "count": 1
+ },
+ {
+ "id": 90010,
+ "count": 1
+ },
+ {
+ "id": 90011,
+ "count": 1
+ },
+ {
+ "id": 90012,
+ "count": 1
+ },
+ {
+ "id": 90013,
+ "count": 1
+ },
+ {
+ "id": 90014,
+ "count": 1
+ },
+ {
+ "id": 90015,
+ "count": 1
+ },
+ {
+ "id": 90016,
+ "count": 1
+ },
+ {
+ "id": 90017,
+ "count": 1
+ },
+ {
+ "id": 90018,
+ "count": 1
+ },
+ {
+ "id": 90019,
+ "count": 1
+ },
+ {
+ "id": 90020,
+ "count": 1
+ },
+ {
+ "id": 100001,
+ "count": 1
+ },
+ {
+ "id": 100002,
+ "count": 1
+ },
+ {
+ "id": 100003,
+ "count": 1
+ },
+ {
+ "id": 100004,
+ "count": 1
+ },
+ {
+ "id": 100005,
+ "count": 1
+ },
+ {
+ "id": 100006,
+ "count": 1
+ },
+ {
+ "id": 100007,
+ "count": 1
+ },
+ {
+ "id": 100008,
+ "count": 1
+ },
+ {
+ "id": 100009,
+ "count": 1
+ },
+ {
+ "id": 100010,
+ "count": 1
+ },
+ {
+ "id": 110001,
+ "count": 1
+ }
+]
\ No newline at end of file
diff --git a/output/tbitem.json b/output/tbitem.json
new file mode 100644
index 0000000..461f095
--- /dev/null
+++ b/output/tbitem.json
@@ -0,0 +1,1025 @@
+[
+ {
+ "id": 30001,
+ "model": "rods/syberia/tele_10037/tele_10037_t13",
+ "type": 301,
+ "quality": 5,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 30002,
+ "model": "rods/syberia/bolo_10021/bolo_10021_LB400",
+ "type": 302,
+ "quality": 5,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 30003,
+ "model": "rods/syberia/spin_10034/spin_10034_S60H",
+ "type": 303,
+ "quality": 5,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 30004,
+ "model": "rods/syberia/carp_10046/carp_10046_360H",
+ "type": 304,
+ "quality": 4,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 30005,
+ "model": "rods/syberia/cast_10018/cast_10018_CST60MH",
+ "type": 305,
+ "quality": 5,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 30006,
+ "model": "rods/syberia/feeder_10048/feeder_10048_FD390",
+ "type": 306,
+ "quality": 4,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 30007,
+ "model": "rods/syberia/jerk_10043/jerk_10043_JR60XH",
+ "type": 307,
+ "quality": 3,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 30008,
+ "model": "rods/syberia/mark_10168/mark_10168_3LB",
+ "type": 308,
+ "quality": 3,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 30009,
+ "model": "rods/syberia/match_10025/match_10025_M130H",
+ "type": 309,
+ "quality": 4,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 30010,
+ "model": "rods/syberia/picker_10052/picker_10052_P300-MH",
+ "type": 310,
+ "quality": 5,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 30011,
+ "model": "rods/syberia/spod_10133/spod_10133_3LB",
+ "type": 311,
+ "quality": 4,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 40001,
+ "model": "reels/syberia/spin_5002/spin_5002",
+ "type": 401,
+ "quality": 3,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 40002,
+ "model": "reels/syberia/spin_5036/spin_5036",
+ "type": 401,
+ "quality": 4,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 40003,
+ "model": "reels/syberia/bclp_5005/bclp_5005",
+ "type": 402,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 40004,
+ "model": "reels/syberia/bclp_5032/bclp_5032",
+ "type": 402,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 40005,
+ "model": "reels/syberia/bcr_5034/bcr_5034",
+ "type": 403,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 40006,
+ "model": "reels/syberia/bcr_5062/bcr_5062",
+ "type": 403,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 40007,
+ "model": "reels/syberia/c_spin_5386/c_spin_5386",
+ "type": 401,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 40008,
+ "model": "reels/syberia/c_spin_5387/c_spin_5387",
+ "type": 401,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 40009,
+ "model": "reels/syberia/conv_5393/conv_5393",
+ "type": 403,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 40010,
+ "model": "reels/syberia/conv_5396/conv_5396",
+ "type": 403,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 50001,
+ "model": "bobbers/expressfishing/bob_25001/bob_25001",
+ "type": 501,
+ "quality": 1,
+ "brand": 1,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 50002,
+ "model": "bobbers/expressfishing/bob_25002/bob_25002",
+ "type": 501,
+ "quality": 2,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 50003,
+ "model": "bobbers/expressfishing/bob_25003/bob_25003",
+ "type": 501,
+ "quality": 3,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 50004,
+ "model": "bobbers/expressfishing/bob_25004/bob_25004",
+ "type": 501,
+ "quality": 4,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 50005,
+ "model": "bobbers/expressfishing/bob_25162_25163/bob_25162",
+ "type": 501,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 50006,
+ "model": "bobbers/expressfishing/bob_25162_25163/bob_25163",
+ "type": 501,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 50007,
+ "model": "bobbers/expressfishing/bob_25164_25165/bob_25164",
+ "type": 501,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 50008,
+ "model": "bobbers/expressfishing/bob_25164_25165/bob_25165",
+ "type": 501,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 50009,
+ "model": "bobbers/expressfishing/bob_25166_25167/bob_25166",
+ "type": 501,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 50010,
+ "model": "bobbers/expressfishing/bob_25166_25167/bob_25167",
+ "type": 501,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 50011,
+ "model": "bobbers/expressfishing/float_ny_1/float_ny25_1",
+ "type": 501,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 50012,
+ "model": "bobbers/expressfishing/float_ny_1/float_ny25_2",
+ "type": 501,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 50013,
+ "model": "bobbers/expressfishing/float_ny_1/float_ny25_3",
+ "type": 501,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 50014,
+ "model": "bobbers/expressfishing/float_ny_1/float_ny_1",
+ "type": 501,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 60001,
+ "model": "lines/solid_materials/mono_40340/braid_40388",
+ "type": 601,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 60002,
+ "model": "lines/solid_materials/mono_40340/braid_40389",
+ "type": 601,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 60003,
+ "model": "lines/solid_materials/mono_40340/braid_40390",
+ "type": 601,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 60004,
+ "model": "lines/solid_materials/mono_40340/braid_40391",
+ "type": 601,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 60005,
+ "model": "lines/solid_materials/mono_40340/braid_40392",
+ "type": 601,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 60006,
+ "model": "lines/solid_materials/mono_40340/braid_40393",
+ "type": 601,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 60007,
+ "model": "lines/solid_materials/mono_40340/braid_40394",
+ "type": 601,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 60008,
+ "model": "lines/solid_materials/mono_40340/braid_40395",
+ "type": 601,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 60009,
+ "model": "lines/solid_materials/mono_40340/braid_40396",
+ "type": 601,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 60010,
+ "model": "lines/solid_materials/mono_40340/braid_40397",
+ "type": 601,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 70001,
+ "model": "baits/worm_01/worm_01",
+ "type": 701,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 70002,
+ "model": "baits/fly/fly",
+ "type": 701,
+ "quality": 2,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 70003,
+ "model": "baits/black_leech/black_leech",
+ "type": 701,
+ "quality": 2,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 70004,
+ "model": "baits/bread/bread",
+ "type": 701,
+ "quality": 3,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 80001,
+ "model": "lures/express_fishing/crankbaits_1/738/crankbaits_738",
+ "type": 801,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 80002,
+ "model": "lures/express_fishing/crankbaits_1/744/crankbaits_744",
+ "type": 801,
+ "quality": 2,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 80003,
+ "model": "lures/express_fishing/crankbaits_1/752/crankbaits_752",
+ "type": 801,
+ "quality": 3,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 80004,
+ "model": "lures/express_fishing/crankbaits_1/863/crankbaits_863",
+ "type": 801,
+ "quality": 4,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 80005,
+ "model": "lures/express_fishing/poppers_1/poppers_586/poppers_586",
+ "type": 801,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 80006,
+ "model": "lures/express_fishing/softplastic/ef_supergrab_4/softplastic_g_1610",
+ "type": 801,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 80007,
+ "model": "lures/express_fishing/softplastic/ef_supergrab_4/softplastic_g_1611",
+ "type": 801,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 80008,
+ "model": "lures/express_fishing/softplastic/ef_superminnow_4/softplastic_m_1624",
+ "type": 801,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 80009,
+ "model": "lures/express_fishing/spinnerbaits_1/594/spinnerbaits_594",
+ "type": 801,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 80010,
+ "model": "lures/express_fishing/spinnerbaits_1/596/spinnerbaits_596",
+ "type": 801,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 80011,
+ "model": "lures/express_fishing/spinnerbaits_1/597/spinnerbaits_597",
+ "type": 801,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 80012,
+ "model": "lures/express_fishing/spoon_lures_1/spoon_lures_666/spoon_lures_666",
+ "type": 801,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 80013,
+ "model": "lures/express_fishing/spoon_lures_1/spoon_lures_1045/spoon_lures_1045",
+ "type": 801,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 90001,
+ "model": "hooks/alliance/c_hook_20789_20794/c_hook_20789",
+ "type": 901,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 90002,
+ "model": "hooks/berserk_hooks/clas_20421_20446/clas_20421",
+ "type": 901,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 90003,
+ "model": "hooks/berserk_hooks/clas_20447_20472/clas_20447",
+ "type": 901,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 90004,
+ "model": "hooks/berserk_hooks/clas_20473_20492/clas_20473",
+ "type": 901,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 90005,
+ "model": "hooks/berserk_hooks/clas_20493_20514/clas_20493",
+ "type": 901,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 90006,
+ "model": "hooks/berserk_hooks/clas_20515_20532/clas_20515",
+ "type": 901,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 90007,
+ "model": "hooks/berserk_hooks/clas_20533_20550/clas_20533",
+ "type": 901,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 90008,
+ "model": "hooks/berserk_hooks/jhead_20596_20603/jhead_20596",
+ "type": 901,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 90009,
+ "model": "hooks/berserk_hooks/jhead_20604_20613/jhead_20604",
+ "type": 901,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 90010,
+ "model": "hooks/berserk_hooks/jhead_20614_20622/jhead_20614",
+ "type": 901,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 90011,
+ "model": "hooks/berserk_hooks/jhead_20959_20994/jhead_20959",
+ "type": 901,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 90012,
+ "model": "hooks/berserk_hooks/lfish_20637_20643/lfish_20637",
+ "type": 901,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 90013,
+ "model": "hooks/berserk_hooks/lfish_20644_20650/lfish_20644",
+ "type": 901,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 90014,
+ "model": "hooks/berserk_hooks/mdhook_20929_20935/mdhook_20929",
+ "type": 901,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 90015,
+ "model": "hooks/berserk_hooks/mhook_20878/mhook_20878",
+ "type": 901,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 90016,
+ "model": "hooks/berserk_hooks/triple_20569_20577/triple_20569",
+ "type": 901,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 90017,
+ "model": "hooks/berserk_hooks/triple_20578_20586/triple_20578",
+ "type": 901,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 90018,
+ "model": "hooks/berserk_hooks/triple_20660_20668/triple_20660",
+ "type": 901,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 90019,
+ "model": "hooks/berserk_hooks/triple_20669_20677/triple_20669",
+ "type": 901,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 90020,
+ "model": "hooks/berserk_hooks/woffset_20623_20636/woffset_20623",
+ "type": 901,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 100001,
+ "model": "weights/Weight2_5g",
+ "type": 1001,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 100002,
+ "model": "weights/weight_olive_1g",
+ "type": 1001,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 100003,
+ "model": "sinkers/express fishing/bulsinker_30016_30056/bulsinker_30016",
+ "type": 1001,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 100004,
+ "model": "sinkers/express fishing/dsinker_30001_30005/dsinker_30001",
+ "type": 1001,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 100005,
+ "model": "sinkers/express fishing/psinker_30010_30014/psinker_30010",
+ "type": 1001,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 100006,
+ "model": "sinkers/hvz/flpsinker_30138_30339/flpsinker_30138",
+ "type": 1001,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 100007,
+ "model": "sinkers/hvz/flsinker_30110_30137/flsinker_30110",
+ "type": 1001,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 100008,
+ "model": "sinkers/hvz/horsinker_30340_30371/horsinker_30340",
+ "type": 1001,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 100009,
+ "model": "sinkers/hvz/mrksinker_30371/mrksinker_30371",
+ "type": 1001,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 100010,
+ "model": "sinkers/hvz/trisinker_30282_30463/trisinker_30282",
+ "type": 1001,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ },
+ {
+ "id": 110001,
+ "model": "Feeders/Feeder 1/FeedTrash 1",
+ "type": 1101,
+ "quality": 1,
+ "brand": 0,
+ "weight": 0,
+ "length": 0,
+ "max": 0,
+ "auto_use": 0
+ }
+]
\ No newline at end of file
diff --git a/output/tbline.json b/output/tbline.json
new file mode 100644
index 0000000..8b604fe
--- /dev/null
+++ b/output/tbline.json
@@ -0,0 +1,12 @@
+[
+ {
+ "id": 60001,
+ "strength": 40,
+ "size": 1
+ },
+ {
+ "id": 60002,
+ "strength": 40,
+ "size": 1
+ }
+]
\ No newline at end of file
diff --git a/output/tblure.json b/output/tblure.json
new file mode 100644
index 0000000..74db0f8
--- /dev/null
+++ b/output/tblure.json
@@ -0,0 +1,34 @@
+[
+ {
+ "id": 80001,
+ "hook": [
+ 700102
+ ],
+ "hook_num": 1,
+ "efficacy_base": 50
+ },
+ {
+ "id": 80002,
+ "hook": [
+ 700102
+ ],
+ "hook_num": 1,
+ "efficacy_base": 50
+ },
+ {
+ "id": 80003,
+ "hook": [
+ 0
+ ],
+ "hook_num": 1,
+ "efficacy_base": 50
+ },
+ {
+ "id": 80004,
+ "hook": [
+ 0
+ ],
+ "hook_num": 1,
+ "efficacy_base": 50
+ }
+]
\ No newline at end of file
diff --git a/output/tbreel.json b/output/tbreel.json
new file mode 100644
index 0000000..08c7c12
--- /dev/null
+++ b/output/tbreel.json
@@ -0,0 +1,66 @@
+[
+ {
+ "id": 40001,
+ "reel_type": 1,
+ "gear_ratio": [
+ 7
+ ],
+ "strength": 40
+ },
+ {
+ "id": 40002,
+ "reel_type": 1,
+ "gear_ratio": [
+ 5
+ ],
+ "strength": 40
+ },
+ {
+ "id": 40003,
+ "reel_type": 2,
+ "gear_ratio": [],
+ "strength": 0
+ },
+ {
+ "id": 40004,
+ "reel_type": 2,
+ "gear_ratio": [],
+ "strength": 0
+ },
+ {
+ "id": 40005,
+ "reel_type": 3,
+ "gear_ratio": [],
+ "strength": 0
+ },
+ {
+ "id": 40006,
+ "reel_type": 3,
+ "gear_ratio": [],
+ "strength": 0
+ },
+ {
+ "id": 40007,
+ "reel_type": 1,
+ "gear_ratio": [],
+ "strength": 0
+ },
+ {
+ "id": 40008,
+ "reel_type": 1,
+ "gear_ratio": [],
+ "strength": 0
+ },
+ {
+ "id": 40009,
+ "reel_type": 3,
+ "gear_ratio": [],
+ "strength": 0
+ },
+ {
+ "id": 40010,
+ "reel_type": 3,
+ "gear_ratio": [],
+ "strength": 0
+ }
+]
\ No newline at end of file
diff --git a/output/tbrod.json b/output/tbrod.json
new file mode 100644
index 0000000..c82a668
--- /dev/null
+++ b/output/tbrod.json
@@ -0,0 +1,90 @@
+[
+ {
+ "id": 30001,
+ "rod_type": 1,
+ "ring": 0,
+ "strength": 40,
+ "max_range": 67,
+ "construction_type": 0
+ },
+ {
+ "id": 30002,
+ "rod_type": 3,
+ "ring": 2,
+ "strength": 40,
+ "max_range": 30,
+ "construction_type": 0
+ },
+ {
+ "id": 30003,
+ "rod_type": 2,
+ "ring": 1,
+ "strength": 40,
+ "max_range": 30,
+ "construction_type": 0
+ },
+ {
+ "id": 30004,
+ "rod_type": 1,
+ "ring": 1,
+ "strength": 40,
+ "max_range": 30,
+ "construction_type": 0
+ },
+ {
+ "id": 30005,
+ "rod_type": 2,
+ "ring": 1,
+ "strength": 40,
+ "max_range": 30,
+ "construction_type": 0
+ },
+ {
+ "id": 30006,
+ "rod_type": 2,
+ "ring": 1,
+ "strength": 40,
+ "max_range": 30,
+ "construction_type": 0
+ },
+ {
+ "id": 30007,
+ "rod_type": 2,
+ "ring": 1,
+ "strength": 40,
+ "max_range": 30,
+ "construction_type": 0
+ },
+ {
+ "id": 30008,
+ "rod_type": 2,
+ "ring": 1,
+ "strength": 40,
+ "max_range": 30,
+ "construction_type": 0
+ },
+ {
+ "id": 30009,
+ "rod_type": 2,
+ "ring": 1,
+ "strength": 40,
+ "max_range": 30,
+ "construction_type": 0
+ },
+ {
+ "id": 30010,
+ "rod_type": 2,
+ "ring": 1,
+ "strength": 40,
+ "max_range": 30,
+ "construction_type": 0
+ },
+ {
+ "id": 30011,
+ "rod_type": 2,
+ "ring": 1,
+ "strength": 40,
+ "max_range": 30,
+ "construction_type": 0
+ }
+]
\ No newline at end of file
diff --git a/~$Item.xlsx b/~$Item.xlsx
deleted file mode 100644
index e69de29..0000000
diff --git a/新建 文本文档.txt b/新建 文本文档.txt
deleted file mode 100644
index e69de29..0000000