webgal-parser 4.4.5 → 4.4.8
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/build/cjs/index.js +3 -2
- package/build/cjs/interface/sceneInterface.d.ts +2 -1
- package/build/es/index.js +3 -2
- package/build/es/interface/sceneInterface.d.ts +2 -1
- package/build/types/interface/sceneInterface.d.ts +2 -1
- package/build/umd/index.global.js +3 -2
- package/package.json +41 -40
- package/src/config/scriptConfig.ts +46 -46
- package/src/configParser/configParser.ts +60 -60
- package/src/index.ts +42 -42
- package/src/interface/assets.ts +12 -12
- package/src/interface/runtimeInterface.ts +9 -9
- package/src/interface/sceneInterface.ts +104 -103
- package/src/parser4/index.ts +158 -158
- package/src/sceneParser.ts +47 -47
- package/src/scriptParser/argsParser.ts +68 -68
- package/src/scriptParser/assetsScanner.ts +72 -72
- package/src/scriptParser/commandParser.ts +57 -57
- package/src/scriptParser/contentParser.ts +66 -66
- package/src/scriptParser/scriptParser.ts +87 -87
- package/src/scriptParser/subSceneScanner.ts +23 -23
package/build/cjs/index.js
CHANGED
|
@@ -35,6 +35,7 @@ var commandType;
|
|
|
35
35
|
commandType[commandType["comment"] = 28] = "comment";
|
|
36
36
|
commandType[commandType["setTransform"] = 29] = "setTransform";
|
|
37
37
|
commandType[commandType["setTransition"] = 30] = "setTransition";
|
|
38
|
+
commandType[commandType["getUserInput"] = 31] = "getUserInput";
|
|
38
39
|
})(commandType || (commandType = {}));
|
|
39
40
|
|
|
40
41
|
/**
|
|
@@ -53,7 +54,7 @@ const commandParser = (commandRaw, ADD_NEXT_ARG_LIST, SCRIPT_CONFIG) => {
|
|
|
53
54
|
const type = getCommandType(commandRaw, ADD_NEXT_ARG_LIST, SCRIPT_CONFIG);
|
|
54
55
|
returnCommand.type = type;
|
|
55
56
|
// 如果是对话,加上额外的参数
|
|
56
|
-
if (type === commandType.say) {
|
|
57
|
+
if (type === commandType.say && commandRaw !== 'say') {
|
|
57
58
|
returnCommand.additionalArgs.push({
|
|
58
59
|
key: "speaker",
|
|
59
60
|
value: commandRaw
|
|
@@ -133,7 +134,7 @@ function argsParser(argsRaw, assetSetter) {
|
|
|
133
134
|
argValue = undefined;
|
|
134
135
|
}
|
|
135
136
|
// 判断是不是语音参数
|
|
136
|
-
if (
|
|
137
|
+
if (argName.toLowerCase().match(/.ogg|.mp3|.wav/)) {
|
|
137
138
|
returnArrayList.push({
|
|
138
139
|
key: "vocal",
|
|
139
140
|
value: assetSetter(e, fileType.vocal)
|
package/build/es/index.js
CHANGED
|
@@ -31,6 +31,7 @@ var commandType;
|
|
|
31
31
|
commandType[commandType["comment"] = 28] = "comment";
|
|
32
32
|
commandType[commandType["setTransform"] = 29] = "setTransform";
|
|
33
33
|
commandType[commandType["setTransition"] = 30] = "setTransition";
|
|
34
|
+
commandType[commandType["getUserInput"] = 31] = "getUserInput";
|
|
34
35
|
})(commandType || (commandType = {}));
|
|
35
36
|
|
|
36
37
|
/**
|
|
@@ -49,7 +50,7 @@ const commandParser = (commandRaw, ADD_NEXT_ARG_LIST, SCRIPT_CONFIG) => {
|
|
|
49
50
|
const type = getCommandType(commandRaw, ADD_NEXT_ARG_LIST, SCRIPT_CONFIG);
|
|
50
51
|
returnCommand.type = type;
|
|
51
52
|
// 如果是对话,加上额外的参数
|
|
52
|
-
if (type === commandType.say) {
|
|
53
|
+
if (type === commandType.say && commandRaw !== 'say') {
|
|
53
54
|
returnCommand.additionalArgs.push({
|
|
54
55
|
key: "speaker",
|
|
55
56
|
value: commandRaw
|
|
@@ -129,7 +130,7 @@ function argsParser(argsRaw, assetSetter) {
|
|
|
129
130
|
argValue = undefined;
|
|
130
131
|
}
|
|
131
132
|
// 判断是不是语音参数
|
|
132
|
-
if (
|
|
133
|
+
if (argName.toLowerCase().match(/.ogg|.mp3|.wav/)) {
|
|
133
134
|
returnArrayList.push({
|
|
134
135
|
key: "vocal",
|
|
135
136
|
value: assetSetter(e, fileType.vocal)
|
|
@@ -34,6 +34,7 @@ var webgalParser = (function (exports) {
|
|
|
34
34
|
commandType[commandType["comment"] = 28] = "comment";
|
|
35
35
|
commandType[commandType["setTransform"] = 29] = "setTransform";
|
|
36
36
|
commandType[commandType["setTransition"] = 30] = "setTransition";
|
|
37
|
+
commandType[commandType["getUserInput"] = 31] = "getUserInput";
|
|
37
38
|
})(commandType || (commandType = {}));
|
|
38
39
|
|
|
39
40
|
/**
|
|
@@ -52,7 +53,7 @@ var webgalParser = (function (exports) {
|
|
|
52
53
|
const type = getCommandType(commandRaw, ADD_NEXT_ARG_LIST, SCRIPT_CONFIG);
|
|
53
54
|
returnCommand.type = type;
|
|
54
55
|
// 如果是对话,加上额外的参数
|
|
55
|
-
if (type === commandType.say) {
|
|
56
|
+
if (type === commandType.say && commandRaw !== 'say') {
|
|
56
57
|
returnCommand.additionalArgs.push({
|
|
57
58
|
key: "speaker",
|
|
58
59
|
value: commandRaw
|
|
@@ -132,7 +133,7 @@ var webgalParser = (function (exports) {
|
|
|
132
133
|
argValue = undefined;
|
|
133
134
|
}
|
|
134
135
|
// 判断是不是语音参数
|
|
135
|
-
if (
|
|
136
|
+
if (argName.toLowerCase().match(/.ogg|.mp3|.wav/)) {
|
|
136
137
|
returnArrayList.push({
|
|
137
138
|
key: "vocal",
|
|
138
139
|
value: assetSetter(e, fileType.vocal)
|
package/package.json
CHANGED
|
@@ -1,40 +1,41 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "webgal-parser",
|
|
3
|
-
"version": "4.4.
|
|
4
|
-
"description": "WebGAL script parser",
|
|
5
|
-
"scripts": {
|
|
6
|
-
"test": "vitest",
|
|
7
|
-
"coverage": "vitest run --coverage",
|
|
8
|
-
"build": "rimraf -rf ./build && rollup --config",
|
|
9
|
-
"
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
"@rollup/plugin-
|
|
25
|
-
"@rollup/plugin-
|
|
26
|
-
"@rollup/plugin-
|
|
27
|
-
"@
|
|
28
|
-
"@types/
|
|
29
|
-
"@
|
|
30
|
-
"
|
|
31
|
-
"rollup
|
|
32
|
-
"rollup-plugin-
|
|
33
|
-
"rollup-plugin-
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "webgal-parser",
|
|
3
|
+
"version": "4.4.8",
|
|
4
|
+
"description": "WebGAL script parser",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"test": "vitest",
|
|
7
|
+
"coverage": "vitest run --coverage",
|
|
8
|
+
"build": "rimraf -rf ./build && rollup --config",
|
|
9
|
+
"build-ci": "rollup --config",
|
|
10
|
+
"debug": "tsx test/debug.ts"
|
|
11
|
+
},
|
|
12
|
+
"types": "./build/types/index.d.ts",
|
|
13
|
+
"module": "./build/es/index.js",
|
|
14
|
+
"main": "./build/cjs/index.js",
|
|
15
|
+
"author": "Mahiru <Mahiru_@outlook.com>",
|
|
16
|
+
"license": "MPL-2.0",
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"chevrotain": "^10.5.0",
|
|
19
|
+
"cloudlogjs": "^1.0.11",
|
|
20
|
+
"lodash": "^4.17.21",
|
|
21
|
+
"tsx": "^3.12.7"
|
|
22
|
+
},
|
|
23
|
+
"devDependencies": {
|
|
24
|
+
"@rollup/plugin-commonjs": "^23.0.2",
|
|
25
|
+
"@rollup/plugin-json": "^5.0.1",
|
|
26
|
+
"@rollup/plugin-node-resolve": "^15.0.1",
|
|
27
|
+
"@rollup/plugin-typescript": "^9.0.2",
|
|
28
|
+
"@types/lodash": "^4.14.189",
|
|
29
|
+
"@types/node": "^18.14.0",
|
|
30
|
+
"@vitest/coverage-c8": "^0.28.5",
|
|
31
|
+
"rollup": "^3.3.0",
|
|
32
|
+
"rollup-plugin-babel": "^4.4.0",
|
|
33
|
+
"rollup-plugin-terser": "^7.0.2",
|
|
34
|
+
"rollup-plugin-typescript2": "^0.34.1",
|
|
35
|
+
"ts-node": "^10.9.1",
|
|
36
|
+
"tslib": "^2.4.1",
|
|
37
|
+
"typescript": "^4.9.3",
|
|
38
|
+
"vitest": "^0.28.5"
|
|
39
|
+
},
|
|
40
|
+
"type": "module"
|
|
41
|
+
}
|
|
@@ -1,46 +1,46 @@
|
|
|
1
|
-
import { commandType } from "../interface/sceneInterface";
|
|
2
|
-
|
|
3
|
-
export const SCRIPT_CONFIG = [
|
|
4
|
-
{ scriptString: 'intro', scriptType: commandType.intro },
|
|
5
|
-
{ scriptString: 'changeBg', scriptType: commandType.changeBg },
|
|
6
|
-
{ scriptString: 'changeFigure', scriptType: commandType.changeFigure },
|
|
7
|
-
{ scriptString: 'miniAvatar', scriptType: commandType.miniAvatar },
|
|
8
|
-
{ scriptString: 'changeScene', scriptType: commandType.changeScene },
|
|
9
|
-
{ scriptString: 'choose', scriptType: commandType.choose},
|
|
10
|
-
{ scriptString: 'end', scriptType: commandType.end },
|
|
11
|
-
{ scriptString: 'bgm', scriptType: commandType.bgm },
|
|
12
|
-
{ scriptString: 'playVideo', scriptType: commandType.video },
|
|
13
|
-
{
|
|
14
|
-
scriptString: 'setComplexAnimation',
|
|
15
|
-
scriptType: commandType.setComplexAnimation,
|
|
16
|
-
},
|
|
17
|
-
{ scriptString: 'setFilter', scriptType: commandType.setFilter },
|
|
18
|
-
{ scriptString: 'pixiInit', scriptType: commandType.pixiInit },
|
|
19
|
-
{ scriptString: 'pixiPerform', scriptType: commandType.pixi },
|
|
20
|
-
{ scriptString: 'label', scriptType: commandType.label},
|
|
21
|
-
{ scriptString: 'jumpLabel', scriptType: commandType.jumpLabel},
|
|
22
|
-
{ scriptString: 'setVar', scriptType: commandType.setVar },
|
|
23
|
-
{ scriptString: 'callScene', scriptType: commandType.callScene },
|
|
24
|
-
{ scriptString: 'showVars', scriptType: commandType.showVars },
|
|
25
|
-
{ scriptString: 'unlockCg', scriptType: commandType.unlockCg },
|
|
26
|
-
{ scriptString: 'unlockBgm', scriptType: commandType.unlockBgm },
|
|
27
|
-
{ scriptString: 'say', scriptType: commandType.say },
|
|
28
|
-
{ scriptString: 'filmMode', scriptType: commandType.filmMode },
|
|
29
|
-
{ scriptString: 'callScene', scriptType: commandType.callScene },
|
|
30
|
-
{ scriptString: 'setTextbox', scriptType: commandType.setTextbox},
|
|
31
|
-
{ scriptString: 'setAnimation', scriptType: commandType.setAnimation },
|
|
32
|
-
{ scriptString: 'playEffect', scriptType: commandType.playEffect },
|
|
33
|
-
];
|
|
34
|
-
export const ADD_NEXT_ARG_LIST = [
|
|
35
|
-
commandType.bgm,
|
|
36
|
-
commandType.pixi,
|
|
37
|
-
commandType.pixiInit,
|
|
38
|
-
commandType.label,
|
|
39
|
-
commandType.if,
|
|
40
|
-
commandType.miniAvatar,
|
|
41
|
-
commandType.setVar,
|
|
42
|
-
commandType.unlockBgm,
|
|
43
|
-
commandType.unlockCg,
|
|
44
|
-
commandType.filmMode,
|
|
45
|
-
commandType.playEffect,
|
|
46
|
-
];
|
|
1
|
+
import { commandType } from "../interface/sceneInterface";
|
|
2
|
+
|
|
3
|
+
export const SCRIPT_CONFIG = [
|
|
4
|
+
{ scriptString: 'intro', scriptType: commandType.intro },
|
|
5
|
+
{ scriptString: 'changeBg', scriptType: commandType.changeBg },
|
|
6
|
+
{ scriptString: 'changeFigure', scriptType: commandType.changeFigure },
|
|
7
|
+
{ scriptString: 'miniAvatar', scriptType: commandType.miniAvatar },
|
|
8
|
+
{ scriptString: 'changeScene', scriptType: commandType.changeScene },
|
|
9
|
+
{ scriptString: 'choose', scriptType: commandType.choose},
|
|
10
|
+
{ scriptString: 'end', scriptType: commandType.end },
|
|
11
|
+
{ scriptString: 'bgm', scriptType: commandType.bgm },
|
|
12
|
+
{ scriptString: 'playVideo', scriptType: commandType.video },
|
|
13
|
+
{
|
|
14
|
+
scriptString: 'setComplexAnimation',
|
|
15
|
+
scriptType: commandType.setComplexAnimation,
|
|
16
|
+
},
|
|
17
|
+
{ scriptString: 'setFilter', scriptType: commandType.setFilter },
|
|
18
|
+
{ scriptString: 'pixiInit', scriptType: commandType.pixiInit },
|
|
19
|
+
{ scriptString: 'pixiPerform', scriptType: commandType.pixi },
|
|
20
|
+
{ scriptString: 'label', scriptType: commandType.label},
|
|
21
|
+
{ scriptString: 'jumpLabel', scriptType: commandType.jumpLabel},
|
|
22
|
+
{ scriptString: 'setVar', scriptType: commandType.setVar },
|
|
23
|
+
{ scriptString: 'callScene', scriptType: commandType.callScene },
|
|
24
|
+
{ scriptString: 'showVars', scriptType: commandType.showVars },
|
|
25
|
+
{ scriptString: 'unlockCg', scriptType: commandType.unlockCg },
|
|
26
|
+
{ scriptString: 'unlockBgm', scriptType: commandType.unlockBgm },
|
|
27
|
+
{ scriptString: 'say', scriptType: commandType.say },
|
|
28
|
+
{ scriptString: 'filmMode', scriptType: commandType.filmMode },
|
|
29
|
+
{ scriptString: 'callScene', scriptType: commandType.callScene },
|
|
30
|
+
{ scriptString: 'setTextbox', scriptType: commandType.setTextbox},
|
|
31
|
+
{ scriptString: 'setAnimation', scriptType: commandType.setAnimation },
|
|
32
|
+
{ scriptString: 'playEffect', scriptType: commandType.playEffect },
|
|
33
|
+
];
|
|
34
|
+
export const ADD_NEXT_ARG_LIST = [
|
|
35
|
+
commandType.bgm,
|
|
36
|
+
commandType.pixi,
|
|
37
|
+
commandType.pixiInit,
|
|
38
|
+
commandType.label,
|
|
39
|
+
commandType.if,
|
|
40
|
+
commandType.miniAvatar,
|
|
41
|
+
commandType.setVar,
|
|
42
|
+
commandType.unlockBgm,
|
|
43
|
+
commandType.unlockCg,
|
|
44
|
+
commandType.filmMode,
|
|
45
|
+
commandType.playEffect,
|
|
46
|
+
];
|
|
@@ -1,60 +1,60 @@
|
|
|
1
|
-
import {argsParser} from "../scriptParser/argsParser";
|
|
2
|
-
|
|
3
|
-
interface IOptionItem{
|
|
4
|
-
key:string;
|
|
5
|
-
value:string | number | boolean;
|
|
6
|
-
}
|
|
7
|
-
interface IConfigItem{
|
|
8
|
-
command:string;
|
|
9
|
-
args:string[]
|
|
10
|
-
options:IOptionItem[];
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export type WebgalConfig = IConfigItem[]
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
function configLineParser(inputLine:string):IConfigItem{
|
|
17
|
-
const options:Array<IOptionItem> = [];
|
|
18
|
-
let command: string;
|
|
19
|
-
|
|
20
|
-
let newSentenceRaw = inputLine.split(";")[0];
|
|
21
|
-
if (newSentenceRaw === "") {
|
|
22
|
-
// 注释提前返回
|
|
23
|
-
return {
|
|
24
|
-
command:'',
|
|
25
|
-
args:[],
|
|
26
|
-
options:[]
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
// 截取命令
|
|
30
|
-
const getCommandResult = /:/.exec(newSentenceRaw);
|
|
31
|
-
|
|
32
|
-
// 没有command
|
|
33
|
-
if (getCommandResult === null) {
|
|
34
|
-
command = '';
|
|
35
|
-
} else {
|
|
36
|
-
command = newSentenceRaw.substring(0, getCommandResult.index);
|
|
37
|
-
// 划分命令区域和content区域
|
|
38
|
-
newSentenceRaw = newSentenceRaw.substring(getCommandResult.index + 1, newSentenceRaw.length);
|
|
39
|
-
}
|
|
40
|
-
// 截取 Options 区域
|
|
41
|
-
const getOptionsResult = / -/.exec(newSentenceRaw);
|
|
42
|
-
// 获取到参数
|
|
43
|
-
if (getOptionsResult) {
|
|
44
|
-
const optionsRaw = newSentenceRaw.substring(getOptionsResult.index, newSentenceRaw.length);
|
|
45
|
-
newSentenceRaw = newSentenceRaw.substring(0, getOptionsResult.index);
|
|
46
|
-
for (const e of argsParser(optionsRaw, (name,_)=>{return name})) {
|
|
47
|
-
options.push(e);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
return {
|
|
51
|
-
command,
|
|
52
|
-
args:newSentenceRaw.split('|').map(e=>e.trim()).filter(e=>e!==''),
|
|
53
|
-
options
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
export function configParser(configText:string):WebgalConfig{
|
|
58
|
-
const configLines = configText.replaceAll(`\r`,'').split('\n');
|
|
59
|
-
return configLines.map(e=>configLineParser(e)).filter(e=>e.command!=='');
|
|
60
|
-
}
|
|
1
|
+
import {argsParser} from "../scriptParser/argsParser";
|
|
2
|
+
|
|
3
|
+
interface IOptionItem{
|
|
4
|
+
key:string;
|
|
5
|
+
value:string | number | boolean;
|
|
6
|
+
}
|
|
7
|
+
interface IConfigItem{
|
|
8
|
+
command:string;
|
|
9
|
+
args:string[]
|
|
10
|
+
options:IOptionItem[];
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export type WebgalConfig = IConfigItem[]
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
function configLineParser(inputLine:string):IConfigItem{
|
|
17
|
+
const options:Array<IOptionItem> = [];
|
|
18
|
+
let command: string;
|
|
19
|
+
|
|
20
|
+
let newSentenceRaw = inputLine.split(";")[0];
|
|
21
|
+
if (newSentenceRaw === "") {
|
|
22
|
+
// 注释提前返回
|
|
23
|
+
return {
|
|
24
|
+
command:'',
|
|
25
|
+
args:[],
|
|
26
|
+
options:[]
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
// 截取命令
|
|
30
|
+
const getCommandResult = /:/.exec(newSentenceRaw);
|
|
31
|
+
|
|
32
|
+
// 没有command
|
|
33
|
+
if (getCommandResult === null) {
|
|
34
|
+
command = '';
|
|
35
|
+
} else {
|
|
36
|
+
command = newSentenceRaw.substring(0, getCommandResult.index);
|
|
37
|
+
// 划分命令区域和content区域
|
|
38
|
+
newSentenceRaw = newSentenceRaw.substring(getCommandResult.index + 1, newSentenceRaw.length);
|
|
39
|
+
}
|
|
40
|
+
// 截取 Options 区域
|
|
41
|
+
const getOptionsResult = / -/.exec(newSentenceRaw);
|
|
42
|
+
// 获取到参数
|
|
43
|
+
if (getOptionsResult) {
|
|
44
|
+
const optionsRaw = newSentenceRaw.substring(getOptionsResult.index, newSentenceRaw.length);
|
|
45
|
+
newSentenceRaw = newSentenceRaw.substring(0, getOptionsResult.index);
|
|
46
|
+
for (const e of argsParser(optionsRaw, (name,_)=>{return name})) {
|
|
47
|
+
options.push(e);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
command,
|
|
52
|
+
args:newSentenceRaw.split('|').map(e=>e.trim()).filter(e=>e!==''),
|
|
53
|
+
options
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export function configParser(configText:string):WebgalConfig{
|
|
58
|
+
const configLines = configText.replaceAll(`\r`,'').split('\n');
|
|
59
|
+
return configLines.map(e=>configLineParser(e)).filter(e=>e.command!=='');
|
|
60
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -1,42 +1,42 @@
|
|
|
1
|
-
import {commandType, IAsset} from "./interface/sceneInterface";
|
|
2
|
-
import {fileType} from "./interface/assets";
|
|
3
|
-
import {sceneParser} from "./sceneParser";
|
|
4
|
-
import {ADD_NEXT_ARG_LIST, SCRIPT_CONFIG} from "./config/scriptConfig";
|
|
5
|
-
import {configParser, WebgalConfig} from "./configParser/configParser";
|
|
6
|
-
|
|
7
|
-
export default class SceneParser {
|
|
8
|
-
|
|
9
|
-
private readonly assetsPrefetcher;
|
|
10
|
-
private readonly assetSetter;
|
|
11
|
-
private readonly ADD_NEXT_ARG_LIST;
|
|
12
|
-
private readonly SCRIPT_CONFIG;
|
|
13
|
-
|
|
14
|
-
constructor(assetsPrefetcher: ((assetList: Array<IAsset>) => void),
|
|
15
|
-
assetSetter: (fileName: string, assetType: fileType) => string,
|
|
16
|
-
ADD_NEXT_ARG_LIST: Array<number>, SCRIPT_CONFIG: Array<any>) {
|
|
17
|
-
this.assetsPrefetcher = assetsPrefetcher;
|
|
18
|
-
this.assetSetter = assetSetter;
|
|
19
|
-
this.ADD_NEXT_ARG_LIST = ADD_NEXT_ARG_LIST;
|
|
20
|
-
this.SCRIPT_CONFIG = SCRIPT_CONFIG;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
parse(rawScene: string, sceneName: string, sceneUrl: string
|
|
24
|
-
) {
|
|
25
|
-
return sceneParser(rawScene, sceneName, sceneUrl, this.assetsPrefetcher, this.assetSetter, this.ADD_NEXT_ARG_LIST, this.SCRIPT_CONFIG);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
parseConfig(configText: string) {
|
|
29
|
-
return configParser(configText)
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
stringifyConfig(config: WebgalConfig) {
|
|
33
|
-
return config
|
|
34
|
-
.reduce(
|
|
35
|
-
(previousValue, curr) =>
|
|
36
|
-
(previousValue + `${curr.command}:${curr.args.join('|')}${curr.options.length <= 0 ? '' : curr.options.reduce((p, c) => (p + ' -' + c.key + '=' + c.value), '')};\n`),
|
|
37
|
-
''
|
|
38
|
-
)
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
export {ADD_NEXT_ARG_LIST, SCRIPT_CONFIG};
|
|
1
|
+
import {commandType, IAsset} from "./interface/sceneInterface";
|
|
2
|
+
import {fileType} from "./interface/assets";
|
|
3
|
+
import {sceneParser} from "./sceneParser";
|
|
4
|
+
import {ADD_NEXT_ARG_LIST, SCRIPT_CONFIG} from "./config/scriptConfig";
|
|
5
|
+
import {configParser, WebgalConfig} from "./configParser/configParser";
|
|
6
|
+
|
|
7
|
+
export default class SceneParser {
|
|
8
|
+
|
|
9
|
+
private readonly assetsPrefetcher;
|
|
10
|
+
private readonly assetSetter;
|
|
11
|
+
private readonly ADD_NEXT_ARG_LIST;
|
|
12
|
+
private readonly SCRIPT_CONFIG;
|
|
13
|
+
|
|
14
|
+
constructor(assetsPrefetcher: ((assetList: Array<IAsset>) => void),
|
|
15
|
+
assetSetter: (fileName: string, assetType: fileType) => string,
|
|
16
|
+
ADD_NEXT_ARG_LIST: Array<number>, SCRIPT_CONFIG: Array<any>) {
|
|
17
|
+
this.assetsPrefetcher = assetsPrefetcher;
|
|
18
|
+
this.assetSetter = assetSetter;
|
|
19
|
+
this.ADD_NEXT_ARG_LIST = ADD_NEXT_ARG_LIST;
|
|
20
|
+
this.SCRIPT_CONFIG = SCRIPT_CONFIG;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
parse(rawScene: string, sceneName: string, sceneUrl: string
|
|
24
|
+
) {
|
|
25
|
+
return sceneParser(rawScene, sceneName, sceneUrl, this.assetsPrefetcher, this.assetSetter, this.ADD_NEXT_ARG_LIST, this.SCRIPT_CONFIG);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
parseConfig(configText: string) {
|
|
29
|
+
return configParser(configText)
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
stringifyConfig(config: WebgalConfig) {
|
|
33
|
+
return config
|
|
34
|
+
.reduce(
|
|
35
|
+
(previousValue, curr) =>
|
|
36
|
+
(previousValue + `${curr.command}:${curr.args.join('|')}${curr.options.length <= 0 ? '' : curr.options.reduce((p, c) => (p + ' -' + c.key + '=' + c.value), '')};\n`),
|
|
37
|
+
''
|
|
38
|
+
)
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export {ADD_NEXT_ARG_LIST, SCRIPT_CONFIG};
|
package/src/interface/assets.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 内置资源类型的枚举
|
|
3
|
-
*/
|
|
4
|
-
export enum fileType {
|
|
5
|
-
background,
|
|
6
|
-
bgm,
|
|
7
|
-
figure,
|
|
8
|
-
scene,
|
|
9
|
-
tex,
|
|
10
|
-
vocal,
|
|
11
|
-
video,
|
|
12
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* 内置资源类型的枚举
|
|
3
|
+
*/
|
|
4
|
+
export enum fileType {
|
|
5
|
+
background,
|
|
6
|
+
bgm,
|
|
7
|
+
figure,
|
|
8
|
+
scene,
|
|
9
|
+
tex,
|
|
10
|
+
vocal,
|
|
11
|
+
video,
|
|
12
|
+
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 子场景结束后回到父场景的入口
|
|
3
|
-
* @interface sceneEntry
|
|
4
|
-
*/
|
|
5
|
-
export interface sceneEntry {
|
|
6
|
-
sceneName: string; // 场景名称
|
|
7
|
-
sceneUrl: string; // 场景url
|
|
8
|
-
continueLine: number; // 继续原场景的行号
|
|
9
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* 子场景结束后回到父场景的入口
|
|
3
|
+
* @interface sceneEntry
|
|
4
|
+
*/
|
|
5
|
+
export interface sceneEntry {
|
|
6
|
+
sceneName: string; // 场景名称
|
|
7
|
+
sceneUrl: string; // 场景url
|
|
8
|
+
continueLine: number; // 继续原场景的行号
|
|
9
|
+
}
|