sonolus-bandori-engine 0.6.8 → 0.7.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.
package/README.md CHANGED
@@ -19,18 +19,31 @@ Engine ID: `1`
19
19
 
20
20
  ### Skin Sprites
21
21
 
22
- | ID | Sprite | Bandori Asset Path |
23
- | --- | ------------- | ------------------------------------------------- |
24
- | 1 | Stage | `/ingameskin/fieldskin/{name}/bg_line_rhythm.png` |
25
- | 2 | Judgment Line | `/ingameskin/fieldskin/{name}/game_play_line.png` |
22
+ | ID | Sprite | Bandori Asset Path |
23
+ | --- | ------------------------------ | ----------------------------------------------------- |
24
+ | 1 | Stage | `/ingameskin/fieldskin/{name}/bg_line_rhythm` |
25
+ | 2 | Judgment Line | `/ingameskin/fieldskin/{name}/game_play_line` |
26
+ | 11 | Left Directional Flick Note | `/ingameskin/noteskin/{name}/DirectionalFlickSprites` |
27
+ | 12 | Right Directional Flick Note | `/ingameskin/noteskin/{name}/DirectionalFlickSprites` |
28
+ | 21 | Left Directional Flick Marker | `/ingameskin/noteskin/{name}/DirectionalFlickSprites` |
29
+ | 22 | Right Directional Flick Marker | `/ingameskin/noteskin/{name}/DirectionalFlickSprites` |
26
30
 
27
31
  ### Effect Clips
28
32
 
29
- | ID | Sprite | Bandori Asset Path |
30
- | --- | ------------------------ | ---------------------------------------------- |
31
- | 1 | Directional Flick Single | `/sound/tapseskin/{name}/directional_fl.mp3` |
32
- | 2 | Directional Flick Double | `/sound/tapseskin/{name}/directional_fl_2.mp3` |
33
- | 3 | Directional Flick Triple | `/sound/tapseskin/{name}/directional_fl_3.mp3` |
33
+ | ID | Clip | Bandori Asset Path |
34
+ | --- | ------------------------ | ------------------------------------------ |
35
+ | 1 | Directional Flick Single | `/sound/tapseskin/{name}/directional_fl` |
36
+ | 2 | Directional Flick Double | `/sound/tapseskin/{name}/directional_fl_2` |
37
+ | 3 | Directional Flick Triple | `/sound/tapseskin/{name}/directional_fl_3` |
38
+
39
+ ### Particle Effects
40
+
41
+ | ID | Effect |
42
+ | --- | -------------------------------- |
43
+ | 1 | Circular Left Directional Flick |
44
+ | 2 | Circular Right Directional Flick |
45
+ | 11 | Linear Left Directional Flick |
46
+ | 12 | Linear Right Directional Flick |
34
47
 
35
48
  ## Documentation
36
49
 
Binary file
package/dist/EngineData CHANGED
Binary file
package/dist/convert.d.ts CHANGED
@@ -1,38 +1,38 @@
1
1
  import { LevelData } from 'sonolus-core';
