webgal-parser 4.3.1-1.1

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.
Files changed (58) hide show
  1. package/.babelrc +14 -0
  2. package/build/index.global.js +482 -0
  3. package/build/index.global.js.map +1 -0
  4. package/build/index.js +460 -0
  5. package/build/index.js.map +1 -0
  6. package/build/types/index.d.ts +10 -0
  7. package/build/types/interface/assets.d.ts +12 -0
  8. package/build/types/interface/runtimeInterface.d.ts +9 -0
  9. package/build/types/interface/sceneInterface.d.ts +94 -0
  10. package/build/types/sceneParser.d.ts +14 -0
  11. package/build/types/scriptParser/argsParser.d.ts +9 -0
  12. package/build/types/scriptParser/assetsScanner.d.ts +9 -0
  13. package/build/types/scriptParser/commandParser.d.ts +9 -0
  14. package/build/types/scriptParser/contentParser.d.ts +9 -0
  15. package/build/types/scriptParser/scriptParser.d.ts +9 -0
  16. package/build/types/scriptParser/subSceneScanner.d.ts +7 -0
  17. package/config/scriptConfig.js +46 -0
  18. package/config/scriptConfig.ts +44 -0
  19. package/index.d.ts +10 -0
  20. package/index.js +483 -0
  21. package/index.js.map +1 -0
  22. package/index.ts +25 -0
  23. package/interface/assets.d.ts +12 -0
  24. package/interface/assets.js +16 -0
  25. package/interface/assets.ts +12 -0
  26. package/interface/runtimeInterface.d.ts +9 -0
  27. package/interface/runtimeInterface.js +2 -0
  28. package/interface/runtimeInterface.ts +9 -0
  29. package/interface/sceneInterface.d.ts +91 -0
  30. package/interface/sceneInterface.js +32 -0
  31. package/interface/sceneInterface.ts +101 -0
  32. package/package.json +33 -0
  33. package/rollup.config.js +32 -0
  34. package/sceneParser.d.ts +14 -0
  35. package/sceneParser.js +53 -0
  36. package/sceneParser.ts +47 -0
  37. package/scriptParser/argsParser.d.ts +9 -0
  38. package/scriptParser/argsParser.js +70 -0
  39. package/scriptParser/argsParser.ts +62 -0
  40. package/scriptParser/assetsScanner.d.ts +9 -0
  41. package/scriptParser/assetsScanner.js +75 -0
  42. package/scriptParser/assetsScanner.ts +72 -0
  43. package/scriptParser/commandParser.d.ts +9 -0
  44. package/scriptParser/commandParser.js +60 -0
  45. package/scriptParser/commandParser.ts +57 -0
  46. package/scriptParser/contentParser.d.ts +9 -0
  47. package/scriptParser/contentParser.js +68 -0
  48. package/scriptParser/contentParser.ts +66 -0
  49. package/scriptParser/scriptParser.d.ts +9 -0
  50. package/scriptParser/scriptParser.js +81 -0
  51. package/scriptParser/scriptParser.ts +87 -0
  52. package/scriptParser/subSceneScanner.d.ts +7 -0
  53. package/scriptParser/subSceneScanner.js +26 -0
  54. package/scriptParser/subSceneScanner.ts +23 -0
  55. package/test/test.js +10 -0
  56. package/test/test.ts +117 -0
  57. package/tsconfig.json +29 -0
  58. package/tsconfig.node.json +10 -0
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ exports.subSceneScanner = void 0;
4
+ /**
5
+ * 扫描子场景
6
+ * @param content 语句内容
7
+ * @return {Array<string>} 子场景列表
8
+ */
9
+ var sceneInterface_1 = require("../interface/sceneInterface");
10
+ var subSceneScanner = function (command, content) {
11
+ var subSceneList = [];
12
+ if (command === sceneInterface_1.commandType.changeScene || command === sceneInterface_1.commandType.callScene) {
13
+ subSceneList.push(content);
14
+ }
15
+ if (command === sceneInterface_1.commandType.choose) {
16
+ var chooseList = content.split('|');
17
+ var chooseValue = chooseList.map(function (e) { return e.split(':')[1]; });
18
+ chooseValue.forEach(function (e) {
19
+ if (e.match(/\./)) {
20
+ subSceneList.push(e);
21
+ }
22
+ });
23
+ }
24
+ return subSceneList;
25
+ };
26
+ exports.subSceneScanner = subSceneScanner;
@@ -0,0 +1,23 @@
1
+ /**
2
+ * 扫描子场景
3
+ * @param content 语句内容
4
+ * @return {Array<string>} 子场景列表
5
+ */
6
+ import { commandType } from '../interface/sceneInterface';
7
+
8
+ export const subSceneScanner = (command: commandType, content: string): Array<string> => {
9
+ const subSceneList: Array<string> = [];
10
+ if (command === commandType.changeScene || command === commandType.callScene) {
11
+ subSceneList.push(content);
12
+ }
13
+ if (command === commandType.choose) {
14
+ const chooseList = content.split('|');
15
+ const chooseValue = chooseList.map((e) => e.split(':')[1]);
16
+ chooseValue.forEach((e) => {
17
+ if (e.match(/\./)) {
18
+ subSceneList.push(e);
19
+ }
20
+ });
21
+ }
22
+ return subSceneList;
23
+ };
package/test/test.js ADDED
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ var index_1 = require("../index");
4
+ var scriptConfig_1 = require("./scriptConfig");
5
+ var parser = new index_1.SceneParser(function (assetList) {
6
+ }, function (fileName, assetType) {
7
+ return fileName;
8
+ }, scriptConfig_1.ADD_NEXT_ARG_LIST, scriptConfig_1.SCRIPT_CONFIG);
9
+ var result = parser.parse("\n; \u521D\u59CB\u573A\u666F\uFF0C\u4EE5\u53CA\u7279\u6548\u6F14\u793A\nchangeBg:c4.jpg -next;\nunlockCg:c4.jpg -name=\u8857\u524D; \u89E3\u9501\u90E8\u5206CG\nunlockCg:xgmain.jpeg -name=\u661F\u5149\u5496\u5561\u9986\u4E0E\u6B7B\u795E\u4E4B\u8776;\nunlockBgm:s_Title.mp3 -name=Smiling-Swinging!!;\nWebGAL:\u7279\u6548\u7CFB\u7EDF\u662F3.9.2\u7248\u672C\u65B0\u5F15\u5165\u7684\u7CFB\u7EDF\uFF0C\u4F60\u60F3\u8981\u770B\u7279\u6548\u7684\u6F14\u793A\u5417\uFF1F;\nchoose:\u89C2\u770B\u7279\u6548\u6F14\u793A:demo|\u6211\u4E0D\u8981\u770B\u7279\u6548\uFF0C\u76F4\u63A5\u6765\u5427\uFF01:toStart;\nlabel:demo;\npixiInit;\npixiPerform:rain;\nWebGAL:\u73B0\u5728\u5C55\u793A\u7684\u662F\u4E0B\u96E8\u7684\u7279\u6548\u3002;\npixiInit;\npixiPerform:snow;\nWebGAL:\u73B0\u5728\u5C55\u793A\u7684\u662F\u4E0B\u96EA\u7684\u7279\u6548\u3002;\nsetTextbox:hide;\npixiInit;\nsetTextbox:on -next;\nWebGAL:\u7279\u6548\u7684\u6F14\u793A\u5DF2\u7ECF\u7ED3\u675F\uFF0C\u73B0\u5728\u6211\u4EEC\u6B63\u5F0F\u5F00\u59CB\u5427\uFF01;\n\n; \u6B63\u5F0F\u573A\u666F\nlabel:toStart;\nplayVideo:OP.mp4;\nchangeBg:c3.jpg -next;\nunlockCg:c3.jpg -name=cafe;\nchangeFigure:m2.png -left -next;\nbgm:cb1.mp3;\nunlockBgm:cb1.mp3 -name=\u3072\u3068\u3059\u3058\u306E\u5149\u660E;\nsetAnimation:enter-from-left -target=fig-left -next;\n\u7C73\u5496\u591A:\u86CB\u5305\u996D\u662F\u681E\u90A3\u505A\u7684\uFF0C\u4F46\u7EA2\u8336\u662F\u590F\u76EE\u6CE1\u7684\u3002 -v1.ogg;\n\u6602\u6674:......;\n\u987A\u4FBF\u95EE\u4E00\u4E0B\uFF0C\u4F60\u662F\u6253\u7B97\u505A\u4EC0\u4E48\u7684\uFF1F;\nchangeFigure:m1.png -left -next;\n\u7C73\u5496\u591A:\u5C31\u662F\u5012\u996E\u6599\u3002\u7136\u540E\u5496\u5561\u548C\u7EA2\u8336\u7684\u51B2\u6CE1\u65B9\u5F0F\u6211\u8FD8\u662F\u8BB0\u4F4F\u4E86\u7684\u3002 -v2.ogg;\n\u6602\u6674:\u8FD9\u3001\u8FD9\u6837\u4E48......;\n:\u8FD9\u732B\u722A\u5B50\u771F\u7684\u80FD\u6CE1\u8336\u4E48\u3002;\n\u62FF\u5F97\u4E86\u6C34\u58F6\u5417\uFF1F\u5C31\u51ED\u4ED6\u90A3\u4E2A\u8089\u7403\u722A\u5B50......;\n\u96BE\u9053\u8FD9\u4E9B\u4E5F\u662F\u51ED\u501F\u732B\u5996\u7684\u5947\u7279\u529B\u91CF\u505A\u5230\u7684\u5417\uFF1F;\nchangeFigure:none -left -next;\nchangeFigure:k1.png -next;\nsetAnimation:enter-from-bottom -target=fig-center -next;\n\u681E\u90A3:\u90A3\u4E48\uFF0C\u4F60\u60F3\u5148\u5C1D\u54EA\u4E2A\uFF1F -v3.ogg;\nchoose:\u54C1\u5C1D\u86CB\u5305\u996D:dbf|\u54C1\u5C1D\u7EA2\u8336:hc;\n\n; \u681E\u90A3\u9009\u9879\nlabel:dbf;\n\u6602\u6674:\u603B\u4E4B\uFF0C\u5148\u786E\u8BA4\u4E0B\u86CB\u5305\u996D\u7684\u5473\u9053\u5427;\nchangeFigure:k2.png -next;\n\u681E\u90A3:\u660E\u767D\u4E86\uFF0C\u4EA4\u7ED9\u6211\u5427 -v4.ogg;\nchangeFigure:none -next;\nchangeFigure:m2.png -left -next;\nchangeFigure:k3.png -right -next;\nsetAnimation:enter-from-left -target=fig-left -next;\nsetAnimation:enter-from-right -target=fig-right -next;\n\u681E\u90A3:\u90A3\u4E48\u7C73\u5496\u591A\u5148\u751F\uFF0C\u6211\u53BB\u505A\u4E00\u4E0B\u8BD5\u4F5C\u54C1 -v5.ogg;\n\u7C73\u5496\u591A:\u55EF\u3002\u53BB\u5427 -v6.ogg;\nchangeFigure:none -left -next;\nchangeFigure:none -right -next;\nchangeFigure:k4.png -next;\nsetAnimation:enter-from-bottom -target=fig-center -next;\n\u681E\u90A3:\u90A3\u4E48\u9AD8\u5CAD\u540C\u5B66\uFF0C\u6211\u4EEC\u79FB\u52A8\u5230\u53A8\u623F\u5427 -v7.ogg;\nchangeFigure:none -next;\nbgm:cb2.mp3;\nunlockBgm:cb2.mp3 -name=Tea Break;\nchangeBg:c2.jpg;\nunlockCg:c2.jpg -name=\u53A8\u623F;\nchangeFigure:k2.png -next;\n\u681E\u90A3:\u8BDD\u4E0D\u591A\u8BF4\u5F00\u59CB\u505A\u5427 -v8.ogg;\njumpLabel:end;\n\n; \u590F\u76EE\u9009\u9879\nlabel:hc;\nchangeFigure:none -next;\nchangeFigure:m1.png -left -next;\nchangeFigure:k1.png -right -next;\nsetAnimation:enter-from-left -target=fig-left -next;\nsetAnimation:enter-from-right -target=fig-right -next;\n\u7C73\u5496\u591A:\u90A3\u4E48\u5C31\u662F\uFF0C\u590F\u76EE\u4E86\u5427 -v9.ogg;\nchangeFigure:k6.png -right -next;\n\u681E\u90A3:\u5979\u521A\u53BB\u4F11\u606F\uFF0C\u8981\u4E0D\u8981\u6211\u53EB\u56DE\u6765\u5462\uFF1F -v10.ogg;\n\u6602\u6674:\u6CA1\u4E8B\uFF0C\u6211\u81EA\u5DF1\u53BB\u5427;\nchangeFigure:none -left -next;\nchangeFigure:none -right -next;\nbgm:cb2.mp3;\nchangeBg:c1.jpg -next;\nunlockCg:c1.jpg -name=\u4F11\u606F\u5BA4;\n:\u6211\u5148\u6572\u4E86\u6572\u95E8;\nminiAvatar:n1.png;\n\u590F\u76EE:\u54EA\u4F4D\uFF1F -v11.ogg;\n\u6602\u6674:\u6211\u662F\u9AD8\u5CAD\uFF0C\u53EF\u4EE5\u8FDB\u53BB\u5417\uFF1F;\n\u590F\u76EE:\u53EF\u4EE5\uFF0C\u6CA1\u95EE\u9898 -v12.ogg;\n\u6602\u6674:\u6253\u6405\u4E86;\nminiAvatar:none;\nchangeFigure:n4.png -next;\n\u6602\u6674:\u6253\u6405\u4F60\u4F11\u606F\u4E86;\n\u590F\u76EE:\u4E0D\u7528\u5728\u610F\uFF0C\u600E\u4E48\u4E86\uFF1F -v13.ogg;\nchangeFigure:n2.png -next;\n:\u5979\u5E76\u6CA1\u6709\u65E0\u7CBE\u6253\u91C7\uFF0C\u6BD4\u60F3\u8C61\u4E2D\u7CBE\u795E\u591A\u4E86;\n\u6602\u6674:\u95EE\u9053\u62FF\u624B\u83DC\u8C31\uFF0C\u5C31\u542C\u8BF4\u56DB\u5B63\u540C\u5B66\u6CE1\u7684\u7EA2\u8336\u5473\u9053\u4E0D\u9519\uFF0C\u6211\u4E5F\u60F3\u54C1\u5C1D\u4E00\u4E0B;\n\u590F\u76EE:\u660E\u767D\u4E86\uFF0C\u90A3\u6211\u4EEC\u56DE\u53BB\u5427 -v14.ogg;\njumpLabel:end;\n\n; \u7ED3\u675F\u573A\u666F\nlabel:end;\nchangeFigure:none -next;\nWebGAL:\u57FA\u7840\u6F14\u51FA\u7684\u5C55\u793A\u5DF2\u7ECF\u7ED3\u675F\u3002;\n", "test", "/test.txt");
10
+ console.log(result);
package/test/test.ts ADDED
@@ -0,0 +1,117 @@
1
+ import { SceneParser } from "../index";
2
+ import { ADD_NEXT_ARG_LIST, SCRIPT_CONFIG } from "../config/scriptConfig";
3
+
4
+ const parser = new SceneParser((assetList) => {
5
+ }, (fileName, assetType) => {
6
+ return fileName;
7
+ }, ADD_NEXT_ARG_LIST, SCRIPT_CONFIG);
8
+
9
+ const result = parser.parse(`
10
+ ; 初始场景,以及特效演示
11
+ changeBg:c4.jpg -next;
12
+ unlockCg:c4.jpg -name=街前; 解锁部分CG
13
+ unlockCg:xgmain.jpeg -name=星光咖啡馆与死神之蝶;
14
+ unlockBgm:s_Title.mp3 -name=Smiling-Swinging!!;
15
+ WebGAL:特效系统是3.9.2版本新引入的系统,你想要看特效的演示吗?;
16
+ choose:观看特效演示:demo|我不要看特效,直接来吧!:toStart;
17
+ label:demo;
18
+ pixiInit;
19
+ pixiPerform:rain;
20
+ WebGAL:现在展示的是下雨的特效。;
21
+ pixiInit;
22
+ pixiPerform:snow;
23
+ WebGAL:现在展示的是下雪的特效。;
24
+ setTextbox:hide;
25
+ pixiInit;
26
+ setTextbox:on -next;
27
+ WebGAL:特效的演示已经结束,现在我们正式开始吧!;
28
+
29
+ ; 正式场景
30
+ label:toStart;
31
+ playVideo:OP.mp4;
32
+ changeBg:c3.jpg -next;
33
+ unlockCg:c3.jpg -name=cafe;
34
+ changeFigure:m2.png -left -next;
35
+ bgm:cb1.mp3;
36
+ unlockBgm:cb1.mp3 -name=ひとすじの光明;
37
+ setAnimation:enter-from-left -target=fig-left -next;
38
+ 米咖多:蛋包饭是栞那做的,但红茶是夏目泡的。 -v1.ogg;
39
+ 昂晴:......;
40
+ 顺便问一下,你是打算做什么的?;
41
+ changeFigure:m1.png -left -next;
42
+ 米咖多:就是倒饮料。然后咖啡和红茶的冲泡方式我还是记住了的。 -v2.ogg;
43
+ 昂晴:这、这样么......;
44
+ :这猫爪子真的能泡茶么。;
45
+ 拿得了水壶吗?就凭他那个肉球爪子......;
46
+ 难道这些也是凭借猫妖的奇特力量做到的吗?;
47
+ changeFigure:none -left -next;
48
+ changeFigure:k1.png -next;
49
+ setAnimation:enter-from-bottom -target=fig-center -next;
50
+ 栞那:那么,你想先尝哪个? -v3.ogg;
51
+ choose:品尝蛋包饭:dbf|品尝红茶:hc;
52
+
53
+ ; 栞那选项
54
+ label:dbf;
55
+ 昂晴:总之,先确认下蛋包饭的味道吧;
56
+ changeFigure:k2.png -next;
57
+ 栞那:明白了,交给我吧 -v4.ogg;
58
+ changeFigure:none -next;
59
+ changeFigure:m2.png -left -next;
60
+ changeFigure:k3.png -right -next;
61
+ setAnimation:enter-from-left -target=fig-left -next;
62
+ setAnimation:enter-from-right -target=fig-right -next;
63
+ 栞那:那么米咖多先生,我去做一下试作品 -v5.ogg;
64
+ 米咖多:嗯。去吧 -v6.ogg;
65
+ changeFigure:none -left -next;
66
+ changeFigure:none -right -next;
67
+ changeFigure:k4.png -next;
68
+ setAnimation:enter-from-bottom -target=fig-center -next;
69
+ 栞那:那么高岭同学,我们移动到厨房吧 -v7.ogg;
70
+ changeFigure:none -next;
71
+ bgm:cb2.mp3;
72
+ unlockBgm:cb2.mp3 -name=Tea Break;
73
+ changeBg:c2.jpg;
74
+ unlockCg:c2.jpg -name=厨房;
75
+ changeFigure:k2.png -next;
76
+ 栞那:话不多说开始做吧 -v8.ogg;
77
+ jumpLabel:end;
78
+
79
+ ; 夏目选项
80
+ label:hc;
81
+ changeFigure:none -next;
82
+ changeFigure:m1.png -left -next;
83
+ changeFigure:k1.png -right -next;
84
+ setAnimation:enter-from-left -target=fig-left -next;
85
+ setAnimation:enter-from-right -target=fig-right -next;
86
+ 米咖多:那么就是,夏目了吧 -v9.ogg;
87
+ changeFigure:k6.png -right -next;
88
+ 栞那:她刚去休息,要不要我叫回来呢? -v10.ogg;
89
+ 昂晴:没事,我自己去吧;
90
+ changeFigure:none -left -next;
91
+ changeFigure:none -right -next;
92
+ bgm:cb2.mp3;
93
+ changeBg:c1.jpg -next;
94
+ unlockCg:c1.jpg -name=休息室;
95
+ :我先敲了敲门;
96
+ miniAvatar:n1.png;
97
+ 夏目:哪位? -v11.ogg;
98
+ 昂晴:我是高岭,可以进去吗?;
99
+ 夏目:可以,没问题 -v12.ogg;
100
+ 昂晴:打搅了;
101
+ miniAvatar:none;
102
+ changeFigure:n4.png -next;
103
+ 昂晴:打搅你休息了;
104
+ 夏目:不用在意,怎么了? -v13.ogg;
105
+ changeFigure:n2.png -next;
106
+ :她并没有无精打采,比想象中精神多了;
107
+ 昂晴:问道拿手菜谱,就听说四季同学泡的红茶味道不错,我也想品尝一下;
108
+ 夏目:明白了,那我们回去吧 -v14.ogg;
109
+ jumpLabel:end;
110
+
111
+ ; 结束场景
112
+ label:end;
113
+ changeFigure:none -next;
114
+ WebGAL:基础演出的展示已经结束。;
115
+ `, "test", "/test.txt");
116
+
117
+ console.log(result);
package/tsconfig.json ADDED
@@ -0,0 +1,29 @@
1
+ {
2
+ "compilerOptions": {
3
+ "declaration": true,
4
+ "declarationDir": "build/types",
5
+ "target": "ESNext",
6
+ "useDefineForClassFields": true,
7
+ "lib": ["DOM", "DOM.Iterable", "ESNext"],
8
+ "allowJs": false,
9
+ "skipLibCheck": false,
10
+ "esModuleInterop": false,
11
+ "allowSyntheticDefaultImports": true,
12
+ "strict": true,
13
+ "forceConsistentCasingInFileNames": true,
14
+ "module": "ESNext",
15
+ "noImplicitAny": false,
16
+ "moduleResolution": "Node",
17
+ "resolveJsonModule": true,
18
+ "isolatedModules": true,
19
+ "noEmit": true,
20
+ "jsx": "react-jsx",
21
+ "paths": {
22
+ "@/*": ["./src/*"]
23
+ }
24
+ },
25
+ "include": [
26
+ "src"
27
+ ],
28
+ "references": [{ "path": "./tsconfig.node.json"}]
29
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "compilerOptions": {
3
+ "composite": true,
4
+ "module": "esnext",
5
+ "moduleResolution": "node"
6
+ },
7
+ "include": [
8
+ "vite.config.ts"
9
+ ]
10
+ }