@drincs/pixi-vn-ink 0.1.0

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 (74) hide show
  1. package/README.md +15 -0
  2. package/dist/functions/ChoiceInfoConverter.d.mts +5 -0
  3. package/dist/functions/ChoiceInfoConverter.d.ts +5 -0
  4. package/dist/functions/ChoiceInfoConverter.js +57 -0
  5. package/dist/functions/ChoiceInfoConverter.js.map +1 -0
  6. package/dist/functions/ChoiceInfoConverter.mjs +55 -0
  7. package/dist/functions/ChoiceInfoConverter.mjs.map +1 -0
  8. package/dist/functions/Importer.d.mts +3 -0
  9. package/dist/functions/Importer.d.ts +3 -0
  10. package/dist/functions/Importer.js +231 -0
  11. package/dist/functions/Importer.js.map +1 -0
  12. package/dist/functions/Importer.mjs +229 -0
  13. package/dist/functions/Importer.mjs.map +1 -0
  14. package/dist/functions/InkToPixivn.d.mts +5 -0
  15. package/dist/functions/InkToPixivn.d.ts +5 -0
  16. package/dist/functions/InkToPixivn.js +220 -0
  17. package/dist/functions/InkToPixivn.js.map +1 -0
  18. package/dist/functions/InkToPixivn.mjs +218 -0
  19. package/dist/functions/InkToPixivn.mjs.map +1 -0
  20. package/dist/functions/StoryInfoConverter.d.mts +6 -0
  21. package/dist/functions/StoryInfoConverter.d.ts +6 -0
  22. package/dist/functions/StoryInfoConverter.js +192 -0
  23. package/dist/functions/StoryInfoConverter.js.map +1 -0
  24. package/dist/functions/StoryInfoConverter.mjs +190 -0
  25. package/dist/functions/StoryInfoConverter.mjs.map +1 -0
  26. package/dist/functions/index.d.mts +3 -0
  27. package/dist/functions/index.d.ts +3 -0
  28. package/dist/functions/index.js +232 -0
  29. package/dist/functions/index.js.map +1 -0
  30. package/dist/functions/index.mjs +229 -0
  31. package/dist/functions/index.mjs.map +1 -0
  32. package/dist/types/InkRootType.d.mts +5 -0
  33. package/dist/types/InkRootType.d.ts +5 -0
  34. package/dist/types/InkRootType.js +4 -0
  35. package/dist/types/InkRootType.js.map +1 -0
  36. package/dist/types/InkRootType.mjs +3 -0
  37. package/dist/types/InkRootType.mjs.map +1 -0
  38. package/dist/types/InkStoryType.d.mts +9 -0
  39. package/dist/types/InkStoryType.d.ts +9 -0
  40. package/dist/types/InkStoryType.js +4 -0
  41. package/dist/types/InkStoryType.js.map +1 -0
  42. package/dist/types/InkStoryType.mjs +3 -0
  43. package/dist/types/InkStoryType.mjs.map +1 -0
  44. package/dist/types/LabelChoiceRes.d.mts +10 -0
  45. package/dist/types/LabelChoiceRes.d.ts +10 -0
  46. package/dist/types/LabelChoiceRes.js +4 -0
  47. package/dist/types/LabelChoiceRes.js.map +1 -0
  48. package/dist/types/LabelChoiceRes.mjs +3 -0
  49. package/dist/types/LabelChoiceRes.mjs.map +1 -0
  50. package/dist/types/parserItems/CallParserItemType.d.mts +5 -0
  51. package/dist/types/parserItems/CallParserItemType.d.ts +5 -0
  52. package/dist/types/parserItems/CallParserItemType.js +4 -0
  53. package/dist/types/parserItems/CallParserItemType.js.map +1 -0
  54. package/dist/types/parserItems/CallParserItemType.mjs +3 -0
  55. package/dist/types/parserItems/CallParserItemType.mjs.map +1 -0
  56. package/dist/types/parserItems/ChoiseInfoParserItemType.d.mts +8 -0
  57. package/dist/types/parserItems/ChoiseInfoParserItemType.d.ts +8 -0
  58. package/dist/types/parserItems/ChoiseInfoParserItemType.js +4 -0
  59. package/dist/types/parserItems/ChoiseInfoParserItemType.js.map +1 -0
  60. package/dist/types/parserItems/ChoiseInfoParserItemType.mjs +3 -0
  61. package/dist/types/parserItems/ChoiseInfoParserItemType.mjs.map +1 -0
  62. package/dist/types/parserItems/ChoiseParserItemType.d.mts +6 -0
  63. package/dist/types/parserItems/ChoiseParserItemType.d.ts +6 -0
  64. package/dist/types/parserItems/ChoiseParserItemType.js +4 -0
  65. package/dist/types/parserItems/ChoiseParserItemType.js.map +1 -0
  66. package/dist/types/parserItems/ChoiseParserItemType.mjs +3 -0
  67. package/dist/types/parserItems/ChoiseParserItemType.mjs.map +1 -0
  68. package/dist/types/parserItems/RootParserItemType.d.mts +5 -0
  69. package/dist/types/parserItems/RootParserItemType.d.ts +5 -0
  70. package/dist/types/parserItems/RootParserItemType.js +4 -0
  71. package/dist/types/parserItems/RootParserItemType.js.map +1 -0
  72. package/dist/types/parserItems/RootParserItemType.mjs +3 -0
  73. package/dist/types/parserItems/RootParserItemType.mjs.map +1 -0
  74. package/package.json +50 -0