2
- export declare type ChartObject = SingleObject | DirectionalObject | SlideObject | LongObject | BPMObject | SystemObject;
3
- declare type ObjectBase = {
2
+ export type ChartObject = SingleObject | DirectionalObject | SlideObject | LongObject | BPMObject | SystemObject;
3
+ type ObjectBase = {
4
4
  beat: number;
5
5
  };
6
- declare type NoteBase = ObjectBase & {
6
+ type NoteBase = ObjectBase & {
7
7
  lane: number;
8
8
  flick?: true;
9
9
  skill?: true;
10
10
  charge?: true;
11
11
  };
12
- declare type SingleObject = NoteBase & {
12
+ type SingleObject = NoteBase & {
13
13
  type: 'Single';
14
14
  };
15
- declare type DirectionalObject = NoteBase & {
15
+ type DirectionalObject = NoteBase & {
16
16
  type: 'Directional';
17
17
  direction: 'Left' | 'Right';
18
18
  width: number;
19
19
  };
20
- declare type SlideObject = {
20
+ type SlideObject = {
21
21
  type: 'Slide';
22
22
  connections: Connection[];
23
23
  };
24
- declare type LongObject = {
24
+ type LongObject = {
25
25
  type: 'Long';
26
26
  connections: Connection[];
27
27
  };
28
- declare type Connection = NoteBase & {
28
+ type Connection = NoteBase & {
29
29
  hidden?: true;
30
30
  };
31
- declare type BPMObject = ObjectBase & {
31
+ type BPMObject = ObjectBase & {
32
32
  type: 'BPM';
33
33
  bpm: number;
34
34
  };
35
- declare type SystemObject = ObjectBase & {
35
+ type SystemObject = ObjectBase & {
36
36
  type: 'System';
37
37
  data: string;
38
38
  };
package/dist/convert.js CHANGED
@@ -83,8 +83,7 @@ function fromBestdori(chart, archetypes) {
83
83
  let segments = [];
84
84
  const hasHidden = chartObject.connections.some((connection) => connection.hidden);
85
85
  const isLong = chartObject.connections.length === 2 &&
86
- chartObject.connections[0].lane ===
87
- chartObject.connections[1].lane
86
+ chartObject.connections[0].lane === chartObject.connections[1].lane
88
87
  ? 1
89
88
  : 0;
90
89
  chartObject.connections.forEach((connection, index) => {
@@ -120,14 +119,7 @@ function fromBestdori(chart, archetypes) {
120
119
  : archetypes.slideEndNoteIndex,
121
120
  data: {
122
121
  index: 0,
123
- values: [
124
- 0,
125
- time,
126
- lane,
127
- 0,
128
- 0,
129
- isLong,
130
- ],
122
+ values: [0, time, lane, 0, 0, isLong],
131
123
  },
132
124
  },
133
125
  time,
@@ -158,7 +150,7 @@ function fromBestdori(chart, archetypes) {
158
150
  time: head.time,
159
151
  lane: head.lane,
160
152
  };
161
- segments.forEach((segment, index) => {
153
+ segments.forEach((segment) => {
162
154
  wrappedSliderEntities.push({
163
155
  entity: {
164
156
  archetype: hasHidden
@@ -173,7 +165,6 @@ function fromBestdori(chart, archetypes) {
173
165
  segment.time,
174
166
  prevSegment.lane,
175
167
  segment.lane,
176
- index === 0 ? 1 : 0,
177
168
  ],
178
169
  },
179
170
  },
@@ -191,6 +182,7 @@ function fromBestdori(chart, archetypes) {
191
182
  }
192
183
  });
193
184
  return {
185
+ bgmOffset: 0,
194
186
  entities: [
195
187
  ...wrappedNoteEntities
196
188
  .sort((a, b) => a.time - b.time || Math.abs(b.lane) - Math.abs(a.lane))
@@ -198,18 +190,15 @@ function fromBestdori(chart, archetypes) {
198
190
  if (wrappedNoteEntity.head) {
199
191
  if (!wrappedNoteEntity.entity.data)
200
192
  throw 'Unexpected missing entity data';
201
- wrappedNoteEntity.entity.data.values[0] =
202
- wrappedNoteEntities.indexOf(wrappedNoteEntity.head);
193
+ wrappedNoteEntity.entity.data.values[0] = wrappedNoteEntities.indexOf(wrappedNoteEntity.head);
203
194
  }
204
195
  return wrappedNoteEntity.entity;
205
196
  }),
206
197
  ...wrappedSliderEntities.map((wrappedSliderEntity) => {
207
198
  if (!wrappedSliderEntity.entity.data)
208
199
  throw 'Unexpected missing entity data';
209
- wrappedSliderEntity.entity.data.values[0] =
210
- wrappedNoteEntities.indexOf(wrappedSliderEntity.head);
211
- wrappedSliderEntity.entity.data.values[1] =
212
- wrappedNoteEntities.indexOf(wrappedSliderEntity.tail);
200
+ wrappedSliderEntity.entity.data.values[0] = wrappedNoteEntities.indexOf(wrappedSliderEntity.head);
201
+ wrappedSliderEntity.entity.data.values[1] = wrappedNoteEntities.indexOf(wrappedSliderEntity.tail);
213
202
  return wrappedSliderEntity.entity;
214
203
  }),
215
204
  ],
@@ -226,7 +215,6 @@ function fromBestdori(chart, archetypes) {
226
215
  exports.fromBestdori = fromBestdori;
227
216
  function repair(chartObjects) {
228
217
  chartObjects.forEach((chartObject) => {
229
- var _a, _b;
230
218
  switch (chartObject.type) {
231
219
  case 'Long':
232
220
  case 'Slide': {
@@ -247,10 +235,10 @@ function repair(chartObjects) {
247
235
  break;
248
236
  }
249
237
  default:
250
- while ((_a = chartObject.connections[0]) === null || _a === void 0 ? void 0 : _a.hidden) {
238
+ while (chartObject.connections[0]?.hidden) {
251
239
  chartObject.connections.shift();
252
240
  }
253
- while ((_b = chartObject.connections[chartObject.connections.length - 1]) === null || _b === void 0 ? void 0 : _b.hidden) {
241
+ while (chartObject.connections[chartObject.connections.length - 1]?.hidden) {
254
242
  chartObject.connections.pop();
255
243
  }
256
244
  break;
package/dist/index.d.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  import { LevelData } from 'sonolus-core';
2
2
  import { ChartObject } from './convert';
3
3
  import { Resource } from './Resource';
4
- export declare const version = "0.6.8";
4
+ export declare const version = "0.7.1";
5
5
  export declare const engineInfo: {
6
6
  readonly name: "bandori";
7
- readonly version: 6;
7
+ readonly version: 7;
8
8
  readonly title: {
9
9
  readonly en: "BanG Dream!";
10
10
  readonly ja: "バンドリ!";
package/dist/index.js CHANGED
@@ -5,10 +5,10 @@ const convert_1 = require("./convert");
5
5
  const Resource_1 = require("./Resource");
6
6
  // eslint-disable-next-line @typescript-eslint/no-var-requires
7
7
  const archetypes = require('./archetypes');
8
- exports.version = '0.6.8';
8
+ exports.version = '0.7.1';
9
9
  exports.engineInfo = {
10
10
  name: 'bandori',
11
- version: 6,
11
+ version: 7,
12
12
  title: {
13
13
  en: 'BanG Dream!',
14
14
  ja: 'バンドリ!',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sonolus-bandori-engine",
3
- "version": "0.6.8",
3
+ "version": "0.7.1",
4
4
  "description": "A recreation of BanG Dream! Girls Band Party engine in Sonolus",
5
5
  "author": "NonSpicyBurrito",
6
6
  "repository": "github:NonSpicyBurrito/sonolus-bandori-engine",
@@ -18,18 +18,20 @@
18
18
  "build": "ts-node ./src/build && tsc -p ./tsconfig.lib.json"
19
19
  },
20
20
  "devDependencies": {
21
+ "@tsconfig/node16": "^1.0.3",
21
22
  "@types/fs-extra": "^9.0.13",
22
- "@typescript-eslint/eslint-plugin": "^5.20.0",
23
- "@typescript-eslint/parser": "^5.20.0",
24
- "eslint": "^8.13.0",
23
+ "@typescript-eslint/eslint-plugin": "^5.44.0",
24
+ "@typescript-eslint/parser": "^5.44.0",
25
+ "eslint": "^8.28.0",
25
26
  "eslint-config-prettier": "^8.5.0",
26
- "eslint-plugin-prettier": "^4.0.0",
27
+ "eslint-plugin-prettier": "^4.2.1",
27
28
  "fs-extra": "^10.1.0",
28
- "prettier": "^2.6.2",
29
- "sonolus-core": "^2.0.0",
30
- "sonolus.js": "^5.2.3",
31
- "ts-node": "^10.7.0",
32
- "ts-node-dev": "^1.1.8",
33
- "typescript": "^4.6.3"
29
+ "prettier": "^2.8.0",
30
+ "prettier-plugin-organize-imports": "^3.2.0",
31
+ "sonolus-core": "^6.0.0",
32
+ "sonolus.js": "^8.0.0",
33
+ "ts-node": "^10.9.1",
34
+ "ts-node-dev": "^2.0.0",
35
+ "typescript": "^4.9.3"
34
36
  }
35
37
  }