From 12f1286c022c90259fbcb55b03f421fea108ce3d Mon Sep 17 00:00:00 2001 From: walon Date: Mon, 14 Dec 2020 15:29:07 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E5=AE=8C=E5=96=84=E3=80=91=E5=AE=8C?= =?UTF-8?q?=E5=96=84=20README.md=EF=BC=8C=E8=A1=A5=E5=85=85=E7=9B=B8?= =?UTF-8?q?=E5=BA=94=E7=9A=84=E5=9B=BE=E7=89=87=E8=B5=84=E6=BA=90=20?= =?UTF-8?q?=E3=80=90=E4=BF=AE=E5=A4=8D=E3=80=91=E4=BF=AE=E5=A4=8D=E7=94=9F?= =?UTF-8?q?=E6=88=90=E8=84=9A=E6=9C=AC=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 600 +++++++++++++++++- .../test/json_datas/{tb_role.json => 1.json} | 2 +- config/Datas/test/json_datas/2.json | 30 + .../Datas/test/xml_datas/{demo.xml => 1.xml} | 2 +- config/Datas/test/xml_datas/2.xml | 78 +++ config/Defines/test.xml | 23 +- config/demo_defs.xml | 114 ++++ config/output_lua/TbDataFromJson.lua | 5 + config/output_lua/TbDataFromLua.lua | 4 + config/output_lua/TbDataFromXml.lua | 5 + config/output_lua/TbFullTypes.lua | 11 + config/output_lua/TbMultiRowRecord.lua | 6 + config/output_lua/TbMultiRowTitle.lua | 4 + config/output_lua/TbSingleton.lua | 2 + config/output_lua/TbTwoKey.lua | 8 + config/output_lua/Types.lua | 331 ++++++++++ config/生成code_cs_bin和data_bin.bat | 2 +- config/生成lua数据.bat | 4 +- docs/images/examples/ex_1.png | Bin 0 -> 9517 bytes docs/images/examples/ex_11.png | Bin 0 -> 8967 bytes docs/images/examples/ex_12.png | Bin 0 -> 4459 bytes docs/images/examples/ex_2.png | Bin 0 -> 12555 bytes docs/images/examples/ex_21.png | Bin 0 -> 6811 bytes docs/images/examples/ex_22.png | Bin 0 -> 4651 bytes docs/images/examples/ex_31.png | Bin 0 -> 26103 bytes docs/images/examples/ex_32.png | Bin 0 -> 6196 bytes docs/images/examples/ex_41.png | Bin 0 -> 4813 bytes docs/images/examples/ex_42.png | Bin 0 -> 7598 bytes docs/images/examples/ex_52.png | Bin 0 -> 5738 bytes docs/images/examples/ex_61.png | Bin 0 -> 7926 bytes docs/images/examples/ex_62.png | Bin 0 -> 5478 bytes docs/images/examples/ex_63.png | Bin 0 -> 6959 bytes docs/images/examples/ex_71.png | Bin 0 -> 6757 bytes docs/images/examples/ex_81.png | Bin 0 -> 8072 bytes docs/images/examples/ex_91.png | Bin 0 -> 6331 bytes docs/images/examples/ex_a1.png | Bin 0 -> 6364 bytes 36 files changed, 1188 insertions(+), 43 deletions(-) rename config/Datas/test/json_datas/{tb_role.json => 1.json} (97%) create mode 100644 config/Datas/test/json_datas/2.json rename config/Datas/test/xml_datas/{demo.xml => 1.xml} (97%) create mode 100644 config/Datas/test/xml_datas/2.xml create mode 100644 config/demo_defs.xml create mode 100644 config/output_lua/TbDataFromJson.lua create mode 100644 config/output_lua/TbDataFromLua.lua create mode 100644 config/output_lua/TbDataFromXml.lua create mode 100644 config/output_lua/TbFullTypes.lua create mode 100644 config/output_lua/TbMultiRowRecord.lua create mode 100644 config/output_lua/TbMultiRowTitle.lua create mode 100644 config/output_lua/TbSingleton.lua create mode 100644 config/output_lua/TbTwoKey.lua create mode 100644 config/output_lua/Types.lua create mode 100644 docs/images/examples/ex_1.png create mode 100644 docs/images/examples/ex_11.png create mode 100644 docs/images/examples/ex_12.png create mode 100644 docs/images/examples/ex_2.png create mode 100644 docs/images/examples/ex_21.png create mode 100644 docs/images/examples/ex_22.png create mode 100644 docs/images/examples/ex_31.png create mode 100644 docs/images/examples/ex_32.png create mode 100644 docs/images/examples/ex_41.png create mode 100644 docs/images/examples/ex_42.png create mode 100644 docs/images/examples/ex_52.png create mode 100644 docs/images/examples/ex_61.png create mode 100644 docs/images/examples/ex_62.png create mode 100644 docs/images/examples/ex_63.png create mode 100644 docs/images/examples/ex_71.png create mode 100644 docs/images/examples/ex_81.png create mode 100644 docs/images/examples/ex_91.png create mode 100644 docs/images/examples/ex_a1.png diff --git a/README.md b/README.md index 42cf877..5f478c1 100644 --- a/README.md +++ b/README.md @@ -10,28 +10,598 @@ ![](docs/images/icon.png) +------- + ## 介绍 -Luban 是一个强大的配置生成与缓存工具。该工具最初是为了解决传统 excel 导出工具功能过于薄弱,无法很好处理 MMORPG 游戏复杂配置需求的痛点问题。工具生成的目标可以是常规代码、配置数据、类似 protobuf 的消息代码,也可以是游戏资源如 assetbundle。 +Luban是一个强大的对象生成与缓存工具。生成目标可以是类似protobuf的消息代码、游戏配置代码、游戏配置数据、数据库代码,也可以是游戏资源如assetbundle。 -在大型项目中,由于配置或资源数据庞大,生成对象可能会花费相当多的时间。比如一个典型的 MMORPG 项目,后期全量生成配置,即使用了多线程加速,所需时间也在 10 秒的级别。Luban 在优化过程中,除了使用缓存,还使用了 client/server 模式,来加速生成过程。 +Luban适合有以下需求的开发者: +1. 无法容忍传统excel导表工具的简陋功能,希望找一个快速强大经受过上线项目检验的满足中大型游戏项目配置需求的游戏配置解决方案 +2. 不想使用protobuf,希望针对项目需求方便地自定义消息生成,满足严苛的内存和性能的要求 +3. 希望做其他自定义生成或者缓存 -自2015年以来,Luban 经历过 MMORPG、卡牌、SLG 等多个上线项目的考验,实际项目过程中不断迭代和优化,最终由一个增强型的配置工具成为一个相对完备的游戏配置数据解决方案。 +Luban另一优点是生成过程极快。对于普通的导表工作,一个典型的MMORPG项目后期全量生成配置往往需要几十秒。Luban使用client/server的云生成模式,多线程生成+对象缓存,大多数情况下可以1s内完成整个生成过程 ^_^。 -## 快速生成 lua 的例子 +------ +## 文档 + +- [主页](https://focus-creative-games.github.io/luban/index.html) +- [特性](docs/traits.md) +- [Excel 配置数据简介](docs/data_excel.md) +- [使用说明](docs/catalog.md) +- [常见问题](docs/faq.md) + +------ +## 特性 +- 支持增强的excel格式,可以在excel里比较简洁填写出任意复杂的数据。 +- 支持excel族、json、xml、lua 多种数据格式 +- 强大完备的类型系统。支持所有常见原生类型、容器类型list,set,map、枚举和结构、**多态结构**以及**可空类型** +- 灵活的数据源定义。一个表可以来自多个文件,或者一个文件内定义多个表或者一个表对应一个目录下所有文件。以及以上的组合 +- 支持表与字段级别分组。可以选择性地导出客户端或者服务器所用的表及字段。 +- 多种导出数据格式支持。支持binary、json、lua 等导出数据格式。 +- 支持数据标签。 可以选择导出符合要求的数据,发布正式数据时策划不必手动注释掉那些测试或者非正式数据了。 +- 强大的数据校验能力。支持内建数据格式检查。支持ref表引用检查(策划不用担心填错id)。支持path资源检查(策划不用担心填错资源路径)。 +- 支持 one(单例表)、map(常规key-value表)、bmap(双键表) +- 支持时间本地化。datetime类型数据会根据指定的timezone,转换为目标地区该时刻的UTC时间,方便程序使用。 +- [TODO] 支持文本静态本地化。导出时所有text类型数据正确替换为最终的本地化字符串。 +- [TODO] 支持文本动态本地化。运行时动态切换所有text类型数据为目标本地化字符串。 +- [TODO] 支持main + braches 多分支数据。对于不同地区配置有少量区别的海外项目非常有用。 +- 支持 emmylua anntations。生成的lua包含符合emmylua 格式anntations信息。配合emmylua有良好的配置代码提示能力。 +- 支持 res 资源标记。可以一键导出配置中引用的所有资源列表(icon,ui,assetbundle等等) +- 生成代码良好模块化。 +- 配置数据模块化。策划可以方便地按需求自己组织数据目录和结构,不影响逻辑表。 +- 支持主流的游戏开发语言 + - c++ (11+) + - c# (.net framework 4+. dotnet core 3+) + - java (1.6+) + - go (1.10+) + - lua (5.1+) + - js 和 typescript (3.0+) + - python (2.7+ 及 3.0+) + +- 支持主流引擎和平台 + - unity + c# + - unity + tolua,xlua + - unity + ILRuntime + - unreal + c++ + - unreal + unlua + - unreal + sluaunreal + - unreal + puerts + - cocos2d-x + lua + - cocos2d-x + js + - 微信小程序平台 + - 其他家基于js的小程序平台 + - 其他所有支持lua的引擎和平台 + - 其他所有支持js的引擎和平台 + +-------- + + + +## 快速入门 - 结构定义和数据配置 + + luban创新性提出 定义+数据源 的概念设计,配合完备的类型系统及多种数据源支持,基本解决了中大弄项目中难以配置复杂数据以及excel、json等多种配置方案不统一的问题。与常见的专注于excel的导表工具把定义和数据放在同一个excel文件的做法不同,luban的定义与数据分离,使用单独的xml定义 **表和结构**。 + +------ +### 常规的原生数据 +``` + + + + + + + + + + + + + + +``` + +![](docs/images/examples/ex_2.png) + +------ + +### 枚举 + +``` + + + + + + + + + + +``` + +![](docs/images/examples/ex_12.png) + +------ + +### 自定义结构 bean + +``` + + + + + + + + + +``` + +![](docs/images/examples/ex_22.png) + +------ + +### 多态结构 bean +``` + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +![](docs/images/examples/ex_32.png) + +------ + +### 可空数据类型 +除了string外的所有原生数据类型,以及enum类型都有相应的可空数据类型。定义方式为 <类型名>?,与c#里的Nullable类型定义方式相同。例如 bool?,int?,long?,double?, EColor? + +``` + + + + + +``` + +![](docs/images/examples/ex_42.png) + +------ + +### 简单列表 +``` + + + + + +``` + +![](docs/images/examples/ex_52.png) + +### 结构列表 +对于结构列表类型,有多种填写。根据策划的偏好,可以自由选择最合适的填法。 + +- 填法1。 全展开。 + +``` + + + + + + + + + + +``` + +![](docs/images/examples/ex_61.png) + +- 填法2。 每个Item在一个单元格内 + +``` + + + + + + + + + + +``` + +![](docs/images/examples/ex_62.png) + +- 填法3。所有数据都在一个单元格内 +``` + + + + + + + + + + +``` + +![](docs/images/examples/ex_63.png) + +------ +### 多态结构列表 +``` + + + + +``` +![](docs/images/examples/ex_71.png) +------ + +### 双主键表 +``` + + + + + + +``` + +![](docs/images/examples/ex_91.png) +------ + +### 单例表 + +单例既代码模式中单例的含义,用于配置全局只有一份的数据。 + +``` + + + + + +
+``` + +![](docs/images/examples/ex_a1.png) +------ + + +### json 数据源 + +定义 + +``` + + + + + + + + + + + + + + + + + 多态数据结构 + + + + + + + + 使用;来分隔 + + + + + + + + + + + + +
+``` + +数据 +以目录为数据源,递归遍历整个目录树,将每个json数据当作一个记录读入。 + +![](docs/images/examples/ex_81.png) + +其中 1.json 文件内容如下 + +``` + { + "x1":true, + "x2":3, + "x3":128, + "x4":1, + "x5":11223344, + "x6":1.2, + "x7":1.23432, + "x8_0":12312, + "x8":112233, + "x9":223344, + "x10":"hq", + "x12": { "x1":10}, + "x13":"B", + "x14":{"__type__": "DemoD2", "x1":1, "x2":2}, + "v2":{"x":1, "y":2}, + "v3":{"x":1.1, "y":2.2, "z":3.4}, + "v4":{"x":10.1, "y":11.2, "z":12.3, "w":13.4}, + "t1":"1970-01-01 00:00:00", + "k1":[1,2], + "k2":[2,3], + "k3":[1,3], + "k4":[1,5], + "k5":[1,6], + "k6":[1,7], + "k7":[2,3], + "k8":[[2,2],[4,10]], + "k9":[{"y1":1, "y2":true},{"y1":2, "y2":false}], + "k15":[{"__type__": "DemoD2", "x1":1, "x2":2}] + } +``` +-------- +### xml 数据源 +定义 + +``` + + + + + + + + + + + + + + + + + 多态数据结构 + + + + + + + + 使用;来分隔 + + + + + + + + + + + + +
+ +``` + +数据 + +以目录为数据源,递归遍历整个目录树,将每个xml数据当作一个记录读入。 +其中 1.xml 文件内容如下 +``` + + true + 4 + 128 + 1 + 112233445566 + 1.3 + 1112232.43123 + 112233 + 123 + 112334 + yf + + 1 + + C + + 1 + 2 + + 1,2 + 1.2,2.3,3.4 + 1.2,2.2,3.2,4.3 + 1970-01-01 00:00:00 + + 1 + 2 + + + 1 + 2 + + + 1 + 2 + + + 1 + 2 + + + 1 + 2 + + + 1 + 2 + + + 1 + 3 + + + 210 + 330 + + + + 1 + true + + + 2 + false + + + + + 1 + 2 + + + +``` +### json 数据源 + +定义 + +``` + + + + + + + + + + + + + + + + + 多态数据结构 + + + + + + + + 使用;来分隔 + + + + + + + + + + + + +
+``` + +数据 +以目录为数据源,递归遍历整个目录树,将每个lua数据当作一个记录读入。 + +其中 1.lua 文件内容如下 + +``` + return +{ + x1 = false, + x2 = 2, + x3 = 128, + x4 = 1122, + x5 = 112233445566, + x6 = 1.3, + x7 = 1122, + x8 = 12, + x8_0 = 13, + x9 = 123, + x10 = "yf", + x12 = {x1=1}, + x13 = "D", + x14 = { __type__="DemoD2", x1 = 1, x2=3}, + v2 = {x= 1,y = 2}, + v3 = {x=0.1, y= 0.2,z=0.3}, + v4 = {x=1,y=2,z=3.5,w=4}, + t1 = "1970-01-01 00:00:00", + k1 = {1,2}, + k2 = {2,3}, + k3 = {3,4}, + k4 = {1,2}, + k5 = {1,3}, + k6 = {1,2}, + k7 = {1,8}, + k8 = {[2]=10,[3]=12}, + k9 = {{y1=1,y2=true}, {y1=10,y2=false}}, + k15 = {{ __type__="DemoD2", x1 = 1, x2=3}}, +} +``` +------ +## 生成代码与数据 +以lua为例: 1) 进入 config 目录 2) 双击 生成 lua 数据.bat 3) 生成的 output_lua 目录即对像数据 4) 修改 bat 脚本路径,即可使用至项目中 - -## 使用示例 -- 配置示例 - ![](docs/images/adv/def_01.png) +----- +## 程序使用示例 - Lua 使用示例 ```Lua - local data = require("TbDataFromJson") + local data = require("TbItem") local cfg = data[32] print(cfg.name) ``` @@ -41,21 +611,15 @@ Luban 是一个强大的配置生成与缓存工具。该工具最初是为了 // 一行代码可以加载所有配置。 cfg.Tables 包含所有表的一个实例字段。 var tables = new cfg.Tables(file => return new ByteBuf(File.ReadAllBytes("output_data/" + file))); // 访问一个单例表 - Console.WriteLine(tables.TbSingleton.Name); + Console.WriteLine(tables.TbGlobal.Name); // 访问普通的 key-value 表 - Console.WriteLine(tables.TbDataFromJson.Get(12).X1); + Console.WriteLine(tables.TbItem.Get(12).X1); // 访问 双键表 Console.WriteLine(tables.TbTwoKey.Get(1, 10).X8); ``` - [更多语言的例子](docs/samples.md) -## 文档 -- [主页](https://focus-creative-games.github.io/luban/index.html) -- [特性](docs/traits.md) -- [Excel 配置数据简介](docs/data_excel.md) -- [使用说明](docs/catalog.md) -- [常见问题](docs/faq.md) ## 路线图 @@ -77,8 +641,6 @@ Luban 是一个强大的配置生成与缓存工具。该工具最初是为了 ## 有用的链接 - [.NET Core source index](https://source.dot.net) -- 社区的其它实现 - - [tabtoy](https://github.com/davyxu/tabtoy) ## 支持和联系 diff --git a/config/Datas/test/json_datas/tb_role.json b/config/Datas/test/json_datas/1.json similarity index 97% rename from config/Datas/test/json_datas/tb_role.json rename to config/Datas/test/json_datas/1.json index faa901b..873e9b9 100644 --- a/config/Datas/test/json_datas/tb_role.json +++ b/config/Datas/test/json_datas/1.json @@ -2,7 +2,7 @@ "x1":true, "x2":3, "x3":128, - "x4":1211, + "x4":1, "x5":11223344, "x6":1.2, "x7":1.23432, diff --git a/config/Datas/test/json_datas/2.json b/config/Datas/test/json_datas/2.json new file mode 100644 index 0000000..d3be8bb --- /dev/null +++ b/config/Datas/test/json_datas/2.json @@ -0,0 +1,30 @@ + { + "x1":true, + "x2":3, + "x3":128, + "x4":2, + "x5":11223344, + "x6":1.2, + "x7":1.23432, + "x8_0":12312, + "x8":112233, + "x9":223344, + "x10":"hq", + "x12": { "x1":10}, + "x13":"B", + "x14":{"__type__": "DemoD2", "x1":1, "x2":2}, + "v2":{"x":1, "y":2}, + "v3":{"x":1.1, "y":2.2, "z":3.4}, + "v4":{"x":10.1, "y":11.2, "z":12.3, "w":13.4}, + "t1":"1970-01-01 00:00:00", + "k1":[1,2], + "k2":[2,3], + "k3":[1,3], + "k4":[1,5], + "k5":[1,6], + "k6":[1,7], + "k7":[2,3], + "k8":[[2,2],[4,10]], + "k9":[{"y1":1, "y2":true},{"y1":2, "y2":false}], + "k15":[{"__type__": "DemoD2", "x1":1, "x2":2}] + } \ No newline at end of file diff --git a/config/Datas/test/xml_datas/demo.xml b/config/Datas/test/xml_datas/1.xml similarity index 97% rename from config/Datas/test/xml_datas/demo.xml rename to config/Datas/test/xml_datas/1.xml index 13f9422..b789737 100644 --- a/config/Datas/test/xml_datas/demo.xml +++ b/config/Datas/test/xml_datas/1.xml @@ -2,7 +2,7 @@ true4128 - 1122 + 11122334455661.31112232.43123 diff --git a/config/Datas/test/xml_datas/2.xml b/config/Datas/test/xml_datas/2.xml new file mode 100644 index 0000000..7b0ffbf --- /dev/null +++ b/config/Datas/test/xml_datas/2.xml @@ -0,0 +1,78 @@ + + true + 4 + 128 + 2 + 112233445566 + 1.3 + 1112232.43123 + 112233 + 123 + 112334 + yf + + 1 + + C + + 1 + 2 + + + 1,2 + 1.2,2.3,3.4 + 1.2,2.2,3.2,4.3 + + 1970-01-01 00:00:00 + + + 1 + 2 + + + 1 + 2 + + + 1 + 2 + + + 1 + 2 + + + 1 + 2 + + + 1 + 2 + + + 1 + 3 + + + + 210 + 330 + + + + + 1 + true + + + 2 + false + + + + + 1 + 2 + + + \ No newline at end of file diff --git a/config/Defines/test.xml b/config/Defines/test.xml index 0b64bf5..08bcb66 100644 --- a/config/Defines/test.xml +++ b/config/Defines/test.xml @@ -42,10 +42,10 @@ + - @@ -79,7 +79,6 @@
最常见的普通 key-value表 - @@ -144,35 +143,21 @@ - + - - - 多态数据结构 - - - - 使用;来分隔 - - + diff --git a/config/demo_defs.xml b/config/demo_defs.xml new file mode 100644 index 0000000..099963c --- /dev/null +++ b/config/demo_defs.xml @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +
+ + + \ No newline at end of file diff --git a/config/output_lua/TbDataFromJson.lua b/config/output_lua/TbDataFromJson.lua new file mode 100644 index 0000000..3c1ad34 --- /dev/null +++ b/config/output_lua/TbDataFromJson.lua @@ -0,0 +1,5 @@ +return +{ +[1] = {x4=1,x1=true,x2=3,x3=128,x5=11223344,x6=1.2,x7=1.23432,x8_0=12312,x8=112233,x9=223344,x10='hq',x12={x1=10,},x13=2,x14={ _name='test.DemoD2',x1=1,x2=2,},v2={x=1,y=2},v3={x=1.1,y=2.2,z=3.4},v4={x=10.1,y=11.2,z=12.3,w=13.4},t1=-28800,k1={1,2,},k2={2,3,},k3={1,3,},k4={1,5,},k5={1,6,},k6={1,7,},k7={2,3,},k8={[2]=2,[4]=10,},k9={{y1=1,y2=true,},{y1=2,y2=false,},},k15={{ _name='test.DemoD2',x1=1,x2=2,},},}, +[2] = {x4=2,x1=true,x2=3,x3=128,x5=11223344,x6=1.2,x7=1.23432,x8_0=12312,x8=112233,x9=223344,x10='hq',x12={x1=10,},x13=2,x14={ _name='test.DemoD2',x1=1,x2=2,},v2={x=1,y=2},v3={x=1.1,y=2.2,z=3.4},v4={x=10.1,y=11.2,z=12.3,w=13.4},t1=-28800,k1={1,2,},k2={2,3,},k3={1,3,},k4={1,5,},k5={1,6,},k6={1,7,},k7={2,3,},k8={[2]=2,[4]=10,},k9={{y1=1,y2=true,},{y1=2,y2=false,},},k15={{ _name='test.DemoD2',x1=1,x2=2,},},}, +} \ No newline at end of file diff --git a/config/output_lua/TbDataFromLua.lua b/config/output_lua/TbDataFromLua.lua new file mode 100644 index 0000000..47cc016 --- /dev/null +++ b/config/output_lua/TbDataFromLua.lua @@ -0,0 +1,4 @@ +return +{ +[1122] = {x4=1122,x1=false,x2=2,x3=128,x5=112233445566,x6=1.3,x7=1122,x8_0=13,x8=12,x9=123,x10='yf',x12={x1=1,},x13=5,x14={ _name='test.DemoD2',x1=1,x2=3,},v2={x=1,y=2},v3={x=0.1,y=0.2,z=0.3},v4={x=1,y=2,z=3.5,w=4},t1=-28800,k1={1,2,},k2={2,3,},k3={3,4,},k4={1,2,},k5={1,3,},k6={1,2,},k7={1,8,},k8={[2]=10,[3]=12,},k9={{y1=1,y2=true,},{y1=10,y2=false,},},k15={{ _name='test.DemoD2',x1=1,x2=3,},},}, +} \ No newline at end of file diff --git a/config/output_lua/TbDataFromXml.lua b/config/output_lua/TbDataFromXml.lua new file mode 100644 index 0000000..5d3b12d --- /dev/null +++ b/config/output_lua/TbDataFromXml.lua @@ -0,0 +1,5 @@ +return +{ +[1] = {x4=1,x1=true,x2=4,x3=128,x5=112233445566,x6=1.3,x7=1112232.43123,x8_0=123,x8=112233,x9=112334,x10='yf',x12={x1=1,},x13=4,x14={ _name='test.DemoD2',x1=1,x2=2,},v2={x=1,y=2},v3={x=1.2,y=2.3,z=3.4},v4={x=1.2,y=2.2,z=3.2,w=4.3},t1=-28800,k1={1,2,},k2={1,2,},k3={1,2,},k4={1,2,},k5={1,2,},k6={1,2,},k7={1,3,},k8={[2]=10,[3]=30,},k9={{y1=1,y2=true,},{y1=2,y2=false,},},k15={{ _name='test.DemoD2',x1=1,x2=2,},},}, +[2] = {x4=2,x1=true,x2=4,x3=128,x5=112233445566,x6=1.3,x7=1112232.43123,x8_0=123,x8=112233,x9=112334,x10='yf',x12={x1=1,},x13=4,x14={ _name='test.DemoD2',x1=1,x2=2,},v2={x=1,y=2},v3={x=1.2,y=2.3,z=3.4},v4={x=1.2,y=2.2,z=3.2,w=4.3},t1=-28800,k1={1,2,},k2={1,2,},k3={1,2,},k4={1,2,},k5={1,2,},k6={1,2,},k7={1,3,},k8={[2]=10,[3]=30,},k9={{y1=1,y2=true,},{y1=2,y2=false,},},k15={{ _name='test.DemoD2',x1=1,x2=2,},},}, +} \ No newline at end of file diff --git a/config/output_lua/TbFullTypes.lua b/config/output_lua/TbFullTypes.lua new file mode 100644 index 0000000..955f7ab --- /dev/null +++ b/config/output_lua/TbFullTypes.lua @@ -0,0 +1,11 @@ +return +{ +[1] = {x4=10000,x1=true,x2=5,x3=1,x5=13234234234,x6=1.28,x7=1.23457891,x8_0=1234,x8=1234,x9=111111111,x10='huang',x12={x1=1988,},x13=1,x14={ _name='test.DemoD2',x1=1,x2=2,},v2={x=1,y=2},v3={x=2,y=3,z=4},v4={x=10.2,y=2.3,z=3.4,w=12.8},t1=935460549,k1={1,2,3,},k2={1,2,4,},k3={1,2,5,},k4={1,2,6,},k5={1,2,7,},k6={1,2,8,},k7={1,2,9,},k8={[1]=2,[3]=4,},k9={{y1=1,y2=true,},{y1=2,y2=false,},},k15={{ _name='test.DemoD2',x1=1,x2=2,},{ _name='test.DemoE1',x1=1,x3=2,x4=3,},},}, +[3] = {x4=10001,x1=true,x2=5,x3=3,x5=13234234234,x6=1.28,x7=1.23457891,x8_0=1234,x8=1234,x9=111111111,x10='huang',x12={x1=1988,},x13=1,x14={ _name='test.DemoD2',x1=1,x2=2,},v2={x=1,y=2},v3={x=2,y=3,z=4},v4={x=10.2,y=2.3,z=3.4,w=12.8},t1=935460549,k1={1,2,3,},k2={1,2,4,},k3={1,2,5,},k4={1,2,6,},k5={1,2,7,},k6={1,2,8,},k7={1,2,9,},k8={[1]=2,[3]=4,},k9={{y1=1,y2=true,},{y1=2,y2=false,},},k15={{ _name='test.DemoD2',x1=1,x2=2,},{ _name='test.DemoE1',x1=1,x3=2,x4=5,},},}, +[4] = {x4=10002,x1=true,x2=5,x3=4,x5=13234234234,x6=1.28,x7=1.23457891,x8_0=1234,x8=1234,x9=111111111,x10='huang',x12={x1=1988,},x13=1,x14={ _name='test.DemoD2',x1=1,x2=2,},v2={x=1,y=2},v3={x=2,y=3,z=4},v4={x=10.2,y=2.3,z=3.4,w=12.8},t1=1577808000,k1={1,2,3,},k2={1,2,4,},k3={1,2,5,},k4={1,2,6,},k5={1,2,7,},k6={1,2,8,},k7={1,2,9,},k8={[1]=2,[3]=4,},k9={{y1=1,y2=true,},{y1=2,y2=false,},},k15={{ _name='test.DemoD2',x1=1,x2=2,},{ _name='test.DemoE1',x1=1,x3=2,x4=6,},},}, +[5] = {x4=10003,x1=true,x2=5,x3=5,x5=13234234234,x6=1.28,x7=1.23457891,x8_0=1234,x8=1234,x9=111111111,x10='huang',x12={x1=1988,},x13=1,x14={ _name='test.DemoD2',x1=1,x2=2,},v2={x=1,y=2},v3={x=2,y=3,z=4},v4={x=10.2,y=2.3,z=3.4,w=12.8},t1=935460549,k1={1,2,3,},k2={1,2,4,},k3={1,2,5,},k4={1,2,6,},k5={1,2,7,},k6={1,2,8,},k7={1,2,9,},k8={[1]=2,[3]=4,},k9={{y1=1,y2=true,},{y1=2,y2=false,},},k15={{ _name='test.DemoD2',x1=1,x2=2,},{ _name='test.DemoE1',x1=1,x3=2,x4=7,},},}, +[6] = {x4=10001,x1=true,x2=5,x3=6,x5=13234234234,x6=1.28,x7=1.23457891,x8_0=1234,x8=1234,x9=111111111,x10='huang',x12={x1=1988,},x13=1,x14={ _name='test.DemoD2',x1=1,x2=2,},v2={x=1,y=2},v3={x=2,y=3,z=4},v4={x=10.2,y=2.3,z=3.4,w=12.8},t1=1577808000,k1={1,2,3,},k2={1,2,4,},k3={1,2,5,},k4={1,2,6,},k5={1,2,7,},k6={1,2,8,},k7={1,2,9,},k8={[1]=2,[3]=4,},k9={{y1=1,y2=true,},{y1=2,y2=false,},},k15={{ _name='test.DemoD2',x1=1,x2=2,},{ _name='test.DemoE1',x1=1,x3=2,x4=8,},},}, +[7] = {x4=10002,x1=true,x2=5,x3=7,x5=13234234234,x6=1.28,x7=1.23457891,x8_0=1234,x8=1234,x9=111111111,x10='huang',x12={x1=1988,},x13=1,x14={ _name='test.DemoD2',x1=1,x2=2,},v2={x=1,y=2},v3={x=2,y=3,z=4},v4={x=10.2,y=2.3,z=3.4,w=12.8},t1=935460549,k1={1,2,3,},k2={1,2,4,},k3={1,2,5,},k4={1,2,6,},k5={1,2,7,},k6={1,2,8,},k7={1,2,9,},k8={[1]=2,[3]=4,},k9={{y1=1,y2=true,},{y1=2,y2=false,},},k15={{ _name='test.DemoD2',x1=1,x2=2,},{ _name='test.DemoE1',x1=1,x3=2,x4=9,},},}, +[8] = {x4=10003,x1=true,x2=5,x3=8,x5=2,x6=1.28,x7=1.23457891,x8_0=1234,x8=1234,x9=111111111,x10='huang',x12={x1=1988,},x13=1,x14={ _name='test.DemoD2',x1=1,x2=2,},v2={x=1,y=2},v3={x=2,y=3,z=4},v4={x=10.2,y=2.3,z=3.4,w=12.8},t1=1577808000,k1={1,2,3,},k2={1,2,4,},k3={1,2,5,},k4={1,2,6,},k5={1,2,7,},k6={1,2,8,},k7={1,2,9,},k8={[1]=2,[3]=4,},k9={{y1=1,y2=true,},{y1=2,y2=false,},},k15={{ _name='test.DemoD2',x1=1,x2=2,},{ _name='test.DemoE1',x1=1,x3=2,x4=10,},},}, +[9] = {x4=1,x1=true,x2=5,x3=9,x5=13234234234,x6=1.28,x7=1.23457891,x8_0=1234,x8=1234,x9=111111111,x10='huang',x12={x1=1988,},x13=1,x14={ _name='test.DemoD2',x1=1,x2=2,},v2={x=1,y=2},v3={x=2,y=3,z=4},v4={x=10.2,y=2.3,z=3.4,w=12.8},t1=935460549,k1={1,2,3,},k2={1,2,4,},k3={1,2,5,},k4={1,2,6,},k5={1,2,7,},k6={1,2,8,},k7={1,2,9,},k8={[1]=2,[3]=4,},k9={{y1=1,y2=true,},{y1=2,y2=false,},},k15={{ _name='test.DemoD2',x1=1,x2=2,},{ _name='test.DemoE1',x1=1,x3=2,x4=11,},},}, +} \ No newline at end of file diff --git a/config/output_lua/TbMultiRowRecord.lua b/config/output_lua/TbMultiRowRecord.lua new file mode 100644 index 0000000..f593027 --- /dev/null +++ b/config/output_lua/TbMultiRowRecord.lua @@ -0,0 +1,6 @@ +return +{ +[1] = {id=1,name='xxx',one_rows={{id=1,x=2,},},multi_rows1={{id=1,x=2,},},multi_rows2={{id=1,x=2,},},multi_rows3={{id=1,x=2,y=3,},},multi_rows4={[1]={id=1,x=2,y=3,},},}, +[2] = {id=2,name='xxx',one_rows={{id=2,x=4,},},multi_rows1={{id=2,x=4,},},multi_rows2={{id=3,x=4,},{id=3,x=4,},},multi_rows3={{id=2,x=3,y=4,},{id=2,x=3,y=4,},},multi_rows4={[2]={id=4,x=5,y=4,},},}, +[3] = {id=3,name='ds',one_rows={{id=1,x=2,},},multi_rows1={{id=1,x=2,},{id=2,x=4,},},multi_rows2={{id=3,x=4,},{id=3,x=4,},},multi_rows3={{id=1,x=2,y=3,},{id=2,x=3,y=4,},},multi_rows4={[1]={id=1,x=2,y=3,},[2]={id=4,x=5,y=4,},[3]={id=4,x=5,y=4,},},}, +} \ No newline at end of file diff --git a/config/output_lua/TbMultiRowTitle.lua b/config/output_lua/TbMultiRowTitle.lua new file mode 100644 index 0000000..c5ce13f --- /dev/null +++ b/config/output_lua/TbMultiRowTitle.lua @@ -0,0 +1,4 @@ +return +{ +[1] = {id=1,name='xxx',x1={y2={z2=2,z3=3,},y3=4,},x2={{z2=1,z3=2,},{z2=3,z3=4,},},x3={{z2=1,z3=2,},{z2=3,z3=4,},},}, +} \ No newline at end of file diff --git a/config/output_lua/TbSingleton.lua b/config/output_lua/TbSingleton.lua new file mode 100644 index 0000000..acb8f3e --- /dev/null +++ b/config/output_lua/TbSingleton.lua @@ -0,0 +1,2 @@ +return +{id=5,name='aabbcc',date={ _name='test.DemoD5',x1=1,time={start_time=398966400,end_time=936806400,},},} \ No newline at end of file diff --git a/config/output_lua/TbTwoKey.lua b/config/output_lua/TbTwoKey.lua new file mode 100644 index 0000000..3fc4f5d --- /dev/null +++ b/config/output_lua/TbTwoKey.lua @@ -0,0 +1,8 @@ +return +{ +[128] = +{ +[1] = {x4=1,x1=true,x2=3,x3=128,x5=11223344,x6=1.2,x7=1.23432,x8_0=12312,x8=112233,x9=223344,x10='hq',x12={x1=10,},x13=2,x14={ _name='test.DemoD2',x1=1,x2=2,},v2={x=1,y=2},v3={x=1.1,y=2.2,z=3.4},v4={x=10.1,y=11.2,z=12.3,w=13.4},t1=-28800,k1={1,2,},k2={2,3,},k3={1,3,},k4={1,5,},k5={1,6,},k6={1,7,},k7={2,3,},k8={[2]=2,[4]=10,},k9={{y1=1,y2=true,},{y1=2,y2=false,},},k15={{ _name='test.DemoD2',x1=1,x2=2,},},}, +[2] = {x4=2,x1=true,x2=3,x3=128,x5=11223344,x6=1.2,x7=1.23432,x8_0=12312,x8=112233,x9=223344,x10='hq',x12={x1=10,},x13=2,x14={ _name='test.DemoD2',x1=1,x2=2,},v2={x=1,y=2},v3={x=1.1,y=2.2,z=3.4},v4={x=10.1,y=11.2,z=12.3,w=13.4},t1=-28800,k1={1,2,},k2={2,3,},k3={1,3,},k4={1,5,},k5={1,6,},k6={1,7,},k7={2,3,},k8={[2]=2,[4]=10,},k9={{y1=1,y2=true,},{y1=2,y2=false,},},k15={{ _name='test.DemoD2',x1=1,x2=2,},},}, +}, +} \ No newline at end of file diff --git a/config/output_lua/Types.lua b/config/output_lua/Types.lua new file mode 100644 index 0000000..9ddd9c8 --- /dev/null +++ b/config/output_lua/Types.lua @@ -0,0 +1,331 @@ + +--[[------------------------------------------------------------------------------ +-- +-- This code was generated by a tool. +-- Changes to this file may cause incorrect behavior and will be lost if +-- the code is regenerated. +-- +--]]------------------------------------------------------------------------------ + + + +local consts = +{ + ---@class test.DemoConst + ---@field public x1 int + ---@field public x2 long + ---@field public x3 float + ---@field public x4 double + ['test.DemoConst'] = { x1=0, x2=3242, x3=444.3, x4=55.3, }; +} + +local enums = +{ + ---@class test.DemoEnum + ---@field public A int + ---@field public B int + ---@field public C int + ---@field public D int + ['test.DemoEnum'] = { A=1, B=2, C=4, D=5, }; + ---@class test.ETestUeType + ---@field public WHITE int + ---@field public BLACK int + ['test.ETestUeType'] = { WHITE=0, BLACK=1, }; + ---@class test.ETestEmptyEnum + ['test.ETestEmptyEnum'] = { }; + ---@class test.ETestEmptyEnum2 + ---@field public SMALL_THAN_256 int + ---@field public X_256 int + ---@field public X_257 int + ['test.ETestEmptyEnum2'] = { SMALL_THAN_256=255, X_256=256, X_257=257, }; +} + +local beans = {} +---@class test.DemoType1 +---@field public x1 int +beans['test.DemoType1'] = +{ + { name='x1', type='int'}, +} + +---@class test.DemoDynamic +---@field public x1 int +beans['test.DemoDynamic'] = +{ + { name='x1', type='int'}, +} + +---@class test.DemoD2 :test.DemoDynamic +---@field public x2 int +beans['test.DemoD2'] = +{ + { name='x1', type='int'}, + { name='x2', type='int'}, +} + +---@class test.DemoD3 :test.DemoDynamic +---@field public x3 int +beans['test.DemoD3'] = +{ + { name='x1', type='int'}, + { name='x3', type='int'}, +} + +---@class test.DemoE1 :test.DemoD3 +---@field public x4 int +beans['test.DemoE1'] = +{ + { name='x1', type='int'}, + { name='x3', type='int'}, + { name='x4', type='int'}, +} + +---@class test.DemoD5 :test.DemoDynamic +---@field public time test.DateTimeRange +beans['test.DemoD5'] = +{ + { name='x1', type='int'}, + { name='time', type='test.DateTimeRange'}, +} + +---@class test.DemoE2 +---@field public y1 int +---@field public y2 bool +beans['test.DemoE2'] = +{ + { name='y1', type='int'}, + { name='y2', type='bool'}, +} + +---@class test.DemoType2 +---@field public x4 int +---@field public x1 bool +---@field public x2 byte +---@field public x3 short +---@field public x5 long +---@field public x6 float +---@field public x7 double +---@field public x8_0 short +---@field public x8 int +---@field public x9 long +---@field public x10 string +---@field public x12 test.DemoType1 +---@field public x13 test.DemoEnum +---@field public x14 test.DemoDynamic +---@field public v2 vector2 +---@field public v3 vector3 +---@field public v4 vector4 +---@field public t1 int +---@field public k1 int[] +---@field public k2 int[] +---@field public k3 int[] +---@field public k4 int[] +---@field public k5 int[] +---@field public k6 int[] +---@field public k7 int[] +---@field public k8 table +---@field public k9 test.DemoE2[] +---@field public k15 test.DemoDynamic[] +beans['test.DemoType2'] = +{ + { name='x4', type='int'}, + { name='x1', type='bool'}, + { name='x2', type='byte'}, + { name='x3', type='short'}, + { name='x5', type='long'}, + { name='x6', type='float'}, + { name='x7', type='double'}, + { name='x8_0', type='short'}, + { name='x8', type='int'}, + { name='x9', type='long'}, + { name='x10', type='string'}, + { name='x12', type='test.DemoType1'}, + { name='x13', type='test.DemoEnum'}, + { name='x14', type='test.DemoDynamic'}, + { name='v2', type='vector2'}, + { name='v3', type='vector3'}, + { name='v4', type='vector4'}, + { name='t1', type='int'}, + { name='k1', type='int[]'}, + { name='k2', type='int[]'}, + { name='k3', type='int[]'}, + { name='k4', type='int[]'}, + { name='k5', type='int[]'}, + { name='k6', type='int[]'}, + { name='k7', type='int[]'}, + { name='k8', type='table'}, + { name='k9', type='test.DemoE2[]'}, + { name='k15', type='test.DemoDynamic[]'}, +} + +---@class test.DateTimeRange +---@field public start_time int +---@field public end_time int +beans['test.DateTimeRange'] = +{ + { name='start_time', type='int'}, + { name='end_time', type='int'}, +} + +---@class test.DemoSingletonType +---@field public id int +---@field public name string +---@field public date test.DemoDynamic +beans['test.DemoSingletonType'] = +{ + { name='id', type='int'}, + { name='name', type='string'}, + { name='date', type='test.DemoDynamic'}, +} + +---@class test.MultiRowType1 +---@field public id int +---@field public x int +beans['test.MultiRowType1'] = +{ + { name='id', type='int'}, + { name='x', type='int'}, +} + +---@class test.MultiRowType2 +---@field public id int +---@field public x int +---@field public y float +beans['test.MultiRowType2'] = +{ + { name='id', type='int'}, + { name='x', type='int'}, + { name='y', type='float'}, +} + +---@class test.MultiRowRecord +---@field public id int +---@field public name string +---@field public one_rows test.MultiRowType1[] +---@field public multi_rows1 test.MultiRowType1[] +---@field public multi_rows2 test.MultiRowType1[] +---@field public multi_rows3 test.MultiRowType2[] +---@field public multi_rows4 table +beans['test.MultiRowRecord'] = +{ + { name='id', type='int'}, + { name='name', type='string'}, + { name='one_rows', type='test.MultiRowType1[]'}, + { name='multi_rows1', type='test.MultiRowType1[]'}, + { name='multi_rows2', type='test.MultiRowType1[]'}, + { name='multi_rows3', type='test.MultiRowType2[]'}, + { name='multi_rows4', type='table'}, +} + +---@class test.TestUeType +---@field public x1 bool +---@field public x2 byte +---@field public x3 short +---@field public x4 int +---@field public x5 long +---@field public x6 float +---@field public x10 string +---@field public x12 test.DemoType1 +---@field public x13 test.ETestUeType +---@field public v2 vector2 +---@field public v3 vector3 +---@field public v4 vector4 +---@field public t1 int +---@field public k1 int[] +---@field public k2 int[] +---@field public k3 int[] +---@field public k4 int[] +---@field public k5 int[] +---@field public k6 int[] +---@field public k7 int[] +---@field public k8 table +---@field public k9 test.DemoE2[] +beans['test.TestUeType'] = +{ + { name='x1', type='bool'}, + { name='x2', type='byte'}, + { name='x3', type='short'}, + { name='x4', type='int'}, + { name='x5', type='long'}, + { name='x6', type='float'}, + { name='x10', type='string'}, + { name='x12', type='test.DemoType1'}, + { name='x13', type='test.ETestUeType'}, + { name='v2', type='vector2'}, + { name='v3', type='vector3'}, + { name='v4', type='vector4'}, + { name='t1', type='int'}, + { name='k1', type='int[]'}, + { name='k2', type='int[]'}, + { name='k3', type='int[]'}, + { name='k4', type='int[]'}, + { name='k5', type='int[]'}, + { name='k6', type='int[]'}, + { name='k7', type='int[]'}, + { name='k8', type='table'}, + { name='k9', type='test.DemoE2[]'}, +} + +---@class test.H1 +---@field public y2 test.H2 +---@field public y3 int +beans['test.H1'] = +{ + { name='y2', type='test.H2'}, + { name='y3', type='int'}, +} + +---@class test.H2 +---@field public z2 int +---@field public z3 int +beans['test.H2'] = +{ + { name='z2', type='int'}, + { name='z3', type='int'}, +} + +---@class test.MultiRowTitle +---@field public id int +---@field public name string +---@field public x1 test.H1 +---@field public x2 test.H2[] +---@field public x3 test.H2[] +beans['test.MultiRowTitle'] = +{ + { name='id', type='int'}, + { name='name', type='string'}, + { name='x1', type='test.H1'}, + { name='x2', type='test.H2[]'}, + { name='x3', type='test.H2[]'}, +} + +---@class test.login.RoleInfo +---@field public role_id long +beans['test.login.RoleInfo'] = +{ + { name='role_id', type='long'}, +} + + +local tables = +{ + { name='TbFullTypes', file='test.TbFullTypes.bin', mode='map', index='x3', value_type='test.DemoType2' }, + + { name='TbSingleton', file='test.TbSingleton.bin', mode='one', value_type='test.DemoSingletonType'}, + + { name='TbDataFromJson', file='test.TbDataFromJson.bin', mode='map', index='x4', value_type='test.DemoType2' }, + + { name='TbDataFromXml', file='test.TbDataFromXml.bin', mode='map', index='x4', value_type='test.DemoType2' }, + + { name='TbDataFromLua', file='test.TbDataFromLua.bin', mode='map', index='x4', value_type='test.DemoType2' }, + + { name='TbTwoKey', file='test.TbTwoKey.bin', mode='bmap', index1='x3', index2='x4', value_type='test.DemoType2' }, + + { name='TbMultiRowRecord', file='test.TbMultiRowRecord.bin', mode='map', index='id', value_type='test.MultiRowRecord' }, + + { name='TbMultiRowTitle', file='test.TbMultiRowTitle.bin', mode='map', index='id', value_type='test.MultiRowTitle' }, + +} + +return { consts = consts, enums = enums, beans = beans, tables = tables } + diff --git a/config/生成code_cs_bin和data_bin.bat b/config/生成code_cs_bin和data_bin.bat index 3e21584..6e1525c 100644 --- a/config/生成code_cs_bin和data_bin.bat +++ b/config/生成code_cs_bin和data_bin.bat @@ -1,5 +1,5 @@ ..\src\Luban.Client\bin\Debug\net5.0\Luban.Client.exe ^ - -h 127.0.0.1 ^ + -h %LUBAN_SERVER_IP% ^ -j cfg ^ -- ^ -d Defines/root.xml ^ diff --git a/config/生成lua数据.bat b/config/生成lua数据.bat index 05d2765..3002845 100644 --- a/config/生成lua数据.bat +++ b/config/生成lua数据.bat @@ -1,5 +1,5 @@ -..\src\Luban.Client\bin\Debug\netcoreapp3.1\Luban.Client.exe ^ - -h 81.69.4.240 ^ +..\src\Luban.Client\bin\Debug\net5.0\Luban.Client.exe ^ + -h %LUBAN_SERVER_IP% ^ -j cfg ^ -- ^ -d Defines/root.xml ^ diff --git a/docs/images/examples/ex_1.png b/docs/images/examples/ex_1.png new file mode 100644 index 0000000000000000000000000000000000000000..b924ba89d05cad095018d97f396af5237e90cea0 GIT binary patch literal 9517 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 literal 0 HcmV?d00001 diff --git a/docs/images/examples/ex_11.png b/docs/images/examples/ex_11.png new file mode 100644 index 0000000000000000000000000000000000000000..970323eec25292fc080c1622ad5d02e31f561e2d GIT binary patch literal 8967 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 HZh!nA5AJpo literal 0 HcmV?d00001 diff --git a/docs/images/examples/ex_21.png b/docs/images/examples/ex_21.png new file mode 100644 index 0000000000000000000000000000000000000000..183544d53561e7efdc56089ecdb64052b0b2e63e GIT binary patch literal 6811 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 literal 0 HcmV?d00001 diff --git a/docs/images/examples/ex_31.png b/docs/images/examples/ex_31.png new file mode 100644 index 0000000000000000000000000000000000000000..be1dc52d5a3e8538f3b384cfcbb4454ca4c1e72d GIT binary patch literal 26103 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 F{ue_>#e)C< literal 0 HcmV?d00001 diff --git a/docs/images/examples/ex_32.png b/docs/images/examples/ex_32.png new file mode 100644 index 0000000000000000000000000000000000000000..8b25d6e52a2b8c1a8c7ded501716379ebf150a0e GIT binary patch literal 6196 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 MXu@xo+_Vk-FNX(!v;Y7A literal 0 HcmV?d00001 diff --git a/docs/images/examples/ex_52.png b/docs/images/examples/ex_52.png new file mode 100644 index 0000000000000000000000000000000000000000..dc0646d5fe12a048844d6af24f80076b8abc38fc GIT binary patch literal 5738 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 DpR3c& literal 0 HcmV?d00001 diff --git a/docs/images/examples/ex_61.png b/docs/images/examples/ex_61.png new file mode 100644 index 0000000000000000000000000000000000000000..2237b06f64f0f1d7f16e9b5d0444bb21855d5ee1 GIT binary patch literal 7926 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 Mik5Q8ZL84#0x;jg9smFU literal 0 HcmV?d00001 diff --git a/docs/images/examples/ex_62.png b/docs/images/examples/ex_62.png new file mode 100644 index 0000000000000000000000000000000000000000..da4f1f338e1468c8c71451a1ec3e73352d7e35b4 GIT binary patch literal 5478 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 Y)-Bwws&8FA55^1VXc}r%-nNbSKMTD+FaQ7m literal 0 HcmV?d00001 diff --git a/docs/images/examples/ex_71.png b/docs/images/examples/ex_71.png new file mode 100644 index 0000000000000000000000000000000000000000..48050537912432cd34d780840f8d7d0a8ce08477 GIT binary patch literal 6757 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 literal 0 HcmV?d00001 diff --git a/docs/images/examples/ex_81.png b/docs/images/examples/ex_81.png new file mode 100644 index 0000000000000000000000000000000000000000..4701dcd1cf4edae1e1de075552bffbbfd499a15c GIT binary patch literal 8072 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 RogQ`oT`eQcDs`uq{{w?%fIR>J literal 0 HcmV?d00001 diff --git a/docs/images/examples/ex_91.png b/docs/images/examples/ex_91.png new file mode 100644 index 0000000000000000000000000000000000000000..4e690a28da12fa39d371f9673a866af4db5003a4 GIT binary patch literal 6331 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 b?4HLHYd(mVm>EzGB>=F7u6n5|Eckx_Bu%&( literal 0 HcmV?d00001 diff --git a/docs/images/examples/ex_a1.png b/docs/images/examples/ex_a1.png new file mode 100644 index 0000000000000000000000000000000000000000..57b4865fbe7d8a7095d3a8a066d13d925bc69e4d GIT binary patch literal 6364 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 qHes{%lb9W3p