export-table-pulgin-csharp 1.0.33 → 1.0.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ExportCSPlugin.d.ts +8 -0
- package/dist/ExportCSPlugin.d.ts.map +1 -0
- package/dist/ExportCSPlugin.js +319 -0
- package/dist/ExportUnityCSJsonPlugin.d.ts +9 -0
- package/dist/ExportUnityCSJsonPlugin.d.ts.map +1 -0
- package/dist/ExportUnityCSJsonPlugin.js +103 -0
- package/dist/index.d.ts +3 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -318
- package/package.json +1 -1
- package/src/ExportCSPlugin.ts +295 -0
- package/src/ExportUnityCSJsonPlugin.ts +92 -0
- package/src/index.ts +4 -295
- package/test/dist/EGBL/344/273/273/345/212/241/351/205/215/347/275/256-/344/273/273/345/212/241/345/210/227/350/241/250.asset +15 -0
- package/test/dist/EGBL/344/273/273/345/212/241/351/205/215/347/275/256-/344/273/273/345/212/241/345/210/227/350/241/250.cs +1 -1
- package/test/dist/EGBL/344/273/273/345/212/241/351/205/215/347/275/256-/344/273/273/345/212/241/345/210/227/350/241/250Loader.cs +18 -0
- package/test/dist/EGBL/344/273/273/345/212/241/351/205/215/347/275/256-/344/273/273/345/212/241/345/245/226/345/212/261.asset +15 -0
- package/test/dist/EGBL/344/273/273/345/212/241/351/205/215/347/275/256-/344/273/273/345/212/241/345/245/226/345/212/261.cs +1 -1
- package/test/dist/EGBL/344/273/273/345/212/241/351/205/215/347/275/256-/344/273/273/345/212/241/345/245/226/345/212/261Loader.cs +18 -0
- package/test/dist/EGBL/344/273/273/345/212/241/351/205/215/347/275/256-/344/273/273/345/212/241/346/227/266/351/231/220.asset +15 -0
- package/test/dist/EGBL/344/273/273/345/212/241/351/205/215/347/275/256-/344/273/273/345/212/241/346/227/266/351/231/220.cs +1 -1
- package/test/dist/EGBL/344/273/273/345/212/241/351/205/215/347/275/256-/344/273/273/345/212/241/346/227/266/351/231/220Loader.cs +18 -0
- package/test/dist/EGBL/344/273/273/345/212/241/351/205/215/347/275/256-/344/273/273/345/212/241/350/247/246/345/217/221/347/272/246/346/235/237/351/205/215/350/241/250.asset +15 -0
- package/test/dist/EGBL/344/273/273/345/212/241/351/205/215/347/275/256-/344/273/273/345/212/241/350/247/246/345/217/221/347/272/246/346/235/237/351/205/215/350/241/250.cs +1 -1
- package/test/dist/EGBL/344/273/273/345/212/241/351/205/215/347/275/256-/344/273/273/345/212/241/350/247/246/345/217/221/347/272/246/346/235/237/351/205/215/350/241/250Loader.cs +18 -0
- package/test/dist/SceneConfig-SceneConfig.asset +15 -0
- package/test/dist/SceneConfig-SceneConfigLoader.cs +18 -0
- package/test/dist/SceneConfig-Sheet2.asset +15 -0
- package/test/dist/SceneConfig-Sheet2.cs +1 -1
- package/test/dist/SceneConfig-Sheet2Loader.cs +18 -0
- package/test/dist/SceneConfig.cs +1 -1
- package/test/dist//345/257/271/350/257/235/350/241/250-/345/257/271/350/257/235/350/241/250.asset +15 -0
- package/test/dist//345/257/271/350/257/235/350/241/250-/345/257/271/350/257/235/350/241/250.cs +1 -1
- package/test/dist//345/257/271/350/257/235/350/241/250-/345/257/271/350/257/235/350/241/250Loader.cs +18 -0
- package/test/dist//350/277/207/345/234/272/345/274/225/345/257/274-/350/277/207/345/234/272/345/274/225/345/257/274.asset +15 -0
- package/test/dist//350/277/207/345/234/272/345/274/225/345/257/274-/350/277/207/345/234/272/345/274/225/345/257/274.cs +364 -0
- package/test/dist//350/277/207/345/234/272/345/274/225/345/257/274-/350/277/207/345/234/272/345/274/225/345/257/274Loader.cs +18 -0
- package/test/src//350/277/207/345/234/272/345/274/225/345/257/274.xlsx +0 -0
- package/test/{test.bat → testCS.bat} +0 -0
- package/test/testUJson.bat +1 -0
- package/test/dist/EGBL/344/273/273/345/212/241/351/205/215/347/275/256-TaskConfig.cs +0 -135
- package/test/dist/EGBL/344/273/273/345/212/241/351/205/215/347/275/256-TaskRewards.cs +0 -68
- package/test/dist/EGBL/344/273/273/345/212/241/351/205/215/347/275/256-TaskTriggerConfig.cs +0 -145
- package/test/dist/EGBL/344/273/273/345/212/241/351/205/215/347/275/256-TimeLimit.cs +0 -55
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
|
|
2
|
+
import { cmm, HandleSheetParams, Field, foreach, IPlugin, st, PluginBase, HandleBatchParams, OutFilePath } from "export-table-lib"
|
|
3
|
+
import * as fs from "fs-extra"
|
|
4
|
+
|
|
5
|
+
export function exportUJson(paras: HandleSheetParams): string | null {
|
|
6
|
+
let {
|
|
7
|
+
datas,
|
|
8
|
+
fields,
|
|
9
|
+
name,
|
|
10
|
+
objects,
|
|
11
|
+
} = paras;
|
|
12
|
+
|
|
13
|
+
let jsonString = JSON.stringify(objects);
|
|
14
|
+
|
|
15
|
+
// !!!必须开头没有空格
|
|
16
|
+
let temp = `%YAML 1.1
|
|
17
|
+
%TAG !u! tag:unity3d.com,2011:
|
|
18
|
+
--- !u!114 &11400000
|
|
19
|
+
MonoBehaviour:
|
|
20
|
+
m_ObjectHideFlags: 0
|
|
21
|
+
m_CorrespondingSourceObject: {fileID: 0}
|
|
22
|
+
m_PrefabInstance: {fileID: 0}
|
|
23
|
+
m_PrefabAsset: {fileID: 0}
|
|
24
|
+
m_GameObject: {fileID: 0}
|
|
25
|
+
m_Enabled: 1
|
|
26
|
+
m_EditorHideFlags: 0
|
|
27
|
+
m_Script: {fileID: 11500000, guid: 496f60086c072a8479a6e0b948efb5e8, type: 3}
|
|
28
|
+
m_Name: ${name}
|
|
29
|
+
m_EditorClassIdentifier:
|
|
30
|
+
JsonText: ${JSON.stringify(jsonString)}
|
|
31
|
+
`
|
|
32
|
+
return temp
|
|
33
|
+
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export function exportUJsonLoader(paras: HandleSheetParams): string | null {
|
|
37
|
+
let {
|
|
38
|
+
datas,
|
|
39
|
+
fields,
|
|
40
|
+
name,
|
|
41
|
+
objects,
|
|
42
|
+
table,
|
|
43
|
+
} = paras;
|
|
44
|
+
|
|
45
|
+
var fullName = `${table.workbookName}-${name}`
|
|
46
|
+
// !!!必须开头没有空格
|
|
47
|
+
let temp = `
|
|
48
|
+
using lang.json;
|
|
49
|
+
using UnityEngine.AddressableAssets;
|
|
50
|
+
|
|
51
|
+
namespace MEEC.ExportedConfigs
|
|
52
|
+
{
|
|
53
|
+
public partial class ${name}
|
|
54
|
+
{
|
|
55
|
+
static ${name}()
|
|
56
|
+
{
|
|
57
|
+
var configJson = Addressables.LoadAssetAsync<ExcelConfigJson>("Assets/Bundles/GameConfig/Auto/${fullName}.asset").WaitForCompletion();
|
|
58
|
+
var jsonObjs = JSON.parse<${name}[]>(configJson.JsonText);
|
|
59
|
+
var configs = ${name}.Configs;
|
|
60
|
+
configs.Clear();
|
|
61
|
+
configs.AddRange(jsonObjs);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
`
|
|
66
|
+
return temp
|
|
67
|
+
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export class ExportUJsonPlugin extends PluginBase {
|
|
71
|
+
name = "ujson"
|
|
72
|
+
tags: string[] = ["ujson"]
|
|
73
|
+
|
|
74
|
+
handleSheet(paras: HandleSheetParams) {
|
|
75
|
+
var fullName = `${paras.table.workbookName}-${paras.name}`
|
|
76
|
+
{
|
|
77
|
+
let content1 = exportUJsonLoader(paras)
|
|
78
|
+
if (content1 != null) {
|
|
79
|
+
let savePath = new OutFilePath(paras.outPath, fullName, "Loader.cs").fullPath
|
|
80
|
+
fs.outputFileSync(savePath, content1, "utf-8")
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
{
|
|
84
|
+
let content2 = exportUJson(paras)
|
|
85
|
+
if (content2 != null) {
|
|
86
|
+
let savePath = new OutFilePath(paras.outPath, fullName, ".asset").fullPath
|
|
87
|
+
fs.outputFileSync(savePath, content2, "utf-8")
|
|
88
|
+
}
|
|
89
|
+
return content2
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -1,299 +1,8 @@
|
|
|
1
1
|
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
export function export_stuff(paras: HandleSheetParams): string | null {
|
|
6
|
-
let {
|
|
7
|
-
datas,
|
|
8
|
-
fields,
|
|
9
|
-
inject,
|
|
10
|
-
name,
|
|
11
|
-
objects,
|
|
12
|
-
packagename,
|
|
13
|
-
tables,
|
|
14
|
-
xxtea,
|
|
15
|
-
} = paras;
|
|
16
|
-
|
|
17
|
-
let firstLetterUpper = function (str: string) {
|
|
18
|
-
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
19
|
-
};
|
|
20
|
-
let firstLetterLower = function (str: string) {
|
|
21
|
-
return str.charAt(0).toLowerCase() + str.slice(1);
|
|
22
|
-
};
|
|
23
|
-
let convMemberName = function (str: string) {
|
|
24
|
-
return str.split("_").map(s => firstLetterUpper(s)).join("")
|
|
25
|
-
}
|
|
26
|
-
let convVarName = firstLetterLower
|
|
27
|
-
|
|
28
|
-
let RowClass = firstLetterUpper(name)
|
|
29
|
-
let initFunc = name + "Init"
|
|
30
|
-
let mapfield = fields.find(a => a.type == "key")//如果是map,则生成对应的map
|
|
31
|
-
let mapName = name + "Map"
|
|
32
|
-
|
|
33
|
-
let getFieldType = function (f: Field) {
|
|
34
|
-
let t = f.type
|
|
35
|
-
if (t == "object") {
|
|
36
|
-
throw new Error("invalid type <object>")
|
|
37
|
-
} else if (t == "object[]") {
|
|
38
|
-
throw new Error("invalid type <object[]>")
|
|
39
|
-
} else if (t == "number") {
|
|
40
|
-
return "double";
|
|
41
|
-
} else if (t == "number[]") {
|
|
42
|
-
return "double[]";
|
|
43
|
-
} else if (t == "uid") {
|
|
44
|
-
return "int";
|
|
45
|
-
} else if (t == "bool") {
|
|
46
|
-
return "bool";
|
|
47
|
-
} else if (t == "bool[]") {
|
|
48
|
-
return "bool[]";
|
|
49
|
-
} else if (t == "string") {
|
|
50
|
-
return "string";
|
|
51
|
-
} else if (t == "string[]") {
|
|
52
|
-
return "string[]";
|
|
53
|
-
} else if (t == "fk") {
|
|
54
|
-
return "int";
|
|
55
|
-
} else if (t == "fk[]") {
|
|
56
|
-
return "int[]";
|
|
57
|
-
} else if (t == "any") {
|
|
58
|
-
console.log(f)
|
|
59
|
-
throw new Error(`invalid type ${f.name}:<any>`)
|
|
60
|
-
} else if (t == "key") {
|
|
61
|
-
return "string";
|
|
62
|
-
} else {
|
|
63
|
-
throw new Error(`invalid type ${f.name}:<unkown>`)
|
|
64
|
-
}
|
|
65
|
-
return t;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
let getFkFieldType = function (field: Field) {
|
|
69
|
-
return tables.find(a => a.name == field.fkTableName)!.fields!.find(a => a.name == field.fkFieldName)!.type
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
const genValue = (value: any, f: Field): string => {
|
|
73
|
-
let t = f.type
|
|
74
|
-
if (t == "object") {
|
|
75
|
-
throw new Error("invalid type <object>")
|
|
76
|
-
} else if (t == "object[]") {
|
|
77
|
-
throw new Error("invalid type <object[]>")
|
|
78
|
-
} else if (t == "number") {
|
|
79
|
-
return `${value}`
|
|
80
|
-
} else if (t == "number[]") {
|
|
81
|
-
let values = value as number[]
|
|
82
|
-
return `new double[]{${values.join(", ")}}`
|
|
83
|
-
} else if (t == "uid") {
|
|
84
|
-
return `${value}`
|
|
85
|
-
} else if (t == "bool") {
|
|
86
|
-
return `${value}`
|
|
87
|
-
} else if (t == "bool[]") {
|
|
88
|
-
let values = value as boolean[]
|
|
89
|
-
return `new bool[]{${values.join(", ")}}`
|
|
90
|
-
} else if (t == "string") {
|
|
91
|
-
// return `"${value}"`
|
|
92
|
-
return JSON.stringify(value)
|
|
93
|
-
} else if (t == "string[]") {
|
|
94
|
-
let values = value as string[]
|
|
95
|
-
return `new string[]{${values.map(v => JSON.stringify(v)).join(", ")}}`
|
|
96
|
-
} else if (t == "fk") {
|
|
97
|
-
return `${value}`
|
|
98
|
-
} else if (t == "fk[]") {
|
|
99
|
-
let values = value as number[]
|
|
100
|
-
return `new int[]{${values.join(", ")}}`
|
|
101
|
-
} else if (t == "any") {
|
|
102
|
-
console.log(f)
|
|
103
|
-
throw new Error(`invalid type ${f.name}:<any>`)
|
|
104
|
-
} else if (t == "key") {
|
|
105
|
-
return `${value}`
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
throw new Error(`invalid type ${f.name}:<unkown>`)
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
const getTitle = (v: Field) => {
|
|
112
|
-
return v.describe.split("\n")[0]
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
const getDescripts = (v: Field) => {
|
|
116
|
-
return v.describe.split("\n")
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
let temp = `
|
|
120
|
-
using System.Collections.Generic;
|
|
121
|
-
using System.Linq;
|
|
122
|
-
|
|
123
|
-
namespace MEEC.ExportedConfigs{
|
|
124
|
-
public class ${RowClass} {
|
|
125
|
-
|
|
126
|
-
public static List<${RowClass}> Configs = new List<${RowClass}>()
|
|
127
|
-
{
|
|
128
|
-
${foreach(datas, data =>
|
|
129
|
-
` new ${RowClass}(${st(() => fields.map((f, index) => genValue(data[index], f)).join(", "))}),`
|
|
130
|
-
)}
|
|
131
|
-
};
|
|
132
|
-
|
|
133
|
-
public ${RowClass}() { }
|
|
134
|
-
public ${RowClass}(${st(() => fields.map(f => `${getFieldType(f)} ${convVarName(f.name)}`).join(", "))})
|
|
135
|
-
{
|
|
136
|
-
${foreach(fields, f =>
|
|
137
|
-
` this.${convMemberName(f.name)} = ${convVarName(f.name)};`
|
|
138
|
-
)}
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
public virtual ${RowClass} MergeFrom(${RowClass} source)
|
|
142
|
-
{
|
|
143
|
-
${foreach(fields, f =>
|
|
144
|
-
` this.${convMemberName(f.name)} = source.${convMemberName(f.name)};`
|
|
145
|
-
)}
|
|
146
|
-
return this;
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
public virtual ${RowClass} Clone()
|
|
150
|
-
{
|
|
151
|
-
var config = new ${RowClass}();
|
|
152
|
-
config.MergeFrom(this);
|
|
153
|
-
return config;
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
${cmm(/**生成字段 */)}
|
|
157
|
-
${foreach(fields, f => `
|
|
158
|
-
/// <summary>
|
|
159
|
-
${foreach(getDescripts(f), line =>
|
|
160
|
-
` /// ${line}`
|
|
161
|
-
)}
|
|
162
|
-
/// </summary>
|
|
163
|
-
public ${getFieldType(f)} ${convMemberName(f.name)};`
|
|
164
|
-
)}
|
|
165
|
-
|
|
166
|
-
${cmm(/**生成get字段 */)}
|
|
167
|
-
#region get字段
|
|
168
|
-
${foreach(fields, f => {
|
|
169
|
-
if (f.nameOrigin != f.name) {
|
|
170
|
-
return ` public ${getFieldType(f)} ${getTitle(f).replace(" ", "_")} => ${convMemberName(f.name)};`
|
|
171
|
-
} else {
|
|
172
|
-
return ""
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
)}
|
|
176
|
-
#endregion
|
|
177
|
-
|
|
178
|
-
#region uid map
|
|
179
|
-
${foreach(fields, f => {
|
|
180
|
-
if (f.isUnique) {
|
|
181
|
-
return `
|
|
182
|
-
protected static Dictionary<${getFieldType(f)}, ${RowClass}> _tempDictBy${convMemberName(f.name)};
|
|
183
|
-
public static ${RowClass} GetConfigBy${convMemberName(f.name)}(${getFieldType(f)} ${convMemberName(f.name)})
|
|
184
|
-
{
|
|
185
|
-
if (_tempDictBy${convMemberName(f.name)} == null)
|
|
186
|
-
{
|
|
187
|
-
_tempDictBy${convMemberName(f.name)} = new Dictionary<${getFieldType(f)}, ${RowClass}>();
|
|
188
|
-
Configs.ForEach(c =>
|
|
189
|
-
{
|
|
190
|
-
_tempDictBy${convMemberName(f.name)}.Add(c.${convMemberName(f.name)}, c);
|
|
191
|
-
});
|
|
192
|
-
}
|
|
193
|
-
return _tempDictBy${convMemberName(f.name)}.GetValueOrDefault(${convMemberName(f.name)});
|
|
194
|
-
}
|
|
195
|
-
`
|
|
196
|
-
} else if (f.type == "number" || f.type == "string") {
|
|
197
|
-
return `
|
|
198
|
-
protected static Dictionary<${getFieldType(f)}, ${RowClass}[]> _tempRecordsDictBy${convMemberName(f.name)} = new Dictionary<${getFieldType(f)}, ${RowClass}[]>();
|
|
199
|
-
public static ${RowClass}[] GetConfigsBy${convMemberName(f.name)}(${getFieldType(f)} ${convMemberName(f.name)})
|
|
200
|
-
{
|
|
201
|
-
if (_tempRecordsDictBy${convMemberName(f.name)}.ContainsKey(${convMemberName(f.name)}))
|
|
202
|
-
{
|
|
203
|
-
return _tempRecordsDictBy${convMemberName(f.name)}.GetValueOrDefault(${convMemberName(f.name)});
|
|
204
|
-
}
|
|
205
|
-
else
|
|
206
|
-
{
|
|
207
|
-
var records = Configs.Where(c => c.${convMemberName(f.name)} == ${convMemberName(f.name)}).ToArray();
|
|
208
|
-
_tempRecordsDictBy${convMemberName(f.name)}.Add(${convMemberName(f.name)}, records);
|
|
209
|
-
return records;
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
`
|
|
213
|
-
} else {
|
|
214
|
-
return ""
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
)}
|
|
218
|
-
|
|
219
|
-
#endregion uid map
|
|
220
|
-
|
|
221
|
-
#region 生成fk.get/set
|
|
222
|
-
${foreach(fields, f => `
|
|
223
|
-
${iff(f.type == "fk", () => `
|
|
224
|
-
${iff(getFkFieldType(f).toLowerCase() != "uid", () => `
|
|
225
|
-
protected ${convMemberName(f.fkTableName!)}[] _fk${convMemberName(f.name)}=null;
|
|
226
|
-
/**
|
|
227
|
-
* ${f.describe}
|
|
228
|
-
**/
|
|
229
|
-
public virtual ${convMemberName(f.fkTableName!)}[] ${convMemberName(f.name)}DataList{
|
|
230
|
-
get{
|
|
231
|
-
if(this._fk${convMemberName(f.name)}==null){
|
|
232
|
-
if(null==this.${convMemberName(f.name)}){
|
|
233
|
-
this._fk${convMemberName(f.name)} = new ${convMemberName(f.fkTableName!)}[0];
|
|
234
|
-
}else{
|
|
235
|
-
this._fk${convMemberName(f.name)}=${convMemberName(f.fkTableName!)}.FindAll(a=>a.${convMemberName(f.fkFieldName!)}!=null && this.${convMemberName(f.name)}==a.${convMemberName(f.fkFieldName!)}).ToArray();
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
return this._fk${convMemberName(f.name)};
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
`).else(() => `
|
|
242
|
-
protected ${convMemberName(f.fkTableName!)} _fk${convMemberName(f.name)}=null;
|
|
243
|
-
/**
|
|
244
|
-
* ${f.describe}
|
|
245
|
-
**/
|
|
246
|
-
public virtual ${convMemberName(f.fkTableName!)} ${convMemberName(f.name)}Data{
|
|
247
|
-
get{
|
|
248
|
-
if(this._fk${convMemberName(f.name)}==null){
|
|
249
|
-
this._fk${convMemberName(f.name)}=${convMemberName(f.fkTableName!)}.Find(a=>a.${convMemberName(f.fkFieldName!)}==this.${convMemberName(f.name)});
|
|
250
|
-
}
|
|
251
|
-
return this._fk${convMemberName(f.name)};
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
`)}
|
|
255
|
-
`)}
|
|
256
|
-
${iff(f.type == "fk[]", () => `
|
|
257
|
-
protected ${convMemberName(f.fkTableName!)}[] _fk${convMemberName(f.name)}=null;
|
|
258
|
-
/**
|
|
259
|
-
* ${f.describe}
|
|
260
|
-
**/
|
|
261
|
-
public virtual ${convMemberName(f.fkTableName!)}[] ${convMemberName(f.name)}DataList{
|
|
262
|
-
get{
|
|
263
|
-
if(this._fk${convMemberName(f.name)}==null){
|
|
264
|
-
if(null==this.${convMemberName(f.name)}){
|
|
265
|
-
this._fk${convMemberName(f.name)} = new ${convMemberName(f.fkTableName!)}[0];
|
|
266
|
-
}else{
|
|
267
|
-
this._fk${convMemberName(f.name)}=MEEC.ExportedConfigs.${convMemberName(f.fkTableName!)}.Configs.FindAll(a=>a.${convMemberName(f.fkFieldName!)}!=null && this.${convMemberName(f.name)}!.Contains(a.${convMemberName(f.fkFieldName!)})).ToArray();
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
return this._fk${convMemberName(f.name)};
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
`)}
|
|
274
|
-
`)}
|
|
275
|
-
#endregion 生成fk.get/set
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
`
|
|
279
|
-
|
|
280
|
-
return temp
|
|
281
|
-
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
export class ExportPlugin extends PluginBase {
|
|
285
|
-
name = "csharp"
|
|
286
|
-
tags: string[] = ["cs"]
|
|
287
|
-
|
|
288
|
-
handleSheet(paras: HandleSheetParams) {
|
|
289
|
-
let content = export_stuff(paras)
|
|
290
|
-
if (content != null) {
|
|
291
|
-
fs.outputFileSync(paras.outFilePath.fullPath, content, "utf-8")
|
|
292
|
-
}
|
|
293
|
-
return content
|
|
294
|
-
}
|
|
295
|
-
}
|
|
2
|
+
import { ExportPlugin as ExportCSPlugin } from "./ExportCSPlugin"
|
|
3
|
+
import { ExportUJsonPlugin } from "./ExportUnityCSJsonPlugin"
|
|
296
4
|
|
|
297
5
|
export const ExportPlugins = [
|
|
298
|
-
new
|
|
6
|
+
new ExportCSPlugin(),
|
|
7
|
+
new ExportUJsonPlugin(),
|
|
299
8
|
]
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
%YAML 1.1
|
|
2
|
+
%TAG !u! tag:unity3d.com,2011:
|
|
3
|
+
--- !u!114 &11400000
|
|
4
|
+
MonoBehaviour:
|
|
5
|
+
m_ObjectHideFlags: 0
|
|
6
|
+
m_CorrespondingSourceObject: {fileID: 0}
|
|
7
|
+
m_PrefabInstance: {fileID: 0}
|
|
8
|
+
m_PrefabAsset: {fileID: 0}
|
|
9
|
+
m_GameObject: {fileID: 0}
|
|
10
|
+
m_Enabled: 1
|
|
11
|
+
m_EditorHideFlags: 0
|
|
12
|
+
m_Script: {fileID: 11500000, guid: 496f60086c072a8479a6e0b948efb5e8, type: 3}
|
|
13
|
+
m_Name: 任务列表
|
|
14
|
+
m_EditorClassIdentifier:
|
|
15
|
+
JsonText: "[{\"id\":50000,\"name\":\"口腔\",\"subTasks\":[],\"taskRewards\":[],\"任务类型\":\"\",\"任务标签\":\"\",\"startCmds\":\"`/tp @e[type=npc,c=1,tag=消化NPC] 24 47 -171`\",\"succeedCmds\":\"\"},{\"id\":50010,\"name\":\"食道和胃\",\"subTasks\":[],\"taskRewards\":[],\"任务类型\":\"\",\"任务标签\":\"\",\"startCmds\":\"\",\"succeedCmds\":\"`/title @p title 恭喜你完成口腔关卡`,`/give @p myitem:xhdlxj_modle_kouqiang`\"},{\"id\":50020,\"name\":\"小肠\",\"subTasks\":[],\"taskRewards\":[],\"任务类型\":\"\",\"任务标签\":\"\",\"startCmds\":\"\",\"succeedCmds\":\"`/title @p title 恭喜你完成食道&胃关卡`,`/give @p myitem:xhdlxj_modle_shiguan`,`/give @p myitem:xhdlxj_modle_wei`\"},{\"id\":50030,\"name\":\"大肠\",\"subTasks\":[],\"taskRewards\":[],\"任务类型\":\"\",\"任务标签\":\"\",\"startCmds\":\"\",\"succeedCmds\":\"`/title @p title 恭喜你完成小肠关卡`\"},{\"id\":50040,\"name\":\"消化拼图\",\"subTasks\":[],\"taskRewards\":[],\"任务类型\":\"\",\"任务标签\":\"\",\"startCmds\":\"\",\"succeedCmds\":\"`/title @p title 恭喜你完成大肠关卡`,`/give @p myitem:xhdlxj_modle_xiaochang`,`/give @p myitem:xhdlxj_modle_dachang`\"},{\"id\":50050,\"name\":\"恭喜完成\",\"subTasks\":[],\"taskRewards\":[],\"任务类型\":\"\",\"任务标签\":\"\",\"startCmds\":\"\",\"succeedCmds\":\"`/title @p title 恭喜你完成课程内容`\"}]"
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
|
|
2
|
+
using lang.json;
|
|
3
|
+
using UnityEngine.AddressableAssets;
|
|
4
|
+
|
|
5
|
+
namespace MEEC.ExportedConfigs
|
|
6
|
+
{
|
|
7
|
+
public partial class 任务列表
|
|
8
|
+
{
|
|
9
|
+
static 任务列表()
|
|
10
|
+
{
|
|
11
|
+
var configJson = Addressables.LoadAssetAsync<ExcelConfigJson>("Assets/Bundles/GameConfig/Auto/EGBL任务配置-任务列表.asset").WaitForCompletion();
|
|
12
|
+
var jsonObjs = JSON.parse<任务列表[]>(configJson.JsonText);
|
|
13
|
+
var configs = 任务列表.Configs;
|
|
14
|
+
configs.Clear();
|
|
15
|
+
configs.AddRange(jsonObjs);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
%YAML 1.1
|
|
2
|
+
%TAG !u! tag:unity3d.com,2011:
|
|
3
|
+
--- !u!114 &11400000
|
|
4
|
+
MonoBehaviour:
|
|
5
|
+
m_ObjectHideFlags: 0
|
|
6
|
+
m_CorrespondingSourceObject: {fileID: 0}
|
|
7
|
+
m_PrefabInstance: {fileID: 0}
|
|
8
|
+
m_PrefabAsset: {fileID: 0}
|
|
9
|
+
m_GameObject: {fileID: 0}
|
|
10
|
+
m_Enabled: 1
|
|
11
|
+
m_EditorHideFlags: 0
|
|
12
|
+
m_Script: {fileID: 11500000, guid: 496f60086c072a8479a6e0b948efb5e8, type: 3}
|
|
13
|
+
m_Name: 任务奖励
|
|
14
|
+
m_EditorClassIdentifier:
|
|
15
|
+
JsonText: "[{\"id\":1001,\"props1\":\"apple\",\"count1\":1},{\"id\":1002,\"props1\":\"apple\",\"count1\":1},{\"id\":1003,\"props1\":\"apple\",\"count1\":1},{\"id\":1004,\"props1\":\"apple\",\"count1\":1},{\"id\":1005,\"props1\":\"apple\",\"count1\":1}]"
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
|
|
2
|
+
using lang.json;
|
|
3
|
+
using UnityEngine.AddressableAssets;
|
|
4
|
+
|
|
5
|
+
namespace MEEC.ExportedConfigs
|
|
6
|
+
{
|
|
7
|
+
public partial class 任务奖励
|
|
8
|
+
{
|
|
9
|
+
static 任务奖励()
|
|
10
|
+
{
|
|
11
|
+
var configJson = Addressables.LoadAssetAsync<ExcelConfigJson>("Assets/Bundles/GameConfig/Auto/EGBL任务配置-任务奖励.asset").WaitForCompletion();
|
|
12
|
+
var jsonObjs = JSON.parse<任务奖励[]>(configJson.JsonText);
|
|
13
|
+
var configs = 任务奖励.Configs;
|
|
14
|
+
configs.Clear();
|
|
15
|
+
configs.AddRange(jsonObjs);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
%YAML 1.1
|
|
2
|
+
%TAG !u! tag:unity3d.com,2011:
|
|
3
|
+
--- !u!114 &11400000
|
|
4
|
+
MonoBehaviour:
|
|
5
|
+
m_ObjectHideFlags: 0
|
|
6
|
+
m_CorrespondingSourceObject: {fileID: 0}
|
|
7
|
+
m_PrefabInstance: {fileID: 0}
|
|
8
|
+
m_PrefabAsset: {fileID: 0}
|
|
9
|
+
m_GameObject: {fileID: 0}
|
|
10
|
+
m_Enabled: 1
|
|
11
|
+
m_EditorHideFlags: 0
|
|
12
|
+
m_Script: {fileID: 11500000, guid: 496f60086c072a8479a6e0b948efb5e8, type: 3}
|
|
13
|
+
m_Name: 任务时限
|
|
14
|
+
m_EditorClassIdentifier:
|
|
15
|
+
JsonText: "[{\"id\":1001,\"duration\":24}]"
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
|
|
2
|
+
using lang.json;
|
|
3
|
+
using UnityEngine.AddressableAssets;
|
|
4
|
+
|
|
5
|
+
namespace MEEC.ExportedConfigs
|
|
6
|
+
{
|
|
7
|
+
public partial class 任务时限
|
|
8
|
+
{
|
|
9
|
+
static 任务时限()
|
|
10
|
+
{
|
|
11
|
+
var configJson = Addressables.LoadAssetAsync<ExcelConfigJson>("Assets/Bundles/GameConfig/Auto/EGBL任务配置-任务时限.asset").WaitForCompletion();
|
|
12
|
+
var jsonObjs = JSON.parse<任务时限[]>(configJson.JsonText);
|
|
13
|
+
var configs = 任务时限.Configs;
|
|
14
|
+
configs.Clear();
|
|
15
|
+
configs.AddRange(jsonObjs);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
%YAML 1.1
|
|
2
|
+
%TAG !u! tag:unity3d.com,2011:
|
|
3
|
+
--- !u!114 &11400000
|
|
4
|
+
MonoBehaviour:
|
|
5
|
+
m_ObjectHideFlags: 0
|
|
6
|
+
m_CorrespondingSourceObject: {fileID: 0}
|
|
7
|
+
m_PrefabInstance: {fileID: 0}
|
|
8
|
+
m_PrefabAsset: {fileID: 0}
|
|
9
|
+
m_GameObject: {fileID: 0}
|
|
10
|
+
m_Enabled: 1
|
|
11
|
+
m_EditorHideFlags: 0
|
|
12
|
+
m_Script: {fileID: 11500000, guid: 496f60086c072a8479a6e0b948efb5e8, type: 3}
|
|
13
|
+
m_Name: 任务触发约束配表
|
|
14
|
+
m_EditorClassIdentifier:
|
|
15
|
+
JsonText: "[{\"id\":1,\"taskId\":50000,\"autoAccept\":false,\"cond1\":\"\",\"para1\":0,\"cond2\":\"\",\"para2\":0,\"cond3\":\"\",\"para3\":0,\"limit1\":\"任务时限\",\"limitPara1\":1001},{\"id\":2,\"taskId\":50010,\"autoAccept\":true,\"cond1\":\"前置任务\",\"para1\":50000,\"cond2\":\"\",\"para2\":0,\"cond3\":\"\",\"para3\":0,\"limit1\":\"任务时限\",\"limitPara1\":1001},{\"id\":7,\"taskId\":50020,\"autoAccept\":true,\"cond1\":\"前置任务\",\"para1\":50010,\"cond2\":\"\",\"para2\":0,\"cond3\":\"\",\"para3\":0,\"limit1\":\"任务时限\",\"limitPara1\":1001},{\"id\":8,\"taskId\":50030,\"autoAccept\":true,\"cond1\":\"前置任务\",\"para1\":50020,\"cond2\":\"\",\"para2\":0,\"cond3\":\"\",\"para3\":0,\"limit1\":\"任务时限\",\"limitPara1\":1001},{\"id\":9,\"taskId\":50040,\"autoAccept\":true,\"cond1\":\"前置任务\",\"para1\":50030,\"cond2\":\"\",\"para2\":0,\"cond3\":\"\",\"para3\":0,\"limit1\":\"任务时限\",\"limitPara1\":1001},{\"id\":10,\"taskId\":50050,\"autoAccept\":true,\"cond1\":\"前置任务\",\"para1\":50040,\"cond2\":\"\",\"para2\":0,\"cond3\":\"\",\"para3\":0,\"limit1\":\"任务时限\",\"limitPara1\":1001}]"
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
|
|
2
|
+
using lang.json;
|
|
3
|
+
using UnityEngine.AddressableAssets;
|
|
4
|
+
|
|
5
|
+
namespace MEEC.ExportedConfigs
|
|
6
|
+
{
|
|
7
|
+
public partial class 任务触发约束配表
|
|
8
|
+
{
|
|
9
|
+
static 任务触发约束配表()
|
|
10
|
+
{
|
|
11
|
+
var configJson = Addressables.LoadAssetAsync<ExcelConfigJson>("Assets/Bundles/GameConfig/Auto/EGBL任务配置-任务触发约束配表.asset").WaitForCompletion();
|
|
12
|
+
var jsonObjs = JSON.parse<任务触发约束配表[]>(configJson.JsonText);
|
|
13
|
+
var configs = 任务触发约束配表.Configs;
|
|
14
|
+
configs.Clear();
|
|
15
|
+
configs.AddRange(jsonObjs);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
%YAML 1.1
|
|
2
|
+
%TAG !u! tag:unity3d.com,2011:
|
|
3
|
+
--- !u!114 &11400000
|
|
4
|
+
MonoBehaviour:
|
|
5
|
+
m_ObjectHideFlags: 0
|
|
6
|
+
m_CorrespondingSourceObject: {fileID: 0}
|
|
7
|
+
m_PrefabInstance: {fileID: 0}
|
|
8
|
+
m_PrefabAsset: {fileID: 0}
|
|
9
|
+
m_GameObject: {fileID: 0}
|
|
10
|
+
m_Enabled: 1
|
|
11
|
+
m_EditorHideFlags: 0
|
|
12
|
+
m_Script: {fileID: 11500000, guid: 496f60086c072a8479a6e0b948efb5e8, type: 3}
|
|
13
|
+
m_Name: SceneConfig
|
|
14
|
+
m_EditorClassIdentifier:
|
|
15
|
+
JsonText: "[{\"uid\":1,\"sceneId\":\"第1章 格莫拉城\",\"outingBaseGold\":1000},{\"uid\":2,\"sceneId\":\"第2章 纳皮尔乐园\",\"outingBaseGold\":1200}]"
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
|
|
2
|
+
using lang.json;
|
|
3
|
+
using UnityEngine.AddressableAssets;
|
|
4
|
+
|
|
5
|
+
namespace MEEC.ExportedConfigs
|
|
6
|
+
{
|
|
7
|
+
public partial class SceneConfig
|
|
8
|
+
{
|
|
9
|
+
static SceneConfig()
|
|
10
|
+
{
|
|
11
|
+
var configJson = Addressables.LoadAssetAsync<ExcelConfigJson>("Assets/Bundles/GameConfig/Auto/SceneConfig-SceneConfig.asset").WaitForCompletion();
|
|
12
|
+
var jsonObjs = JSON.parse<SceneConfig[]>(configJson.JsonText);
|
|
13
|
+
var configs = SceneConfig.Configs;
|
|
14
|
+
configs.Clear();
|
|
15
|
+
configs.AddRange(jsonObjs);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
%YAML 1.1
|
|
2
|
+
%TAG !u! tag:unity3d.com,2011:
|
|
3
|
+
--- !u!114 &11400000
|
|
4
|
+
MonoBehaviour:
|
|
5
|
+
m_ObjectHideFlags: 0
|
|
6
|
+
m_CorrespondingSourceObject: {fileID: 0}
|
|
7
|
+
m_PrefabInstance: {fileID: 0}
|
|
8
|
+
m_PrefabAsset: {fileID: 0}
|
|
9
|
+
m_GameObject: {fileID: 0}
|
|
10
|
+
m_Enabled: 1
|
|
11
|
+
m_EditorHideFlags: 0
|
|
12
|
+
m_Script: {fileID: 11500000, guid: 496f60086c072a8479a6e0b948efb5e8, type: 3}
|
|
13
|
+
m_Name: Sheet2
|
|
14
|
+
m_EditorClassIdentifier:
|
|
15
|
+
JsonText: "[{\"uid\":1,\"sceneId\":\"第1章 格莫拉城\",\"outingBaseGold\":1000},{\"uid\":2,\"sceneId\":\"第2章 纳皮尔乐园\",\"outingBaseGold\":1200}]"
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
|
|
2
|
+
using lang.json;
|
|
3
|
+
using UnityEngine.AddressableAssets;
|
|
4
|
+
|
|
5
|
+
namespace MEEC.ExportedConfigs
|
|
6
|
+
{
|
|
7
|
+
public partial class Sheet2
|
|
8
|
+
{
|
|
9
|
+
static Sheet2()
|
|
10
|
+
{
|
|
11
|
+
var configJson = Addressables.LoadAssetAsync<ExcelConfigJson>("Assets/Bundles/GameConfig/Auto/SceneConfig-Sheet2.asset").WaitForCompletion();
|
|
12
|
+
var jsonObjs = JSON.parse<Sheet2[]>(configJson.JsonText);
|
|
13
|
+
var configs = Sheet2.Configs;
|
|
14
|
+
configs.Clear();
|
|
15
|
+
configs.AddRange(jsonObjs);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
package/test/dist/SceneConfig.cs
CHANGED