From e8f8cb3ce9e99f93eb7e46490b9beeea565af057 Mon Sep 17 00:00:00 2001 From: "DESKTOP-5RP3AKU\\Jisol" <2858626794@qq.com> Date: Sun, 5 Nov 2023 04:40:09 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=BF=E7=94=A8Luban?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CocosConfig.bat | 15 +++ DataTables/Datas/Battle/Role/角色表.xlsx | Bin 0 -> 10372 bytes DataTables/Datas/__beans__.xlsx | Bin 0 -> 9317 bytes DataTables/Datas/__enums__.xlsx | Bin 0 -> 9326 bytes DataTables/Datas/__tables__.xlsx | Bin 0 -> 9412 bytes DataTables/Datas/item.xlsx | Bin 0 -> 11214 bytes DataTables/Defines/builtin.xml | 17 +++ DataTables/gen.sh | 11 ++ DataTables/luban.conf | 22 ++++ DataTables/output/item_tbitem.json | 104 ++++++++++++++++++ JavaConfig.bat | 15 +++ .../assets/resources/config/data/schema.ts | 98 +++++++++++++++++ .../assets/resources/config/json/tbgrole.json | 54 +++++++++ JisolGameServer/Main/pom.xml | 4 + .../main/java/cfg/TB/Battle/Role/GRole.java | 61 ++++++++++ .../Main/src/main/java/cfg/Tables.java | 29 +++++ .../Main/src/main/java/cfg/TbGRole.java | 37 +++++++ .../jisol/game/listener/InitGameListener.java | 15 ++- .../src/main/java}/luban/AbstractBean.java | 0 .../Main/src/main/java}/luban/ByteBuf.java | 0 .../java}/luban/SerializationException.java | 0 .../Main/src/main/resources/json/GMap.json | 1 - .../Main/src/main/resources/json/GRole.json | 1 - .../src/main/resources/json/GRoleAttack.json | 1 - .../resources/json/GRoleAttackBullet.json | 1 - .../resources/json/GRoleAttackEffect.json | 1 - .../src/main/resources/json/GRoleSkill.json | 1 - .../main/resources/json/GRoleSkillEffect.json | 1 - .../Main/src/main/resources/json/tbgrole.json | 54 +++++++++ .../Java_bin/src/main/gen/cfg/Tables.java | 12 ++ .../Java_bin/src/main/gen/cfg/item/Item.java | 9 ++ .../src/main/gen/cfg/test/DemoEnum.java | 1 + .../src/main/gen/cfg/test/DemoGroup.java | 12 ++ .../src/main/gen/cfg/test/InnerGroup.java | 9 ++ .../Java_bin/src/main/gen/cfg/test/Path.java | 41 +++++++ .../src/main/gen/cfg/test/TbDemoGroup_C.java | 36 ++++++ .../src/main/gen/cfg/test/TbDemoGroup_E.java | 36 ++++++ .../src/main/gen/cfg/test/TbDemoGroup_S.java | 36 ++++++ .../src/main/gen/cfg/test/TbPath.java | 36 ++++++ .../src/main/gen/cfg/test/TestExcelBean1.java | 62 +++++++++++ .../java_json/src/gen/cfg/Tables.java | 3 + .../java_json/src/gen/cfg/test/DemoEnum.java | 1 + .../java_json/src/gen/cfg/test/Path.java | 43 ++++++++ .../java_json/src/gen/cfg/test/TbPath.java | 37 +++++++ 44 files changed, 909 insertions(+), 8 deletions(-) create mode 100644 CocosConfig.bat create mode 100644 DataTables/Datas/Battle/Role/角色表.xlsx create mode 100644 DataTables/Datas/__beans__.xlsx create mode 100644 DataTables/Datas/__enums__.xlsx create mode 100644 DataTables/Datas/__tables__.xlsx create mode 100644 DataTables/Datas/item.xlsx create mode 100644 DataTables/Defines/builtin.xml create mode 100644 DataTables/gen.sh create mode 100644 DataTables/luban.conf create mode 100644 DataTables/output/item_tbitem.json create mode 100644 JavaConfig.bat create mode 100644 JisolGameCocos/assets/resources/config/data/schema.ts create mode 100644 JisolGameCocos/assets/resources/config/json/tbgrole.json create mode 100644 JisolGameServer/Main/src/main/java/cfg/TB/Battle/Role/GRole.java create mode 100644 JisolGameServer/Main/src/main/java/cfg/Tables.java create mode 100644 JisolGameServer/Main/src/main/java/cfg/TbGRole.java rename {luban_examples/Projects/java_json/src/corelib => JisolGameServer/Main/src/main/java}/luban/AbstractBean.java (100%) rename {luban_examples/Projects/java_json/src/corelib => JisolGameServer/Main/src/main/java}/luban/ByteBuf.java (100%) rename {luban_examples/Projects/java_json/src/corelib => JisolGameServer/Main/src/main/java}/luban/SerializationException.java (100%) delete mode 100644 JisolGameServer/Main/src/main/resources/json/GMap.json delete mode 100644 JisolGameServer/Main/src/main/resources/json/GRole.json delete mode 100644 JisolGameServer/Main/src/main/resources/json/GRoleAttack.json delete mode 100644 JisolGameServer/Main/src/main/resources/json/GRoleAttackBullet.json delete mode 100644 JisolGameServer/Main/src/main/resources/json/GRoleAttackEffect.json delete mode 100644 JisolGameServer/Main/src/main/resources/json/GRoleSkill.json delete mode 100644 JisolGameServer/Main/src/main/resources/json/GRoleSkillEffect.json create mode 100644 JisolGameServer/Main/src/main/resources/json/tbgrole.json create mode 100644 luban_examples/Projects/Java_bin/src/main/gen/cfg/test/Path.java create mode 100644 luban_examples/Projects/Java_bin/src/main/gen/cfg/test/TbDemoGroup_C.java create mode 100644 luban_examples/Projects/Java_bin/src/main/gen/cfg/test/TbDemoGroup_E.java create mode 100644 luban_examples/Projects/Java_bin/src/main/gen/cfg/test/TbDemoGroup_S.java create mode 100644 luban_examples/Projects/Java_bin/src/main/gen/cfg/test/TbPath.java create mode 100644 luban_examples/Projects/Java_bin/src/main/gen/cfg/test/TestExcelBean1.java create mode 100644 luban_examples/Projects/java_json/src/gen/cfg/test/Path.java create mode 100644 luban_examples/Projects/java_json/src/gen/cfg/test/TbPath.java diff --git a/CocosConfig.bat b/CocosConfig.bat new file mode 100644 index 00000000..306ba5ce --- /dev/null +++ b/CocosConfig.bat @@ -0,0 +1,15 @@ +set WORKSPACE=.\luban_examples + +set LUBAN_DLL=%WORKSPACE%\Tools\Luban\Luban.dll +set P_PATH=.\JisolGameCocos +set CONF_ROOT=.\DataTables + +dotnet %LUBAN_DLL% ^ + -t all ^ + -c typescript-json ^ + -d json ^ + --conf %CONF_ROOT%\luban.conf ^ + -x outputCodeDir=%P_PATH%\assets\resources\config\data ^ + -x outputDataDir=%P_PATH%\assets\resources\config\json + +pause \ No newline at end of file diff --git a/DataTables/Datas/Battle/Role/角色表.xlsx b/DataTables/Datas/Battle/Role/角色表.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..04b24ad5bd4329842304a1e075e74b90f4a987ea GIT binary patch literal 10372 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 literal 0 HcmV?d00001 diff --git a/DataTables/Datas/__tables__.xlsx b/DataTables/Datas/__tables__.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..e3a9799374be23be52124fe6aa69267fb59c585f GIT binary patch literal 9412 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 literal 0 HcmV?d00001 diff --git a/DataTables/Datas/item.xlsx b/DataTables/Datas/item.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..c463653eb18cdc5fedf3715349e3f27a9dd094d8 GIT binary patch literal 11214 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 literal 0 HcmV?d00001 diff --git a/DataTables/Defines/builtin.xml b/DataTables/Defines/builtin.xml new file mode 100644 index 00000000..e535ff48 --- /dev/null +++ b/DataTables/Defines/builtin.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/DataTables/gen.sh b/DataTables/gen.sh new file mode 100644 index 00000000..5f48c8e8 --- /dev/null +++ b/DataTables/gen.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +WORKSPACE=.. +LUBAN_DLL=$WORKSPACE/Tools/Luban/Luban.dll +CONF_ROOT=. + +dotnet $LUBAN_DLL \ + -t all \ + -d json \ + --conf $CONF_ROOT/luban.conf \ + -x outputDataDir=output \ No newline at end of file diff --git a/DataTables/luban.conf b/DataTables/luban.conf new file mode 100644 index 00000000..9bbac950 --- /dev/null +++ b/DataTables/luban.conf @@ -0,0 +1,22 @@ +{ + "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"} + ] +} \ No newline at end of file diff --git a/DataTables/output/item_tbitem.json b/DataTables/output/item_tbitem.json new file mode 100644 index 00000000..d1b27bfc --- /dev/null +++ b/DataTables/output/item_tbitem.json @@ -0,0 +1,104 @@ +[ + { + "id": 10000, + "name": "发型", + "price": 100, + "upgrade_to_item_id": 10001, + "exchange_column": { + "id": 10001, + "num": 2 + } + }, + { + "id": 10001, + "name": "外套", + "price": 100, + "upgrade_to_item_id": 10002, + "exchange_column": { + "id": 10001, + "num": 3 + } + }, + { + "id": 10002, + "name": "上衣", + "price": 100, + "upgrade_to_item_id": 10003, + "exchange_column": { + "id": 10001, + "num": 4 + } + }, + { + "id": 10003, + "name": "裙子", + "price": 100, + "upgrade_to_item_id": 10004, + "exchange_column": { + "id": 10001, + "num": 5 + } + }, + { + "id": 10004, + "name": "袜子", + "price": 100, + "upgrade_to_item_id": 10005, + "exchange_column": { + "id": 10001, + "num": 6 + } + }, + { + "id": 10005, + "name": "鞋子", + "price": 100, + "upgrade_to_item_id": 10006, + "exchange_column": { + "id": 10001, + "num": 7 + } + }, + { + "id": 10006, + "name": "发饰", + "price": 100, + "upgrade_to_item_id": 10007, + "exchange_column": { + "id": 10001, + "num": 8 + } + }, + { + "id": 10007, + "name": "中秋节发饰", + "price": 200, + "upgrade_to_item_id": 10008, + "expire_time": 1633881599, + "exchange_column": { + "id": 10001, + "num": 9 + } + }, + { + "id": 10008, + "name": "中秋节鞋子", + "price": 300, + "upgrade_to_item_id": 10009, + "expire_time": 1633967999, + "exchange_column": { + "id": 10001, + "num": 10 + } + }, + { + "id": 10009, + "name": "礼包", + "price": 100, + "upgrade_to_item_id": 10000, + "exchange_column": { + "id": 10001, + "num": 11 + } + } +] \ No newline at end of file diff --git a/JavaConfig.bat b/JavaConfig.bat new file mode 100644 index 00000000..db0cf9df --- /dev/null +++ b/JavaConfig.bat @@ -0,0 +1,15 @@ +set WORKSPACE=.\luban_examples + +set LUBAN_DLL=%WORKSPACE%\Tools\Luban\Luban.dll +set JAVA_PATH=.\JisolGameServer\Main\src\main +set CONF_ROOT=.\DataTables + +dotnet %LUBAN_DLL% ^ + -t all ^ + -c java-json ^ + -d json ^ + --conf %CONF_ROOT%\luban.conf ^ + -x outputCodeDir=%JAVA_PATH%\java\cfg ^ + -x outputDataDir=%JAVA_PATH%\resources\json + +pause \ No newline at end of file diff --git a/JisolGameCocos/assets/resources/config/data/schema.ts b/JisolGameCocos/assets/resources/config/data/schema.ts new file mode 100644 index 00000000..6640820d --- /dev/null +++ b/JisolGameCocos/assets/resources/config/data/schema.ts @@ -0,0 +1,98 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + + + + + + +export namespace TB {export namespace Battle {export namespace Role { +export class GRole { + + constructor(_json_: any) { + if (_json_.id === undefined) { throw new Error() } + this.id = _json_.id + if (_json_.name === undefined) { throw new Error() } + this.name = _json_.name + if (_json_.price === undefined) { throw new Error() } + this.price = _json_.price + if(_json_.expire_time != undefined) { this.expireTime = _json_.expire_time } else { this.expireTime = undefined } + } + + /** + * 这是id + */ + readonly id: number + /** + * 名字 + */ + readonly name: string + /** + * 价格 + */ + readonly price: number + /** + * 过期时间 + */ + readonly expireTime: number|undefined + + resolve(tables:Tables) + { + } +} + +}}} + + + + +export class TbGRole{ + private _dataMap: Map + private _dataList: TB.Battle.Role.GRole[] + constructor(_json_: any) { + this._dataMap = new Map() + this._dataList = [] + for(var _json2_ of _json_) { + let _v: TB.Battle.Role.GRole + _v = new TB.Battle.Role.GRole(_json2_) + this._dataList.push(_v) + this._dataMap.set(_v.id, _v) + } + } + + getDataMap(): Map { return this._dataMap; } + getDataList(): TB.Battle.Role.GRole[] { return this._dataList; } + + get(key: number): TB.Battle.Role.GRole | undefined { return this._dataMap.get(key); } + + resolve(tables:Tables) + { + for(let data of this._dataList) + { + data.resolve(tables) + } + } + +} + + + + +type JsonLoader = (file: string) => any + +export class Tables { + private _TbGRole: TbGRole + get TbGRole(): TbGRole { return this._TbGRole;} + + constructor(loader: JsonLoader) { + this._TbGRole = new TbGRole(loader('tbgrole')) + + this._TbGRole.resolve(this) + } +} diff --git a/JisolGameCocos/assets/resources/config/json/tbgrole.json b/JisolGameCocos/assets/resources/config/json/tbgrole.json new file mode 100644 index 00000000..8c065409 --- /dev/null +++ b/JisolGameCocos/assets/resources/config/json/tbgrole.json @@ -0,0 +1,54 @@ +[ + { + "id": 10000, + "name": "发型", + "price": 100 + }, + { + "id": 10001, + "name": "外套", + "price": 100 + }, + { + "id": 10002, + "name": "上衣", + "price": 100 + }, + { + "id": 10003, + "name": "裙子", + "price": 100 + }, + { + "id": 10004, + "name": "袜子", + "price": 100 + }, + { + "id": 10005, + "name": "鞋子", + "price": 100 + }, + { + "id": 10006, + "name": "发饰", + "price": 100 + }, + { + "id": 10007, + "name": "中秋节发饰", + "price": 200, + "expire_time": 1633881599 + }, + { + "id": 10008, + "name": "中秋节鞋子", + "price": 300, + "expire_time": 1633967999 + }, + { + "id": 10009, + "name": "礼包", + "price": 100 + } +] \ No newline at end of file diff --git a/JisolGameServer/Main/pom.xml b/JisolGameServer/Main/pom.xml index 1cfaadf0..4975b07c 100644 --- a/JisolGameServer/Main/pom.xml +++ b/JisolGameServer/Main/pom.xml @@ -22,6 +22,10 @@ JNGame 2.0-SNAPSHOT + + com.google.code.gson + gson + diff --git a/JisolGameServer/Main/src/main/java/cfg/TB/Battle/Role/GRole.java b/JisolGameServer/Main/src/main/java/cfg/TB/Battle/Role/GRole.java new file mode 100644 index 00000000..916091b9 --- /dev/null +++ b/JisolGameServer/Main/src/main/java/cfg/TB/Battle/Role/GRole.java @@ -0,0 +1,61 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +package cfg.TB.Battle.Role; + +import luban.*; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; + + +public final class GRole extends AbstractBean { + public GRole(JsonObject _buf) { + id = _buf.get("id").getAsInt(); + name = _buf.get("name").getAsString(); + price = _buf.get("price").getAsInt(); + { if (_buf.has("expire_time") && !_buf.get("expire_time").isJsonNull()) { expireTime = _buf.get("expire_time").getAsLong(); } else { expireTime = null; } } + } + + public static GRole deserialize(JsonObject _buf) { + return new cfg.TB.Battle.Role.GRole(_buf); + } + + /** + * 这是id + */ + public final int id; + /** + * 名字 + */ + public final String name; + /** + * 价格 + */ + public final int price; + /** + * 过期时间 + */ + public final Long expireTime; + + public static final int __ID__ = -1539036837; + + @Override + public int getTypeId() { return __ID__; } + + @Override + public String toString() { + return "{ " + + "(format_field_name __code_style field.name):" + id + "," + + "(format_field_name __code_style field.name):" + name + "," + + "(format_field_name __code_style field.name):" + price + "," + + "(format_field_name __code_style field.name):" + expireTime + "," + + "}"; + } +} + diff --git a/JisolGameServer/Main/src/main/java/cfg/Tables.java b/JisolGameServer/Main/src/main/java/cfg/Tables.java new file mode 100644 index 00000000..cc1a4c37 --- /dev/null +++ b/JisolGameServer/Main/src/main/java/cfg/Tables.java @@ -0,0 +1,29 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +package cfg; + +import luban.*; +import com.google.gson.JsonElement; + +public final class Tables +{ + + public interface IJsonLoader { + JsonElement load(String file) throws java.io.IOException; + } + + private final cfg.TbGRole _tbgrole; + public cfg.TbGRole getTbGRole() { return _tbgrole; } + + public Tables(IJsonLoader loader) throws java.io.IOException { + _tbgrole = new cfg.TbGRole(loader.load("tbgrole")); + } +} + diff --git a/JisolGameServer/Main/src/main/java/cfg/TbGRole.java b/JisolGameServer/Main/src/main/java/cfg/TbGRole.java new file mode 100644 index 00000000..29a2177d --- /dev/null +++ b/JisolGameServer/Main/src/main/java/cfg/TbGRole.java @@ -0,0 +1,37 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +package cfg; + +import luban.*; +import com.google.gson.JsonElement; + + +public final class TbGRole { + private final java.util.HashMap _dataMap; + private final java.util.ArrayList _dataList; + + public TbGRole(JsonElement _buf) { + _dataMap = new java.util.HashMap(); + _dataList = new java.util.ArrayList(); + + for (com.google.gson.JsonElement _e_ : _buf.getAsJsonArray()) { + cfg.TB.Battle.Role.GRole _v; + _v = cfg.TB.Battle.Role.GRole.deserialize(_e_.getAsJsonObject()); + _dataList.add(_v); + _dataMap.put(_v.id, _v); + } + } + + public java.util.HashMap getDataMap() { return _dataMap; } + public java.util.ArrayList getDataList() { return _dataList; } + + public cfg.TB.Battle.Role.GRole get(int key) { return _dataMap.get(key); } + +} diff --git a/JisolGameServer/Main/src/main/java/cn/jisol/game/listener/InitGameListener.java b/JisolGameServer/Main/src/main/java/cn/jisol/game/listener/InitGameListener.java index 101e9df2..235e674e 100644 --- a/JisolGameServer/Main/src/main/java/cn/jisol/game/listener/InitGameListener.java +++ b/JisolGameServer/Main/src/main/java/cn/jisol/game/listener/InitGameListener.java @@ -1,8 +1,14 @@ package cn.jisol.game.listener; +import cfg.Tables; +import com.google.gson.JsonParser; import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Component; +import org.springframework.util.ResourceUtils; + +import java.io.FileReader; +import java.io.IOException; @Component public class InitGameListener { @@ -10,7 +16,14 @@ public class InitGameListener { @EventListener(ContextRefreshedEvent.class) public void onApplicationEvent(ContextRefreshedEvent event) { - + try { + Tables tables = new Tables(file -> JsonParser.parseReader( + new FileReader(ResourceUtils.getFile("classpath:json/"+file+".json")) + )); + System.out.println(tables.getTbGame().get(10000).name); + } catch (IOException e) { + e.printStackTrace(); + } } diff --git a/luban_examples/Projects/java_json/src/corelib/luban/AbstractBean.java b/JisolGameServer/Main/src/main/java/luban/AbstractBean.java similarity index 100% rename from luban_examples/Projects/java_json/src/corelib/luban/AbstractBean.java rename to JisolGameServer/Main/src/main/java/luban/AbstractBean.java diff --git a/luban_examples/Projects/java_json/src/corelib/luban/ByteBuf.java b/JisolGameServer/Main/src/main/java/luban/ByteBuf.java similarity index 100% rename from luban_examples/Projects/java_json/src/corelib/luban/ByteBuf.java rename to JisolGameServer/Main/src/main/java/luban/ByteBuf.java diff --git a/luban_examples/Projects/java_json/src/corelib/luban/SerializationException.java b/JisolGameServer/Main/src/main/java/luban/SerializationException.java similarity index 100% rename from luban_examples/Projects/java_json/src/corelib/luban/SerializationException.java rename to JisolGameServer/Main/src/main/java/luban/SerializationException.java diff --git a/JisolGameServer/Main/src/main/resources/json/GMap.json b/JisolGameServer/Main/src/main/resources/json/GMap.json deleted file mode 100644 index a0ca9626..00000000 --- a/JisolGameServer/Main/src/main/resources/json/GMap.json +++ /dev/null @@ -1 +0,0 @@ -{"60001":{"id":60001,"mapName":"天空城","map1":"map/MAP6/MAP6_1/spriteFrame","map2":"map/MAP6/MAP6_2/spriteFrame","map3":"map/MAP6/MAP6_3/spriteFrame","map1OffsetY":100,"map2OffsetY":400,"map3OffsetY":400}} \ No newline at end of file diff --git a/JisolGameServer/Main/src/main/resources/json/GRole.json b/JisolGameServer/Main/src/main/resources/json/GRole.json deleted file mode 100644 index 5b08c8fd..00000000 --- a/JisolGameServer/Main/src/main/resources/json/GRole.json +++ /dev/null @@ -1 +0,0 @@ -{"10001":{"id":10001,"roleName":"小石头","spine":"spine/召唤与合成819个Spine/小石头/guaiA1a/spine/guaiA1a","roleSkillIds":[],"roleAttackRange":100},"10002":{"id":10002,"roleName":"坚强小石","spine":"spine/召唤与合成819个Spine/坚强小石/guaiA1a_1/spine/guaiA1a","roleSkillIds":[],"roleAttackRange":100},"10003":{"id":10003,"roleName":"疯狂松鼠","spine":"spine/召唤与合成819个Spine/疯狂松鼠/guaiA4e_2/spine/guaiA4e","roleSkillIds":[40001],"roleAttackRange":500},"10004":{"id":10004,"roleName":"妙蛙种子","spine":"spine/神奇宝贝/001妙蛙种子/spine/001妙蛙种子","roleSkillIds":[40002],"roleAttackRange":350}} \ No newline at end of file diff --git a/JisolGameServer/Main/src/main/resources/json/GRoleAttack.json b/JisolGameServer/Main/src/main/resources/json/GRoleAttack.json deleted file mode 100644 index 8e7c2bd6..00000000 --- a/JisolGameServer/Main/src/main/resources/json/GRoleAttack.json +++ /dev/null @@ -1 +0,0 @@ -{"10001":{"roleId":10001,"attackWay":"Normal","attackArgs":[]},"10002":{"roleId":10002,"attackWay":"Normal","attackArgs":[]},"10003":{"roleId":10003,"attackWay":"ParabolicBangRemote","attackArgs":["20001","30001","timo5 007","0.6","100","100"]},"10004":{"roleId":10004,"attackWay":"Normal","attackArgs":[]}} \ No newline at end of file diff --git a/JisolGameServer/Main/src/main/resources/json/GRoleAttackBullet.json b/JisolGameServer/Main/src/main/resources/json/GRoleAttackBullet.json deleted file mode 100644 index 323febd2..00000000 --- a/JisolGameServer/Main/src/main/resources/json/GRoleAttackBullet.json +++ /dev/null @@ -1 +0,0 @@ -{"20001":{"id":20001,"bulletName":"炸弹","bulletSrc":"bullets/疯狂松鼠/attack/spriteFrame"}} \ No newline at end of file diff --git a/JisolGameServer/Main/src/main/resources/json/GRoleAttackEffect.json b/JisolGameServer/Main/src/main/resources/json/GRoleAttackEffect.json deleted file mode 100644 index a9559c27..00000000 --- a/JisolGameServer/Main/src/main/resources/json/GRoleAttackEffect.json +++ /dev/null @@ -1 +0,0 @@ -{"30001":{"id":30001,"effectName":"爆炸","spine":"effect/爆炸效果/shouji_01/spine/shouji_01","animation":"animation"}} \ No newline at end of file diff --git a/JisolGameServer/Main/src/main/resources/json/GRoleSkill.json b/JisolGameServer/Main/src/main/resources/json/GRoleSkill.json deleted file mode 100644 index 5bb72942..00000000 --- a/JisolGameServer/Main/src/main/resources/json/GRoleSkill.json +++ /dev/null @@ -1 +0,0 @@ -{"40001":{"id":40001,"skillName":"疯狂松鼠","skillController":"GSkillCrazySquirrel","skillArgs":["5","250","250"],"skillText":"疯狂松鼠的技能 丢出巨大炸弹 轰炸全部玩家"},"40002":{"id":40002,"skillName":"妙蛙种子连击","skillController":"GSkillBulbasaurDoubleHit","skillArgs":["8"],"skillText":"妙蛙种子攻击8次 触发一次射叶子技能"}} \ No newline at end of file diff --git a/JisolGameServer/Main/src/main/resources/json/GRoleSkillEffect.json b/JisolGameServer/Main/src/main/resources/json/GRoleSkillEffect.json deleted file mode 100644 index 6f5f8899..00000000 --- a/JisolGameServer/Main/src/main/resources/json/GRoleSkillEffect.json +++ /dev/null @@ -1 +0,0 @@ -{"50001":{"id":50001,"text":"疯狂松鼠的技能开始 松鼠向天上丢出炸弹","spine":"spine/召唤与合成819个Spine/疯狂松鼠/guaiA4es_2/spine/guaiA4es"},"50002":{"id":50002,"text":"火球","spine":"effect/子弹效果/base_fly_fire/spine/buff_fire"},"50003":{"id":50003,"text":"火球爆炸","spine":"effect/爆炸效果/zhouyu_skill2_2/spine/zhouyu_skill2_2"}} \ No newline at end of file diff --git a/JisolGameServer/Main/src/main/resources/json/tbgrole.json b/JisolGameServer/Main/src/main/resources/json/tbgrole.json new file mode 100644 index 00000000..8c065409 --- /dev/null +++ b/JisolGameServer/Main/src/main/resources/json/tbgrole.json @@ -0,0 +1,54 @@ +[ + { + "id": 10000, + "name": "发型", + "price": 100 + }, + { + "id": 10001, + "name": "外套", + "price": 100 + }, + { + "id": 10002, + "name": "上衣", + "price": 100 + }, + { + "id": 10003, + "name": "裙子", + "price": 100 + }, + { + "id": 10004, + "name": "袜子", + "price": 100 + }, + { + "id": 10005, + "name": "鞋子", + "price": 100 + }, + { + "id": 10006, + "name": "发饰", + "price": 100 + }, + { + "id": 10007, + "name": "中秋节发饰", + "price": 200, + "expire_time": 1633881599 + }, + { + "id": 10008, + "name": "中秋节鞋子", + "price": 300, + "expire_time": 1633967999 + }, + { + "id": 10009, + "name": "礼包", + "price": 100 + } +] \ No newline at end of file diff --git a/luban_examples/Projects/Java_bin/src/main/gen/cfg/Tables.java b/luban_examples/Projects/Java_bin/src/main/gen/cfg/Tables.java index 5a7eac36..6b13b637 100644 --- a/luban_examples/Projects/Java_bin/src/main/gen/cfg/Tables.java +++ b/luban_examples/Projects/Java_bin/src/main/gen/cfg/Tables.java @@ -60,6 +60,12 @@ public final class Tables public cfg.test.TbTestString getTbTestString() { return _tbteststring; } private final cfg.test.TbDemoGroup _tbdemogroup; public cfg.test.TbDemoGroup getTbDemoGroup() { return _tbdemogroup; } + private final cfg.test.TbDemoGroup_C _tbdemogroup_c; + public cfg.test.TbDemoGroup_C getTbDemoGroup_C() { return _tbdemogroup_c; } + private final cfg.test.TbDemoGroup_S _tbdemogroup_s; + public cfg.test.TbDemoGroup_S getTbDemoGroup_S() { return _tbdemogroup_s; } + private final cfg.test.TbDemoGroup_E _tbdemogroup_e; + public cfg.test.TbDemoGroup_E getTbDemoGroup_E() { return _tbdemogroup_e; } private final cfg.test.TbTestGlobal _tbtestglobal; public cfg.test.TbTestGlobal getTbTestGlobal() { return _tbtestglobal; } private final cfg.test.TbTestBeRef _tbtestberef; @@ -92,6 +98,8 @@ public final class Tables public cfg.test.TbExcelFromJsonMultiRow getTbExcelFromJsonMultiRow() { return _tbexcelfromjsonmultirow; } private final cfg.test.TbTestScriptableObject _tbtestscriptableobject; public cfg.test.TbTestScriptableObject getTbTestScriptableObject() { return _tbtestscriptableobject; } + private final cfg.test.TbPath _tbpath; + public cfg.test.TbPath getTbPath() { return _tbpath; } private final cfg.test.TbTestMapper _tbtestmapper; public cfg.test.TbTestMapper getTbTestMapper() { return _tbtestmapper; } private final cfg.test.TbDefineFromExcel2 _tbdefinefromexcel2; @@ -118,6 +126,9 @@ public final class Tables _tbdemoprimitive = new cfg.test.TbDemoPrimitive(loader.load("test_tbdemoprimitive")); _tbteststring = new cfg.test.TbTestString(loader.load("test_tbteststring")); _tbdemogroup = new cfg.test.TbDemoGroup(loader.load("test_tbdemogroup")); + _tbdemogroup_c = new cfg.test.TbDemoGroup_C(loader.load("test_tbdemogroup_c")); + _tbdemogroup_s = new cfg.test.TbDemoGroup_S(loader.load("test_tbdemogroup_s")); + _tbdemogroup_e = new cfg.test.TbDemoGroup_E(loader.load("test_tbdemogroup_e")); _tbtestglobal = new cfg.test.TbTestGlobal(loader.load("test_tbtestglobal")); _tbtestberef = new cfg.test.TbTestBeRef(loader.load("test_tbtestberef")); _tbtestberef2 = new cfg.test.TbTestBeRef2(loader.load("test_tbtestberef2")); @@ -134,6 +145,7 @@ public final class Tables _tbcompositejsontable3 = new cfg.test.TbCompositeJsonTable3(loader.load("test_tbcompositejsontable3")); _tbexcelfromjsonmultirow = new cfg.test.TbExcelFromJsonMultiRow(loader.load("test_tbexcelfromjsonmultirow")); _tbtestscriptableobject = new cfg.test.TbTestScriptableObject(loader.load("test_tbtestscriptableobject")); + _tbpath = new cfg.test.TbPath(loader.load("test_tbpath")); _tbtestmapper = new cfg.test.TbTestMapper(loader.load("test_tbtestmapper")); _tbdefinefromexcel2 = new cfg.test.TbDefineFromExcel2(loader.load("test_tbdefinefromexcel2")); } diff --git a/luban_examples/Projects/Java_bin/src/main/gen/cfg/item/Item.java b/luban_examples/Projects/Java_bin/src/main/gen/cfg/item/Item.java index eefea75e..3d7e8708 100644 --- a/luban_examples/Projects/Java_bin/src/main/gen/cfg/item/Item.java +++ b/luban_examples/Projects/Java_bin/src/main/gen/cfg/item/Item.java @@ -19,8 +19,11 @@ public final class Item extends AbstractBean { public Item(ByteBuf _buf) { id = _buf.readInt(); name = _buf.readString(); + majorType = _buf.readInt(); minorType = _buf.readInt(); + maxPileNum = _buf.readInt(); quality = _buf.readInt(); + icon = _buf.readString(); iconBackgroud = _buf.readString(); iconMask = _buf.readString(); desc = _buf.readString(); @@ -36,8 +39,11 @@ public final class Item extends AbstractBean { */ public final int id; public final String name; + public final int majorType; public final int minorType; + public final int maxPileNum; public final int quality; + public final String icon; public final String iconBackgroud; public final String iconMask; public final String desc; @@ -53,8 +59,11 @@ public final class Item extends AbstractBean { return "{ " + "(format_field_name __code_style field.name):" + id + "," + "(format_field_name __code_style field.name):" + name + "," + + "(format_field_name __code_style field.name):" + majorType + "," + "(format_field_name __code_style field.name):" + minorType + "," + + "(format_field_name __code_style field.name):" + maxPileNum + "," + "(format_field_name __code_style field.name):" + quality + "," + + "(format_field_name __code_style field.name):" + icon + "," + "(format_field_name __code_style field.name):" + iconBackgroud + "," + "(format_field_name __code_style field.name):" + iconMask + "," + "(format_field_name __code_style field.name):" + desc + "," diff --git a/luban_examples/Projects/Java_bin/src/main/gen/cfg/test/DemoEnum.java b/luban_examples/Projects/Java_bin/src/main/gen/cfg/test/DemoEnum.java index c8327858..00685a1a 100644 --- a/luban_examples/Projects/Java_bin/src/main/gen/cfg/test/DemoEnum.java +++ b/luban_examples/Projects/Java_bin/src/main/gen/cfg/test/DemoEnum.java @@ -27,5 +27,6 @@ public final class DemoEnum { * dd */ public static final int D = 5; + public static final int Any = 6; } diff --git a/luban_examples/Projects/Java_bin/src/main/gen/cfg/test/DemoGroup.java b/luban_examples/Projects/Java_bin/src/main/gen/cfg/test/DemoGroup.java index 651fd7f6..44dd4d0a 100644 --- a/luban_examples/Projects/Java_bin/src/main/gen/cfg/test/DemoGroup.java +++ b/luban_examples/Projects/Java_bin/src/main/gen/cfg/test/DemoGroup.java @@ -15,6 +15,10 @@ import luban.*; public final class DemoGroup extends AbstractBean { public DemoGroup(ByteBuf _buf) { id = _buf.readInt(); + x1 = _buf.readInt(); + x2 = _buf.readInt(); + x3 = _buf.readInt(); + x4 = _buf.readInt(); x5 = cfg.test.InnerGroup.deserialize(_buf); } @@ -23,6 +27,10 @@ public final class DemoGroup extends AbstractBean { } public final int id; + public final int x1; + public final int x2; + public final int x3; + public final int x4; public final cfg.test.InnerGroup x5; public static final int __ID__ = -379263008; @@ -34,6 +42,10 @@ public final class DemoGroup extends AbstractBean { public String toString() { return "{ " + "(format_field_name __code_style field.name):" + id + "," + + "(format_field_name __code_style field.name):" + x1 + "," + + "(format_field_name __code_style field.name):" + x2 + "," + + "(format_field_name __code_style field.name):" + x3 + "," + + "(format_field_name __code_style field.name):" + x4 + "," + "(format_field_name __code_style field.name):" + x5 + "," + "}"; } diff --git a/luban_examples/Projects/Java_bin/src/main/gen/cfg/test/InnerGroup.java b/luban_examples/Projects/Java_bin/src/main/gen/cfg/test/InnerGroup.java index 35a6110b..86300a61 100644 --- a/luban_examples/Projects/Java_bin/src/main/gen/cfg/test/InnerGroup.java +++ b/luban_examples/Projects/Java_bin/src/main/gen/cfg/test/InnerGroup.java @@ -15,6 +15,9 @@ import luban.*; public final class InnerGroup extends AbstractBean { public InnerGroup(ByteBuf _buf) { y1 = _buf.readInt(); + y2 = _buf.readInt(); + y3 = _buf.readInt(); + y4 = _buf.readInt(); } public static InnerGroup deserialize(ByteBuf _buf) { @@ -22,6 +25,9 @@ public final class InnerGroup extends AbstractBean { } public final int y1; + public final int y2; + public final int y3; + public final int y4; public static final int __ID__ = -587873083; @@ -32,6 +38,9 @@ public final class InnerGroup extends AbstractBean { public String toString() { return "{ " + "(format_field_name __code_style field.name):" + y1 + "," + + "(format_field_name __code_style field.name):" + y2 + "," + + "(format_field_name __code_style field.name):" + y3 + "," + + "(format_field_name __code_style field.name):" + y4 + "," + "}"; } } diff --git a/luban_examples/Projects/Java_bin/src/main/gen/cfg/test/Path.java b/luban_examples/Projects/Java_bin/src/main/gen/cfg/test/Path.java new file mode 100644 index 00000000..159009d7 --- /dev/null +++ b/luban_examples/Projects/Java_bin/src/main/gen/cfg/test/Path.java @@ -0,0 +1,41 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +package cfg.test; + +import luban.*; + + +public final class Path extends AbstractBean { + public Path(ByteBuf _buf) { + id = _buf.readInt(); + res = _buf.readString(); + } + + public static Path deserialize(ByteBuf _buf) { + return new cfg.test.Path(_buf); + } + + public final int id; + public final String res; + + public static final int __ID__ = -1226450911; + + @Override + public int getTypeId() { return __ID__; } + + @Override + public String toString() { + return "{ " + + "(format_field_name __code_style field.name):" + id + "," + + "(format_field_name __code_style field.name):" + res + "," + + "}"; + } +} + diff --git a/luban_examples/Projects/Java_bin/src/main/gen/cfg/test/TbDemoGroup_C.java b/luban_examples/Projects/Java_bin/src/main/gen/cfg/test/TbDemoGroup_C.java new file mode 100644 index 00000000..22586df9 --- /dev/null +++ b/luban_examples/Projects/Java_bin/src/main/gen/cfg/test/TbDemoGroup_C.java @@ -0,0 +1,36 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +package cfg.test; + +import luban.*; + + +public final class TbDemoGroup_C { + private final java.util.HashMap _dataMap; + private final java.util.ArrayList _dataList; + + public TbDemoGroup_C(ByteBuf _buf) { + _dataMap = new java.util.HashMap(); + _dataList = new java.util.ArrayList(); + + for(int n = _buf.readSize() ; n > 0 ; --n) { + cfg.test.DemoGroup _v; + _v = cfg.test.DemoGroup.deserialize(_buf); + _dataList.add(_v); + _dataMap.put(_v.id, _v); + } + } + + public java.util.HashMap getDataMap() { return _dataMap; } + public java.util.ArrayList getDataList() { return _dataList; } + + public cfg.test.DemoGroup get(int key) { return _dataMap.get(key); } + +} diff --git a/luban_examples/Projects/Java_bin/src/main/gen/cfg/test/TbDemoGroup_E.java b/luban_examples/Projects/Java_bin/src/main/gen/cfg/test/TbDemoGroup_E.java new file mode 100644 index 00000000..59b7c493 --- /dev/null +++ b/luban_examples/Projects/Java_bin/src/main/gen/cfg/test/TbDemoGroup_E.java @@ -0,0 +1,36 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +package cfg.test; + +import luban.*; + + +public final class TbDemoGroup_E { + private final java.util.HashMap _dataMap; + private final java.util.ArrayList _dataList; + + public TbDemoGroup_E(ByteBuf _buf) { + _dataMap = new java.util.HashMap(); + _dataList = new java.util.ArrayList(); + + for(int n = _buf.readSize() ; n > 0 ; --n) { + cfg.test.DemoGroup _v; + _v = cfg.test.DemoGroup.deserialize(_buf); + _dataList.add(_v); + _dataMap.put(_v.id, _v); + } + } + + public java.util.HashMap getDataMap() { return _dataMap; } + public java.util.ArrayList getDataList() { return _dataList; } + + public cfg.test.DemoGroup get(int key) { return _dataMap.get(key); } + +} diff --git a/luban_examples/Projects/Java_bin/src/main/gen/cfg/test/TbDemoGroup_S.java b/luban_examples/Projects/Java_bin/src/main/gen/cfg/test/TbDemoGroup_S.java new file mode 100644 index 00000000..91bba766 --- /dev/null +++ b/luban_examples/Projects/Java_bin/src/main/gen/cfg/test/TbDemoGroup_S.java @@ -0,0 +1,36 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +package cfg.test; + +import luban.*; + + +public final class TbDemoGroup_S { + private final java.util.HashMap _dataMap; + private final java.util.ArrayList _dataList; + + public TbDemoGroup_S(ByteBuf _buf) { + _dataMap = new java.util.HashMap(); + _dataList = new java.util.ArrayList(); + + for(int n = _buf.readSize() ; n > 0 ; --n) { + cfg.test.DemoGroup _v; + _v = cfg.test.DemoGroup.deserialize(_buf); + _dataList.add(_v); + _dataMap.put(_v.id, _v); + } + } + + public java.util.HashMap getDataMap() { return _dataMap; } + public java.util.ArrayList getDataList() { return _dataList; } + + public cfg.test.DemoGroup get(int key) { return _dataMap.get(key); } + +} diff --git a/luban_examples/Projects/Java_bin/src/main/gen/cfg/test/TbPath.java b/luban_examples/Projects/Java_bin/src/main/gen/cfg/test/TbPath.java new file mode 100644 index 00000000..b0af02c3 --- /dev/null +++ b/luban_examples/Projects/Java_bin/src/main/gen/cfg/test/TbPath.java @@ -0,0 +1,36 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +package cfg.test; + +import luban.*; + + +public final class TbPath { + private final java.util.HashMap _dataMap; + private final java.util.ArrayList _dataList; + + public TbPath(ByteBuf _buf) { + _dataMap = new java.util.HashMap(); + _dataList = new java.util.ArrayList(); + + for(int n = _buf.readSize() ; n > 0 ; --n) { + cfg.test.Path _v; + _v = cfg.test.Path.deserialize(_buf); + _dataList.add(_v); + _dataMap.put(_v.id, _v); + } + } + + public java.util.HashMap getDataMap() { return _dataMap; } + public java.util.ArrayList getDataList() { return _dataList; } + + public cfg.test.Path get(int key) { return _dataMap.get(key); } + +} diff --git a/luban_examples/Projects/Java_bin/src/main/gen/cfg/test/TestExcelBean1.java b/luban_examples/Projects/Java_bin/src/main/gen/cfg/test/TestExcelBean1.java new file mode 100644 index 00000000..90621ebd --- /dev/null +++ b/luban_examples/Projects/Java_bin/src/main/gen/cfg/test/TestExcelBean1.java @@ -0,0 +1,62 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +package cfg.test; + +import luban.*; + + +/** + * 这是个测试excel结构 + */ +public final class TestExcelBean1 extends AbstractBean { + public TestExcelBean1(ByteBuf _buf) { + x1 = _buf.readInt(); + x2 = _buf.readString(); + x3 = _buf.readInt(); + x4 = _buf.readFloat(); + } + + public static TestExcelBean1 deserialize(ByteBuf _buf) { + return new cfg.test.TestExcelBean1(_buf); + } + + /** + * 最高品质 + */ + public final int x1; + /** + * 黑色的 + */ + public final String x2; + /** + * 蓝色的 + */ + public final int x3; + /** + * 最差品质 + */ + public final float x4; + + public static final int __ID__ = -1738345160; + + @Override + public int getTypeId() { return __ID__; } + + @Override + public String toString() { + return "{ " + + "(format_field_name __code_style field.name):" + x1 + "," + + "(format_field_name __code_style field.name):" + x2 + "," + + "(format_field_name __code_style field.name):" + x3 + "," + + "(format_field_name __code_style field.name):" + x4 + "," + + "}"; + } +} + diff --git a/luban_examples/Projects/java_json/src/gen/cfg/Tables.java b/luban_examples/Projects/java_json/src/gen/cfg/Tables.java index 9686a9ee..148d314b 100644 --- a/luban_examples/Projects/java_json/src/gen/cfg/Tables.java +++ b/luban_examples/Projects/java_json/src/gen/cfg/Tables.java @@ -100,6 +100,8 @@ public final class Tables public cfg.test.TbExcelFromJsonMultiRow getTbExcelFromJsonMultiRow() { return _tbexcelfromjsonmultirow; } private final cfg.test.TbTestScriptableObject _tbtestscriptableobject; public cfg.test.TbTestScriptableObject getTbTestScriptableObject() { return _tbtestscriptableobject; } + private final cfg.test.TbPath _tbpath; + public cfg.test.TbPath getTbPath() { return _tbpath; } private final cfg.test.TbTestMapper _tbtestmapper; public cfg.test.TbTestMapper getTbTestMapper() { return _tbtestmapper; } private final cfg.test.TbDefineFromExcel2 _tbdefinefromexcel2; @@ -145,6 +147,7 @@ public final class Tables _tbcompositejsontable3 = new cfg.test.TbCompositeJsonTable3(loader.load("test_tbcompositejsontable3")); _tbexcelfromjsonmultirow = new cfg.test.TbExcelFromJsonMultiRow(loader.load("test_tbexcelfromjsonmultirow")); _tbtestscriptableobject = new cfg.test.TbTestScriptableObject(loader.load("test_tbtestscriptableobject")); + _tbpath = new cfg.test.TbPath(loader.load("test_tbpath")); _tbtestmapper = new cfg.test.TbTestMapper(loader.load("test_tbtestmapper")); _tbdefinefromexcel2 = new cfg.test.TbDefineFromExcel2(loader.load("test_tbdefinefromexcel2")); } diff --git a/luban_examples/Projects/java_json/src/gen/cfg/test/DemoEnum.java b/luban_examples/Projects/java_json/src/gen/cfg/test/DemoEnum.java index c8327858..00685a1a 100644 --- a/luban_examples/Projects/java_json/src/gen/cfg/test/DemoEnum.java +++ b/luban_examples/Projects/java_json/src/gen/cfg/test/DemoEnum.java @@ -27,5 +27,6 @@ public final class DemoEnum { * dd */ public static final int D = 5; + public static final int Any = 6; } diff --git a/luban_examples/Projects/java_json/src/gen/cfg/test/Path.java b/luban_examples/Projects/java_json/src/gen/cfg/test/Path.java new file mode 100644 index 00000000..b23994af --- /dev/null +++ b/luban_examples/Projects/java_json/src/gen/cfg/test/Path.java @@ -0,0 +1,43 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +package cfg.test; + +import luban.*; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; + + +public final class Path extends AbstractBean { + public Path(JsonObject _buf) { + id = _buf.get("id").getAsInt(); + res = _buf.get("res").getAsString(); + } + + public static Path deserialize(JsonObject _buf) { + return new cfg.test.Path(_buf); + } + + public final int id; + public final String res; + + public static final int __ID__ = -1226450911; + + @Override + public int getTypeId() { return __ID__; } + + @Override + public String toString() { + return "{ " + + "(format_field_name __code_style field.name):" + id + "," + + "(format_field_name __code_style field.name):" + res + "," + + "}"; + } +} + diff --git a/luban_examples/Projects/java_json/src/gen/cfg/test/TbPath.java b/luban_examples/Projects/java_json/src/gen/cfg/test/TbPath.java new file mode 100644 index 00000000..88dbcb05 --- /dev/null +++ b/luban_examples/Projects/java_json/src/gen/cfg/test/TbPath.java @@ -0,0 +1,37 @@ + +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +package cfg.test; + +import luban.*; +import com.google.gson.JsonElement; + + +public final class TbPath { + private final java.util.HashMap _dataMap; + private final java.util.ArrayList _dataList; + + public TbPath(JsonElement _buf) { + _dataMap = new java.util.HashMap(); + _dataList = new java.util.ArrayList(); + + for (com.google.gson.JsonElement _e_ : _buf.getAsJsonArray()) { + cfg.test.Path _v; + _v = cfg.test.Path.deserialize(_e_.getAsJsonObject()); + _dataList.add(_v); + _dataMap.put(_v.id, _v); + } + } + + public java.util.HashMap getDataMap() { return _dataMap; } + public java.util.ArrayList getDataList() { return _dataList; } + + public cfg.test.Path get(int key) { return _dataMap.get(key); } + +}