kipphi 2.0.0 → 2.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.
@@ -0,0 +1,584 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "type": "object",
4
+ "title": "ChartDataKPA",
5
+ "description": "KPA格式谱面数据根对象",
6
+ "properties": {
7
+ "version": {
8
+ "type": "number",
9
+ "description": "谱面版本号"
10
+ },
11
+ "offset": {
12
+ "type": "number",
13
+ "description": "谱面偏移(以毫秒计量)"
14
+ },
15
+ "duration": {
16
+ "type": "number",
17
+ "description": "音乐时长"
18
+ },
19
+ "info": {
20
+ "type": "object",
21
+ "description": "谱面元数据信息",
22
+ "properties": {
23
+ "level": {
24
+ "type": "string",
25
+ "description": "谱面难度等级"
26
+ },
27
+ "name": {
28
+ "type": "string",
29
+ "description": "谱面名称"
30
+ },
31
+ "charter": {
32
+ "type": "string",
33
+ "description": "谱师名称"
34
+ },
35
+ "illustrator": {
36
+ "type": "string",
37
+ "description": "画师名称"
38
+ },
39
+ "composer": {
40
+ "type": "string",
41
+ "description": "曲师名称"
42
+ }
43
+ },
44
+ "required": ["level", "name", "charter", "illustrator", "composer"]
45
+ },
46
+ "ui": {
47
+ "type": "object",
48
+ "description": "UI组件配置",
49
+ "properties": {
50
+ "pause": {
51
+ "type": "number",
52
+ "description": "暂停按钮绑定位置(null为不绑定)"
53
+ },
54
+ "combonumber": {
55
+ "type": "number",
56
+ "description": "连击数字绑定位置(null为不绑定)"
57
+ },
58
+ "combo": {
59
+ "type": "number",
60
+ "description": "连击标识绑定位置(null为不绑定)"
61
+ },
62
+ "score": {
63
+ "type": "number",
64
+ "description": "分数显示绑定位置(null为不绑定)"
65
+ },
66
+ "bar": {
67
+ "type": "number",
68
+ "description": "进度条绑定位置(null为不绑定)"
69
+ },
70
+ "name": {
71
+ "type": "number",
72
+ "description": "曲名显示绑定位置(null为不绑定)"
73
+ },
74
+ "level": {
75
+ "type": "number",
76
+ "description": "难度等级显示绑定位置(null为不绑定)"
77
+ }
78
+ }
79
+ },
80
+ "envEasings": {
81
+ "type": "array",
82
+ "description": "缓动定义列表",
83
+ "items": {
84
+ "type": "object",
85
+ "description": "模板缓动定义",
86
+ "properties": {
87
+ "content": {
88
+ "type": "string",
89
+ "description": "缓动内容(序列ID)"
90
+ },
91
+ "name": {
92
+ "type": "string",
93
+ "description": "缓动名称"
94
+ }
95
+ },
96
+ "required": ["content", "name"]
97
+ }
98
+ },
99
+ "eventNodeSequences": {
100
+ "type": "array",
101
+ "description": "事件节点序列列表",
102
+ "items": {
103
+ "type": "object",
104
+ "description": "事件节点序列",
105
+ "properties": {
106
+ "events": {
107
+ "type": "array",
108
+ "description": "事件列表",
109
+ "items": {
110
+ "type": "object",
111
+ "description": "单个事件数据",
112
+ "properties": {
113
+ "bezier": {
114
+ "type": "number",
115
+ "enum": [0, 1],
116
+ "description": "是否使用贝塞尔曲线(0:否, 1:是)"
117
+ },
118
+ "bezierPoints": {
119
+ "type": "array",
120
+ "items": {
121
+ "type": "number"
122
+ },
123
+ "minItems": 4,
124
+ "maxItems": 4,
125
+ "description": "贝塞尔控制点坐标[x1, y1, x2, y2]"
126
+ },
127
+ "easingLeft": {
128
+ "type": "number",
129
+ "description": "截取缓动左边界"
130
+ },
131
+ "easingRight": {
132
+ "type": "number",
133
+ "description": "截取缓动右边界"
134
+ },
135
+ "easingType": {
136
+ "oneOf": [
137
+ {
138
+ "type": "number"
139
+ },
140
+ {
141
+ "type": "string"
142
+ }
143
+ ],
144
+ "description": "缓动类型标识"
145
+ },
146
+ "end": {
147
+ "description": "结束值"
148
+ },
149
+ "endTime": {
150
+ "type": "array",
151
+ "items": {
152
+ "type": "number"
153
+ },
154
+ "minItems": 3,
155
+ "maxItems": 3,
156
+ "description": "结束时间[整数, 分子, 分母]"
157
+ },
158
+ "linkgroup": {
159
+ "type": "number",
160
+ "description": "链接组标识"
161
+ },
162
+ "start": {
163
+ "description": "开始值"
164
+ },
165
+ "startTime": {
166
+ "type": "array",
167
+ "items": {
168
+ "type": "number"
169
+ },
170
+ "minItems": 3,
171
+ "maxItems": 3,
172
+ "description": "开始时间[整数, 分子, 分母]"
173
+ },
174
+ "isParametric": {
175
+ "type": "boolean",
176
+ "description": "是否为参数方程缓动"
177
+ },
178
+ "interpreteAs": {
179
+ "type": "number",
180
+ "enum": [0, 1, 2],
181
+ "description": "解释方式(0:string, 1:int, 2:float)"
182
+ }
183
+ },
184
+ "required": [
185
+ "bezier",
186
+ "bezierPoints",
187
+ "easingLeft",
188
+ "easingRight",
189
+ "easingType",
190
+ "end",
191
+ "endTime",
192
+ "linkgroup",
193
+ "start",
194
+ "startTime"
195
+ ]
196
+ }
197
+ },
198
+ "id": {
199
+ "type": "string",
200
+ "description": "事件节点序列标识符"
201
+ },
202
+ "type": {
203
+ "type": "number",
204
+ "enum": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
205
+ "description": "事件类型(moveX, moveY, rotate, alpha, speed, easing, bpm, scaleX, scaleY, text, color)"
206
+ },
207
+ "endValue": {
208
+ "description": "序列结束值"
209
+ }
210
+ },
211
+ "required": ["events", "id", "type", "endValue"]
212
+ }
213
+ },
214
+ "orphanLines": {
215
+ "type": "array",
216
+ "description": "无父级的、直属谱面的判定线列表",
217
+ "items": {
218
+ "type": "object",
219
+ "description": "判定线数据",
220
+ "properties": {
221
+ "cover": {
222
+ "type": "boolean",
223
+ "description": "是否有遮罩"
224
+ },
225
+ "id": {
226
+ "type": "number",
227
+ "description": "判定线唯一标识符"
228
+ },
229
+ "group": {
230
+ "type": "number",
231
+ "description": "所属判定线组索引"
232
+ },
233
+ "nnLists": {
234
+ "type": "object",
235
+ "description": "普通音符节点列表集合",
236
+ "additionalProperties": {
237
+ "type": "object",
238
+ "properties": {
239
+ "speed": {
240
+ "type": "number",
241
+ "description": "音符速度"
242
+ },
243
+ "medianYOffset": {
244
+ "type": "number",
245
+ "description": "Y轴偏移中位数"
246
+ },
247
+ "noteNodes": {
248
+ "type": "array",
249
+ "description": "音符节点列表",
250
+ "items": {
251
+ "type": "object",
252
+ "properties": {
253
+ "notes": {
254
+ "type": "array",
255
+ "description": "音符列表",
256
+ "items": {
257
+ "type": "object",
258
+ "properties": {
259
+ "above": {
260
+ "type": "number",
261
+ "enum": [0, 1, 2],
262
+ "description": "音符位置(0:下方, 1:上方, 2:特殊下方)"
263
+ },
264
+ "alpha": {
265
+ "type": "number",
266
+ "description": "音符不透明度"
267
+ },
268
+ "endTime": {
269
+ "type": "array",
270
+ "items": {
271
+ "type": "number"
272
+ },
273
+ "minItems": 3,
274
+ "maxItems": 3,
275
+ "description": "结束时间[整数, 分子, 分母]"
276
+ },
277
+ "isFake": {
278
+ "type": "number",
279
+ "enum": [0, 1],
280
+ "description": "是否为假音符(0:否, 1:是)"
281
+ },
282
+ "positionX": {
283
+ "type": "number",
284
+ "description": "音符在判定线上的X位置"
285
+ },
286
+ "size": {
287
+ "type": "number",
288
+ "description": "音符大小"
289
+ },
290
+ "speed": {
291
+ "type": "number",
292
+ "description": "音符速度"
293
+ },
294
+ "startTime": {
295
+ "type": "array",
296
+ "items": {
297
+ "type": "number"
298
+ },
299
+ "minItems": 3,
300
+ "maxItems": 3,
301
+ "description": "开始时间[整数, 分子, 分母]"
302
+ },
303
+ "type": {
304
+ "type": "number",
305
+ "enum": [1, 2, 3, 4],
306
+ "description": "音符类型(1:Tap, 2:Hold, 3:Flick, 4:Drag)"
307
+ },
308
+ "visibleTime": {
309
+ "type": "number",
310
+ "description": "音符可视时间(打击前多少秒开始显现)"
311
+ },
312
+ "yOffset": {
313
+ "type": "number",
314
+ "description": "Y值偏移,使音符被打击时的位置偏离判定线"
315
+ },
316
+ "zIndex": {
317
+ "type": "number",
318
+ "description": "对象Z轴索引"
319
+ },
320
+ "zIndexHitEffects": {
321
+ "type": "number",
322
+ "description": "击打效果Z轴索引"
323
+ },
324
+ "tint": {
325
+ "type": "array",
326
+ "items": {
327
+ "type": "number"
328
+ },
329
+ "minItems": 3,
330
+ "maxItems": 3,
331
+ "description": "击打效果着色RGB值"
332
+ },
333
+ "tintHitEffects": {
334
+ "type": "array",
335
+ "items": {
336
+ "type": "number"
337
+ },
338
+ "minItems": 3,
339
+ "maxItems": 3,
340
+ "description": "击打效果着色RGB值"
341
+ },
342
+ "judgeSize": {
343
+ "type": "number",
344
+ "description": "判定区域宽度"
345
+ },
346
+ "visibleBeats": {
347
+ "type": "number",
348
+ "description": "可见拍数"
349
+ },
350
+ "absoluteYOffset": {
351
+ "type": "number",
352
+ "description": "绝对Y轴偏移"
353
+ }
354
+ },
355
+ "required": [
356
+ "above",
357
+ "alpha",
358
+ "endTime",
359
+ "isFake",
360
+ "positionX",
361
+ "size",
362
+ "speed",
363
+ "startTime",
364
+ "type",
365
+ "yOffset",
366
+ "absoluteYOffset"
367
+ ]
368
+ }
369
+ },
370
+ "startTime": {
371
+ "type": "array",
372
+ "items": {
373
+ "type": "number"
374
+ },
375
+ "minItems": 3,
376
+ "maxItems": 3,
377
+ "description": "节点中Note开始时间[整数, 分子, 分母]"
378
+ }
379
+ },
380
+ "required": ["notes", "startTime"]
381
+ }
382
+ }
383
+ },
384
+ "required": ["speed", "medianYOffset", "noteNodes"]
385
+ }
386
+ },
387
+ "hnLists": {
388
+ "type": "object",
389
+ "description": "Hold音符节点列表集合",
390
+ "additionalProperties": {
391
+ "type": "object",
392
+ "properties": {
393
+ "speed": {
394
+ "type": "number",
395
+ "description": "音符速度"
396
+ },
397
+ "medianYOffset": {
398
+ "type": "number",
399
+ "description": "Y轴偏移中位数"
400
+ },
401
+ "noteNodes": {
402
+ "type": "array",
403
+ "description": "音符节点列表",
404
+ "items": {
405
+ "type": "object",
406
+ "properties": {
407
+ "notes": {
408
+ "type": "array",
409
+ "items": {
410
+ "$ref": "#/properties/orphanLines/items/properties/nnLists/additionalProperties/properties/noteNodes/items/properties/notes/items"
411
+ }
412
+ },
413
+ "startTime": {
414
+ "type": "array",
415
+ "items": {
416
+ "type": "number"
417
+ },
418
+ "minItems": 3,
419
+ "maxItems": 3,
420
+ "description": "节点中Hold的开始时间[整数, 分子, 分母]"
421
+ }
422
+ },
423
+ "required": ["notes", "startTime"]
424
+ }
425
+ }
426
+ },
427
+ "required": ["speed", "medianYOffset", "noteNodes"]
428
+ }
429
+ },
430
+ "Name": {
431
+ "type": "string",
432
+ "description": "判定线名称"
433
+ },
434
+ "Texture": {
435
+ "type": "string",
436
+ "description": "纹理图片路径"
437
+ },
438
+ "eventLayers": {
439
+ "type": "array",
440
+ "description": "事件层级列表",
441
+ "items": {
442
+ "type": "object",
443
+ "properties": {
444
+ "moveX": {
445
+ "type": "string",
446
+ "description": "X轴移动事件序列ID"
447
+ },
448
+ "moveY": {
449
+ "type": "string",
450
+ "description": "Y轴移动事件序列ID"
451
+ },
452
+ "rotate": {
453
+ "type": "string",
454
+ "description": "旋转事件序列ID"
455
+ },
456
+ "alpha": {
457
+ "type": "string",
458
+ "description": "透明度事件序列ID"
459
+ },
460
+ "speed": {
461
+ "type": "string",
462
+ "description": "速度事件序列ID"
463
+ }
464
+ },
465
+ "required": ["moveX", "moveY", "rotate", "alpha", "speed"]
466
+ }
467
+ },
468
+ "children": {
469
+ "type": "array",
470
+ "items": {
471
+ "$ref": "#/properties/orphanLines/items"
472
+ },
473
+ "description": "子判定线列表",
474
+ "minItems": 0
475
+ },
476
+ "rotatesWithFather": {
477
+ "type": "boolean",
478
+ "description": "是否随父线旋转"
479
+ },
480
+ "anchor": {
481
+ "type": "array",
482
+ "items": {
483
+ "type": "number"
484
+ },
485
+ "minItems": 2,
486
+ "maxItems": 2,
487
+ "description": "锚点相对于图片的位置[x, y](实际影响的是图片位置)"
488
+ },
489
+ "extended": {
490
+ "type": "object",
491
+ "description": "扩展事件",
492
+ "properties": {
493
+ "scaleXEvents": {
494
+ "type": "string",
495
+ "description": "X轴缩放事件序列ID"
496
+ },
497
+ "scaleYEvents": {
498
+ "type": "string",
499
+ "description": "Y轴缩放事件序列ID"
500
+ },
501
+ "textEvents": {
502
+ "type": "string",
503
+ "description": "文本事件序列ID"
504
+ },
505
+ "colorEvents": {
506
+ "type": "string",
507
+ "description": "颜色事件序列ID"
508
+ }
509
+ },
510
+ "required": ["scaleXEvents", "scaleYEvents"]
511
+ },
512
+ "zOrder": {
513
+ "type": "number",
514
+ "description": "Z轴顺序,决定重叠顺序"
515
+ }
516
+ },
517
+ "required": [
518
+ "cover",
519
+ "id",
520
+ "group",
521
+ "nnLists",
522
+ "hnLists",
523
+ "Name",
524
+ "Texture",
525
+ "eventLayers",
526
+ "children",
527
+ "anchor"
528
+ ]
529
+
530
+ }
531
+ },
532
+ "bpmList": {
533
+ "type": "array",
534
+ "description": "BPM分段列表",
535
+ "items": {
536
+ "type": "object",
537
+ "properties": {
538
+ "bpm": {
539
+ "type": "number",
540
+ "description": "每分钟节拍数"
541
+ },
542
+ "startTime": {
543
+ "type": "array",
544
+ "items": {
545
+ "type": "number"
546
+ },
547
+ "minItems": 3,
548
+ "maxItems": 3,
549
+ "description": "开始时间[整数, 分子, 分母]"
550
+ }
551
+ },
552
+ "required": ["bpm", "startTime"]
553
+ }
554
+ },
555
+ "judgeLineGroups": {
556
+ "type": "array",
557
+ "description": "判定线组名称列表",
558
+ "items": {
559
+ "type": "string",
560
+ "description": "判定线组名称"
561
+ }
562
+ },
563
+ "chartTime": {
564
+ "type": "number",
565
+ "description": "谱面时间"
566
+ },
567
+ "rpeChartTime": {
568
+ "type": "number",
569
+ "description": "RPE格式谱面时间"
570
+ }
571
+ },
572
+ "required": [
573
+ "version",
574
+ "offset",
575
+ "duration",
576
+ "info",
577
+ "ui",
578
+ "envEasings",
579
+ "eventNodeSequences",
580
+ "orphanLines",
581
+ "bpmList",
582
+ "judgeLineGroups"
583
+ ]
584
+ }