@@ -0,0 +1,192 @@
1
+ 'use strict';
2
+
3
+ // src/functions/ChoiceInfoConverter.ts
4
+ function getLabelChoice(items, result) {
5
+ let text = "";
6
+ let label = "";
7
+ let preDialog = "";
8
+ items.forEach((v, index) => {
9
+ if (typeof v === "string") {
10
+ if (v.startsWith("^")) {
11
+ text = v.substring(1);
12
+ }
13
+ } else if (v && typeof v === "object") {
14
+ if ("*" in v && typeof v["*"] && typeof v["*"] === "string" && v["*"].includes("c")) {
15
+ let l = "c" + v["*"].split("c")[1];
16
+ label = l;
17
+ } else if ("s" in v && v["s"] instanceof Array) {
18
+ let t = findChoiceText(v["s"]);
19
+ if (t) {
20
+ text = t;
21
+ preDialog = t;
22
+ }
23
+ }
24
+ }
25
+ if (text && label) {
26
+ if (result[label]) {
27
+ result[label].text = text + result[label].text;
28
+ } else {
29
+ result[label] = { text };
30
+ }
31
+ if (preDialog) {
32
+ result[label].preDialog = { text: preDialog };
33
+ }
34
+ let newListItem = items.slice(index + 1);
35
+ getLabelChoice(newListItem, result);
36
+ return;
37
+ }
38
+ });
39
+ }
40
+ function findChoiceText(items) {
41
+ for (const item of items) {
42
+ if (typeof item === "string") {
43
+ if (item.startsWith("^")) {
44
+ return item.substring(1);
45
+ }
46
+ } else if (item instanceof Array) {
47
+ let res = findChoiceText(item);
48
+ if (res) {
49
+ return res;
50
+ }
51
+ }
52
+ }
53
+ }
54
+
55
+ // src/functions/StoryInfoConverter.ts
56
+ function getInkLabel(story) {
57
+ try {
58
+ let label = {};
59
+ findLabel(story, label);
60
+ return label;
61
+ } catch (e) {
62
+ console.error("[Pixi'VN Ink] Error parsing ink file", e);
63
+ }
64
+ }
65
+ function findLabel(story, labels) {
66
+ for (const storyItem of story) {
67
+ if (storyItem) {
68
+ if (storyItem instanceof Array) {
69
+ findLabel(storyItem, labels);
70
+ } else if (typeof storyItem === "object") {
71
+ addLabels(storyItem, labels);
72
+ }
73
+ }
74
+ }
75
+ }
76
+ function addLabels(storyItem, result, dadLabelKey = "", shareData = { preDialog: {} }) {
77
+ if (storyItem === null) {
78
+ return;
79
+ }
80
+ for (const [key, value] of Object.entries(storyItem)) {
81
+ if (value instanceof Array) {
82
+ let labels = [];
83
+ let subLabels = {};
84
+ let labelName = (dadLabelKey ? dadLabelKey + "_" : "") + key;
85
+ getLabel(value, labelName, labels, subLabels, shareData);
86
+ for (const [subKey, subValue] of Object.entries(subLabels)) {
87
+ result[subKey] = subValue;
88
+ }
89
+ if (labels.length > 0) {
90
+ result[labelName] = labels;
91
+ }
92
+ }
93
+ }
94
+ }
95
+ function getLabel(items, labelKey, labelSteps, subLabels, shareData, isNewLine = true) {
96
+ var _a;
97
+ let isInEnv = false;
98
+ let envList = [];
99
+ if (shareData.preDialog[labelKey]) {
100
+ labelSteps.push({
101
+ dialog: shareData.preDialog[labelKey].text
102
+ });
103
+ delete shareData.preDialog[labelKey];
104
+ isNewLine = false;
105
+ }
106
+ items.forEach((v) => {
107
+ if (isInEnv) {
108
+ envList.push(v);
109
+ if (typeof v === "string" && v == "/ev") {
110
+ isInEnv = false;
111
+ }
112
+ } else if (typeof v === "string") {
113
+ if (v.startsWith("^")) {
114
+ if (!isNewLine && labelSteps.length > 0) {
115
+ labelSteps[labelSteps.length - 1].dialog = labelSteps[labelSteps.length - 1].dialog + v.substring(1);
116
+ } else {
117
+ labelSteps.push({
118
+ dialog: v.substring(1)
119
+ });
120
+ }
121
+ isNewLine = false;
122
+ } else if (v == "ev") {
123
+ isInEnv = true;
124
+ } else if (v == "\n") {
125
+ isNewLine = true;
126
+ } else if (v == "done") {
127
+ labelSteps.push({
128
+ end: "label_end"
129
+ });
130
+ isNewLine = false;
131
+ } else if (v == "end") {
132
+ labelSteps.push({
133
+ end: "game_end"
134
+ });
135
+ isNewLine = false;
136
+ }
137
+ } else if (v instanceof Array) {
138
+ getLabel(v, labelKey, labelSteps, subLabels, shareData, isNewLine);
139
+ } else if (v && typeof v === "object") {
140
+ if ("->" in v && typeof v["->"] === "string" && !v["->"].includes(".^.^.")) {
141
+ labelSteps.push({
142
+ labelToOpen: {
143
+ labelId: v["->"],
144
+ type: "call"
145
+ }
146
+ });
147
+ isNewLine = false;
148
+ } else if ("*" in v && typeof v["*"] === "string" && v["*"].includes("c")) {
149
+ envList.push(v);
150
+ isNewLine = false;
151
+ } else if ("s" in v && v["s"] instanceof Array) {
152
+ envList.push(v);
153
+ isNewLine = false;
154
+ } else {
155
+ addLabels(v, subLabels, labelKey, shareData);
156
+ }
157
+ }
158
+ });
159
+ if (envList.length > 0) {
160
+ let choices = {};
161
+ getLabelChoice(envList, choices);
162
+ for (const [key, value] of Object.entries(choices)) {
163
+ let newKey = labelKey + "_" + key;
164
+ if (labelSteps.length > 0 && "currentChoiceMenuOptions" in labelSteps[labelSteps.length - 1]) {
165
+ (_a = labelSteps[labelSteps.length - 1].currentChoiceMenuOptions) == null ? void 0 : _a.push({
166
+ text: value.text,
167
+ label: newKey,
168
+ props: {},
169
+ type: "call"
170
+ });
171
+ } else {
172
+ labelSteps.push({
173
+ currentChoiceMenuOptions: [{
174
+ text: value.text,
175
+ label: newKey,
176
+ props: {},
177
+ type: "call"
178
+ }]
179
+ });
180
+ }
181
+ if (value.preDialog) {
182
+ shareData.preDialog[newKey] = {
183
+ text: value.preDialog.text
184
+ };
185
+ }
186
+ }
187
+ }
188
+ }
189
+
190
+ exports.getInkLabel = getInkLabel;
191
+ //# sourceMappingURL=StoryInfoConverter.js.map
192
+ //# sourceMappingURL=StoryInfoConverter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/functions/ChoiceInfoConverter.ts","../../src/functions/StoryInfoConverter.ts"],"names":[],"mappings":"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","file":"StoryInfoConverter.js","sourcesContent":["import LabelChoiceRes from '../types/LabelChoiceRes';\r\nimport RootParserItemType from '../types/parserItems/RootParserItemType';\r\n\r\nexport function getLabelChoice(items: any[], result: LabelChoiceRes) {\r\n let text: string = \"\"\r\n let label: string = \"\"\r\n let preDialog: string = \"\"\r\n items.forEach((v, index) => {\r\n if (typeof v === \"string\") {\r\n // Dialog\r\n if (v.startsWith(\"^\")) {\r\n text = v.substring(1)\r\n }\r\n }\r\n else if (v && typeof v === \"object\") {\r\n // if is a choice\r\n if (\"*\" in v && typeof v[\"*\"] && typeof v[\"*\"] === \"string\" && v[\"*\"].includes(\"c\")) {\r\n let l = \"c\" + v[\"*\"].split(\"c\")[1]\r\n label = l\r\n }\r\n // if is choise info\r\n else if (\"s\" in v && v[\"s\"] instanceof Array) {\r\n let t = findChoiceText(v[\"s\"])\r\n if (t) {\r\n text = t\r\n preDialog = t\r\n }\r\n }\r\n }\r\n if (text && label) {\r\n if (result[label]) {\r\n result[label].text = text + result[label].text\r\n }\r\n else {\r\n result[label] = { text: text }\r\n }\r\n if (preDialog) {\r\n result[label].preDialog = { text: preDialog }\r\n }\r\n // split text and label\r\n let newListItem = items.slice(index + 1)\r\n getLabelChoice(newListItem, result)\r\n return\r\n }\r\n })\r\n}\r\n\r\nfunction findChoiceText(items: RootParserItemType[]): string | undefined {\r\n for (const item of items) {\r\n if (typeof item === \"string\") {\r\n if (item.startsWith(\"^\")) {\r\n return item.substring(1)\r\n }\r\n }\r\n else if (item instanceof Array) {\r\n let res = findChoiceText(item)\r\n if (res) {\r\n return res\r\n }\r\n }\r\n }\r\n}\r\n","import { LabelJsonType, StepLabelJsonType } from '@drincs/pixi-vn';\r\nimport InkRootType from '../types/InkRootType';\r\nimport LabelChoiceRes from '../types/LabelChoiceRes';\r\nimport RootParserItemType from '../types/parserItems/RootParserItemType';\r\nimport { getLabelChoice } from './ChoiceInfoConverter';\r\n\r\nexport function getInkLabel(story: InkRootType[]): LabelJsonType | undefined {\r\n try {\r\n let label: LabelJsonType = {}\r\n\r\n findLabel(story, label)\r\n\r\n return label;\r\n } catch (e) {\r\n console.error(\"[Pixi'VN Ink] Error parsing ink file\", e)\r\n }\r\n}\r\n\r\nfunction findLabel(story: RootParserItemType[], labels: LabelJsonType) {\r\n for (const storyItem of story) {\r\n if (storyItem) {\r\n if (storyItem instanceof Array) {\r\n findLabel(storyItem, labels)\r\n }\r\n else if (typeof storyItem === \"object\") {\r\n addLabels(storyItem, labels)\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction addLabels(storyItem: object, result: LabelJsonType, dadLabelKey: string = \"\", shareData: ShareData = { preDialog: {} }) {\r\n if (storyItem === null) {\r\n return\r\n }\r\n // for value and key in item\r\n for (const [key, value] of Object.entries(storyItem)) {\r\n // if value is an array\r\n if (value instanceof Array) {\r\n let labels: StepLabelJsonType[] = []\r\n let subLabels: LabelJsonType = {}\r\n let labelName = (dadLabelKey ? dadLabelKey + \"_\" : \"\") + key\r\n getLabel(value, labelName, labels, subLabels, shareData)\r\n for (const [subKey, subValue] of Object.entries(subLabels)) {\r\n result[subKey] = subValue\r\n }\r\n if (labels.length > 0) {\r\n result[labelName] = labels\r\n }\r\n }\r\n }\r\n}\r\n\r\ntype ShareData = {\r\n preDialog: { [label: string]: { text: string } }\r\n}\r\nfunction getLabel(items: any[], labelKey: string, labelSteps: StepLabelJsonType[], subLabels: LabelJsonType, shareData: ShareData, isNewLine: boolean = true) {\r\n let isInEnv = false\r\n let envList: any[] = []\r\n if (shareData.preDialog[labelKey]) {\r\n labelSteps.push({\r\n dialog: shareData.preDialog[labelKey].text\r\n })\r\n delete shareData.preDialog[labelKey]\r\n isNewLine = false\r\n }\r\n items.forEach((v) => {\r\n if (isInEnv) {\r\n envList.push(v)\r\n if (typeof v === \"string\" && v == \"/ev\") {\r\n isInEnv = false\r\n }\r\n }\r\n else if (typeof v === \"string\") {\r\n // Dialog\r\n if (v.startsWith(\"^\")) {\r\n if (!isNewLine && labelSteps.length > 0) {\r\n labelSteps[labelSteps.length - 1].dialog = labelSteps[labelSteps.length - 1].dialog + v.substring(1)\r\n } else {\r\n labelSteps.push({\r\n dialog: v.substring(1)\r\n })\r\n }\r\n isNewLine = false\r\n }\r\n else if (v == \"ev\") {\r\n isInEnv = true\r\n }\r\n else if (v == \"\\n\") {\r\n isNewLine = true\r\n }\r\n else if (v == \"done\") {\r\n labelSteps.push({\r\n end: \"label_end\"\r\n })\r\n isNewLine = false\r\n }\r\n else if (v == \"end\") {\r\n labelSteps.push({\r\n end: \"game_end\"\r\n })\r\n isNewLine = false\r\n }\r\n }\r\n else if (v instanceof Array) {\r\n getLabel(v, labelKey, labelSteps, subLabels, shareData, isNewLine)\r\n }\r\n else if (v && typeof v === \"object\") {\r\n if (\"->\" in v && typeof v[\"->\"] === \"string\" && !v[\"->\"].includes(\".^.^.\")) {\r\n labelSteps.push({\r\n labelToOpen: {\r\n labelId: v[\"->\"],\r\n type: \"call\",\r\n }\r\n })\r\n isNewLine = false\r\n }\r\n else if (\"*\" in v && typeof v[\"*\"] === \"string\" && v[\"*\"].includes(\"c\")) {\r\n envList.push(v)\r\n isNewLine = false\r\n }\r\n // if is choise info\r\n else if (\"s\" in v && v[\"s\"] instanceof Array) {\r\n envList.push(v)\r\n isNewLine = false\r\n }\r\n else {\r\n addLabels(v, subLabels, labelKey, shareData)\r\n }\r\n }\r\n })\r\n if (envList.length > 0) {\r\n let choices: LabelChoiceRes = {}\r\n getLabelChoice(envList, choices)\r\n for (const [key, value] of Object.entries(choices)) {\r\n let newKey = labelKey + \"_\" + key\r\n // if last step is choice\r\n if (labelSteps.length > 0 && \"currentChoiceMenuOptions\" in labelSteps[labelSteps.length - 1]) {\r\n labelSteps[labelSteps.length - 1].currentChoiceMenuOptions?.push({\r\n text: value.text,\r\n label: newKey,\r\n props: {},\r\n type: \"call\"\r\n })\r\n }\r\n else {\r\n labelSteps.push({\r\n currentChoiceMenuOptions: [{\r\n text: value.text,\r\n label: newKey,\r\n props: {},\r\n type: \"call\"\r\n }]\r\n })\r\n }\r\n if (value.preDialog) {\r\n shareData.preDialog[newKey] = {\r\n text: value.preDialog.text\r\n }\r\n }\r\n }\r\n }\r\n}\r\n"]}
@@ -0,0 +1,190 @@
1
+ // src/functions/ChoiceInfoConverter.ts
2
+ function getLabelChoice(items, result) {
3
+ let text = "";
4
+ let label = "";
5
+ let preDialog = "";
6
+ items.forEach((v, index) => {
7
+ if (typeof v === "string") {
8
+ if (v.startsWith("^")) {
9
+ text = v.substring(1);
10
+ }
11
+ } else if (v && typeof v === "object") {
12
+ if ("*" in v && typeof v["*"] && typeof v["*"] === "string" && v["*"].includes("c")) {
13
+ let l = "c" + v["*"].split("c")[1];
14
+ label = l;
15
+ } else if ("s" in v && v["s"] instanceof Array) {
16
+ let t = findChoiceText(v["s"]);
17
+ if (t) {
18
+ text = t;
19
+ preDialog = t;
20
+ }
21
+ }
22
+ }
23
+ if (text && label) {
24
+ if (result[label]) {
25
+ result[label].text = text + result[label].text;
26
+ } else {
27
+ result[label] = { text };
28
+ }
29
+ if (preDialog) {
30
+ result[label].preDialog = { text: preDialog };
31
+ }
32
+ let newListItem = items.slice(index + 1);
33
+ getLabelChoice(newListItem, result);
34
+ return;
35
+ }
36
+ });
37
+ }
38
+ function findChoiceText(items) {
39
+ for (const item of items) {
40
+ if (typeof item === "string") {
41
+ if (item.startsWith("^")) {
42
+ return item.substring(1);
43
+ }
44
+ } else if (item instanceof Array) {
45
+ let res = findChoiceText(item);
46
+ if (res) {
47
+ return res;
48
+ }
49
+ }
50
+ }
51
+ }
52
+
53
+ // src/functions/StoryInfoConverter.ts
54
+ function getInkLabel(story) {
55
+ try {
56
+ let label = {};
57
+ findLabel(story, label);
58
+ return label;
59
+ } catch (e) {
60
+ console.error("[Pixi'VN Ink] Error parsing ink file", e);
61
+ }
62
+ }
63
+ function findLabel(story, labels) {
64
+ for (const storyItem of story) {
65
+ if (storyItem) {
66
+ if (storyItem instanceof Array) {
67
+ findLabel(storyItem, labels);
68
+ } else if (typeof storyItem === "object") {
69
+ addLabels(storyItem, labels);
70
+ }
71
+ }
72
+ }
73
+ }
74
+ function addLabels(storyItem, result, dadLabelKey = "", shareData = { preDialog: {} }) {
75
+ if (storyItem === null) {
76
+ return;
77
+ }
78
+ for (const [key, value] of Object.entries(storyItem)) {
79
+ if (value instanceof Array) {
80
+ let labels = [];
81
+ let subLabels = {};
82
+ let labelName = (dadLabelKey ? dadLabelKey + "_" : "") + key;
83
+ getLabel(value, labelName, labels, subLabels, shareData);
84
+ for (const [subKey, subValue] of Object.entries(subLabels)) {
85
+ result[subKey] = subValue;
86
+ }
87
+ if (labels.length > 0) {
88
+ result[labelName] = labels;
89
+ }
90
+ }
91
+ }
92
+ }
93
+ function getLabel(items, labelKey, labelSteps, subLabels, shareData, isNewLine = true) {
94
+ var _a;
95
+ let isInEnv = false;
96
+ let envList = [];
97
+ if (shareData.preDialog[labelKey]) {
98
+ labelSteps.push({
99
+ dialog: shareData.preDialog[labelKey].text
100
+ });
101
+ delete shareData.preDialog[labelKey];
102
+ isNewLine = false;
103
+ }
104
+ items.forEach((v) => {
105
+ if (isInEnv) {
106
+ envList.push(v);
107
+ if (typeof v === "string" && v == "/ev") {
108
+ isInEnv = false;
109
+ }
110
+ } else if (typeof v === "string") {
111
+ if (v.startsWith("^")) {
112
+ if (!isNewLine && labelSteps.length > 0) {
113
+ labelSteps[labelSteps.length - 1].dialog = labelSteps[labelSteps.length - 1].dialog + v.substring(1);
114
+ } else {
115
+ labelSteps.push({
116
+ dialog: v.substring(1)
117
+ });
118
+ }
119
+ isNewLine = false;
120
+ } else if (v == "ev") {
121
+ isInEnv = true;
122
+ } else if (v == "\n") {
123
+ isNewLine = true;
124
+ } else if (v == "done") {
125
+ labelSteps.push({
126
+ end: "label_end"
127
+ });
128
+ isNewLine = false;
129
+ } else if (v == "end") {
130
+ labelSteps.push({
131
+ end: "game_end"
132
+ });
133
+ isNewLine = false;
134
+ }
135
+ } else if (v instanceof Array) {
136
+ getLabel(v, labelKey, labelSteps, subLabels, shareData, isNewLine);
137
+ } else if (v && typeof v === "object") {
138
+ if ("->" in v && typeof v["->"] === "string" && !v["->"].includes(".^.^.")) {
139
+ labelSteps.push({
140
+ labelToOpen: {
141
+ labelId: v["->"],
142
+ type: "call"
143
+ }
144
+ });
145
+ isNewLine = false;
146
+ } else if ("*" in v && typeof v["*"] === "string" && v["*"].includes("c")) {
147
+ envList.push(v);
148
+ isNewLine = false;
149
+ } else if ("s" in v && v["s"] instanceof Array) {
150
+ envList.push(v);
151
+ isNewLine = false;
152
+ } else {
153
+ addLabels(v, subLabels, labelKey, shareData);
154
+ }
155
+ }
156
+ });
157
+ if (envList.length > 0) {
158
+ let choices = {};
159
+ getLabelChoice(envList, choices);
160
+ for (const [key, value] of Object.entries(choices)) {
161
+ let newKey = labelKey + "_" + key;
162
+ if (labelSteps.length > 0 && "currentChoiceMenuOptions" in labelSteps[labelSteps.length - 1]) {
163
+ (_a = labelSteps[labelSteps.length - 1].currentChoiceMenuOptions) == null ? void 0 : _a.push({
164
+ text: value.text,
165
+ label: newKey,
166
+ props: {},
167
+ type: "call"
168
+ });
169
+ } else {
170
+ labelSteps.push({
171
+ currentChoiceMenuOptions: [{
172
+ text: value.text,
173
+ label: newKey,
174
+ props: {},
175
+ type: "call"
176
+ }]
177
+ });
178
+ }
179
+ if (value.preDialog) {
180
+ shareData.preDialog[newKey] = {
181
+ text: value.preDialog.text
182
+ };
183
+ }
184
+ }
185
+ }
186
+ }
187
+
188
+ export { getInkLabel };
189
+ //# sourceMappingURL=StoryInfoConverter.mjs.map
190
+ //# sourceMappingURL=StoryInfoConverter.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/functions/ChoiceInfoConverter.ts","../../src/functions/StoryInfoConverter.ts"],"names":[],"mappings":"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","file":"StoryInfoConverter.mjs","sourcesContent":["import LabelChoiceRes from '../types/LabelChoiceRes';\r\nimport RootParserItemType from '../types/parserItems/RootParserItemType';\r\n\r\nexport function getLabelChoice(items: any[], result: LabelChoiceRes) {\r\n let text: string = \"\"\r\n let label: string = \"\"\r\n let preDialog: string = \"\"\r\n items.forEach((v, index) => {\r\n if (typeof v === \"string\") {\r\n // Dialog\r\n if (v.startsWith(\"^\")) {\r\n text = v.substring(1)\r\n }\r\n }\r\n else if (v && typeof v === \"object\") {\r\n // if is a choice\r\n if (\"*\" in v && typeof v[\"*\"] && typeof v[\"*\"] === \"string\" && v[\"*\"].includes(\"c\")) {\r\n let l = \"c\" + v[\"*\"].split(\"c\")[1]\r\n label = l\r\n }\r\n // if is choise info\r\n else if (\"s\" in v && v[\"s\"] instanceof Array) {\r\n let t = findChoiceText(v[\"s\"])\r\n if (t) {\r\n text = t\r\n preDialog = t\r\n }\r\n }\r\n }\r\n if (text && label) {\r\n if (result[label]) {\r\n result[label].text = text + result[label].text\r\n }\r\n else {\r\n result[label] = { text: text }\r\n }\r\n if (preDialog) {\r\n result[label].preDialog = { text: preDialog }\r\n }\r\n // split text and label\r\n let newListItem = items.slice(index + 1)\r\n getLabelChoice(newListItem, result)\r\n return\r\n }\r\n })\r\n}\r\n\r\nfunction findChoiceText(items: RootParserItemType[]): string | undefined {\r\n for (const item of items) {\r\n if (typeof item === \"string\") {\r\n if (item.startsWith(\"^\")) {\r\n return item.substring(1)\r\n }\r\n }\r\n else if (item instanceof Array) {\r\n let res = findChoiceText(item)\r\n if (res) {\r\n return res\r\n }\r\n }\r\n }\r\n}\r\n","import { LabelJsonType, StepLabelJsonType } from '@drincs/pixi-vn';\r\nimport InkRootType from '../types/InkRootType';\r\nimport LabelChoiceRes from '../types/LabelChoiceRes';\r\nimport RootParserItemType from '../types/parserItems/RootParserItemType';\r\nimport { getLabelChoice } from './ChoiceInfoConverter';\r\n\r\nexport function getInkLabel(story: InkRootType[]): LabelJsonType | undefined {\r\n try {\r\n let label: LabelJsonType = {}\r\n\r\n findLabel(story, label)\r\n\r\n return label;\r\n } catch (e) {\r\n console.error(\"[Pixi'VN Ink] Error parsing ink file\", e)\r\n }\r\n}\r\n\r\nfunction findLabel(story: RootParserItemType[], labels: LabelJsonType) {\r\n for (const storyItem of story) {\r\n if (storyItem) {\r\n if (storyItem instanceof Array) {\r\n findLabel(storyItem, labels)\r\n }\r\n else if (typeof storyItem === \"object\") {\r\n addLabels(storyItem, labels)\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction addLabels(storyItem: object, result: LabelJsonType, dadLabelKey: string = \"\", shareData: ShareData = { preDialog: {} }) {\r\n if (storyItem === null) {\r\n return\r\n }\r\n // for value and key in item\r\n for (const [key, value] of Object.entries(storyItem)) {\r\n // if value is an array\r\n if (value instanceof Array) {\r\n let labels: StepLabelJsonType[] = []\r\n let subLabels: LabelJsonType = {}\r\n let labelName = (dadLabelKey ? dadLabelKey + \"_\" : \"\") + key\r\n getLabel(value, labelName, labels, subLabels, shareData)\r\n for (const [subKey, subValue] of Object.entries(subLabels)) {\r\n result[subKey] = subValue\r\n }\r\n if (labels.length > 0) {\r\n result[labelName] = labels\r\n }\r\n }\r\n }\r\n}\r\n\r\ntype ShareData = {\r\n preDialog: { [label: string]: { text: string } }\r\n}\r\nfunction getLabel(items: any[], labelKey: string, labelSteps: StepLabelJsonType[], subLabels: LabelJsonType, shareData: ShareData, isNewLine: boolean = true) {\r\n let isInEnv = false\r\n let envList: any[] = []\r\n if (shareData.preDialog[labelKey]) {\r\n labelSteps.push({\r\n dialog: shareData.preDialog[labelKey].text\r\n })\r\n delete shareData.preDialog[labelKey]\r\n isNewLine = false\r\n }\r\n items.forEach((v) => {\r\n if (isInEnv) {\r\n envList.push(v)\r\n if (typeof v === \"string\" && v == \"/ev\") {\r\n isInEnv = false\r\n }\r\n }\r\n else if (typeof v === \"string\") {\r\n // Dialog\r\n if (v.startsWith(\"^\")) {\r\n if (!isNewLine && labelSteps.length > 0) {\r\n labelSteps[labelSteps.length - 1].dialog = labelSteps[labelSteps.length - 1].dialog + v.substring(1)\r\n } else {\r\n labelSteps.push({\r\n dialog: v.substring(1)\r\n })\r\n }\r\n isNewLine = false\r\n }\r\n else if (v == \"ev\") {\r\n isInEnv = true\r\n }\r\n else if (v == \"\\n\") {\r\n isNewLine = true\r\n }\r\n else if (v == \"done\") {\r\n labelSteps.push({\r\n end: \"label_end\"\r\n })\r\n isNewLine = false\r\n }\r\n else if (v == \"end\") {\r\n labelSteps.push({\r\n end: \"game_end\"\r\n })\r\n isNewLine = false\r\n }\r\n }\r\n else if (v instanceof Array) {\r\n getLabel(v, labelKey, labelSteps, subLabels, shareData, isNewLine)\r\n }\r\n else if (v && typeof v === \"object\") {\r\n if (\"->\" in v && typeof v[\"->\"] === \"string\" && !v[\"->\"].includes(\".^.^.\")) {\r\n labelSteps.push({\r\n labelToOpen: {\r\n labelId: v[\"->\"],\r\n type: \"call\",\r\n }\r\n })\r\n isNewLine = false\r\n }\r\n else if (\"*\" in v && typeof v[\"*\"] === \"string\" && v[\"*\"].includes(\"c\")) {\r\n envList.push(v)\r\n isNewLine = false\r\n }\r\n // if is choise info\r\n else if (\"s\" in v && v[\"s\"] instanceof Array) {\r\n envList.push(v)\r\n isNewLine = false\r\n }\r\n else {\r\n addLabels(v, subLabels, labelKey, shareData)\r\n }\r\n }\r\n })\r\n if (envList.length > 0) {\r\n let choices: LabelChoiceRes = {}\r\n getLabelChoice(envList, choices)\r\n for (const [key, value] of Object.entries(choices)) {\r\n let newKey = labelKey + \"_\" + key\r\n // if last step is choice\r\n if (labelSteps.length > 0 && \"currentChoiceMenuOptions\" in labelSteps[labelSteps.length - 1]) {\r\n labelSteps[labelSteps.length - 1].currentChoiceMenuOptions?.push({\r\n text: value.text,\r\n label: newKey,\r\n props: {},\r\n type: \"call\"\r\n })\r\n }\r\n else {\r\n labelSteps.push({\r\n currentChoiceMenuOptions: [{\r\n text: value.text,\r\n label: newKey,\r\n props: {},\r\n type: \"call\"\r\n }]\r\n })\r\n }\r\n if (value.preDialog) {\r\n shareData.preDialog[newKey] = {\r\n text: value.preDialog.text\r\n }\r\n }\r\n }\r\n }\r\n}\r\n"]}
@@ -0,0 +1,3 @@
1
+ export { importInkText } from './Importer.mjs';
2
+ export { convertInkText } from './InkToPixivn.mjs';
3
+ import '@drincs/pixi-vn';
@@ -0,0 +1,3 @@
1
+ export { importInkText } from './Importer.js';
2
+ export { convertInkText } from './InkToPixivn.js';
3
+ import '@drincs/pixi-vn';