[RDView] 更新细分拍的图像,添加长按二拍设置

This commit is contained in:
OLDREDSTONE 2026-01-12 20:58:25 +08:00
parent 0fecdf5b19
commit 9a060eb6ff
4 changed files with 38 additions and 2 deletions

View File

@ -849,6 +849,9 @@ function ReadProperties(reader, event, pairs) {
if (value = FindValue(pairs, "loop")) {
event.BeatStyle.Loop = parseInt(value.Value);
}
if (value = FindValue(pairs, "hold")) {
event.BeatStyle.Hold = parseFloat(value.Value);
}
break;
default:
break;
@ -938,7 +941,7 @@ function ConstructDivObject(obj) {
result += (((_a = obj.BeatStyle) === null || _a === void 0 ? void 0 : _a.RowXs[i]) === 'x') ? `<div class="x"></div>` : `<div></div>`;
}
return result;
}], [(obj.BeatType === BeatsSpecial.AddClassicBeat || obj.BeatType === BeatsSpecial.AddFreeTimeBeat || obj.BeatType === BeatsSpecial.PulseFreeTimeBeat) && ((_s = (_r = obj.BeatStyle) === null || _r === void 0 ? void 0 : _r.Hold) !== null && _s !== void 0 ? _s : 0) > 0, `holdbeat`, () => ''], [obj.BeatType === BeatsSpecial.AddOneshotBeat && obj.BeatStyle !== undefined && obj.BeatStyle.OneshotBeatSubType.includes(RDOneshotBeatSubType.Skipshot), `skipshot`, () => ''])}</div>`;
}], [(obj.BeatType === BeatsSpecial.AddClassicBeat || obj.BeatType === BeatsSpecial.AddFreeTimeBeat || obj.BeatType === BeatsSpecial.PulseFreeTimeBeat || obj.BeatType === BeatsSpecial.AddOneshotBeat) && ((_s = (_r = obj.BeatStyle) === null || _r === void 0 ? void 0 : _r.Hold) !== null && _s !== void 0 ? _s : 0) > 0, `holdbeat`, () => ''], [obj.BeatType === BeatsSpecial.AddOneshotBeat && obj.BeatStyle !== undefined && obj.BeatStyle.OneshotBeatSubType.includes(RDOneshotBeatSubType.Skipshot), `skipshot`, () => ''])}</div>`;
}
else if (obj instanceof RDGroup) {
return `<div class="event group"style="${ConstructCssPropertiesIfExists(new Map([

View File

@ -829,6 +829,9 @@ function ReadProperties(reader: Reader, event: RDEvent | RDGroup, pairs: KeyValu
if (value = FindValue(pairs, "loop")) {
event.BeatStyle.Loop = parseInt(value.Value);
}
if (value = FindValue(pairs, "hold")) {
event.BeatStyle.Hold = parseFloat(value.Value);
}
break;
default:
break;
@ -925,7 +928,7 @@ function ConstructDivObject(obj: RDEvent | RDGroup): string {
}
return result;
}],
[(obj.BeatType === BeatsSpecial.AddClassicBeat || obj.BeatType === BeatsSpecial.AddFreeTimeBeat || obj.BeatType === BeatsSpecial.PulseFreeTimeBeat) && (obj.BeatStyle?.Hold ?? 0) > 0, `holdbeat`, () => ''],
[(obj.BeatType === BeatsSpecial.AddClassicBeat || obj.BeatType === BeatsSpecial.AddFreeTimeBeat || obj.BeatType === BeatsSpecial.PulseFreeTimeBeat || obj.BeatType === BeatsSpecial.AddOneshotBeat) && (obj.BeatStyle?.Hold ?? 0) > 0, `holdbeat`, () => ''],
[obj.BeatType === BeatsSpecial.AddOneshotBeat && obj.BeatStyle !== undefined && obj.BeatStyle.OneshotBeatSubType.includes(RDOneshotBeatSubType.Skipshot), `skipshot`, () => ''],
)}</div>`;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 130 B

After

Width:  |  Height:  |  Size: 129 B

View File

@ -1146,6 +1146,36 @@
}
}
&>.beat:not(:has(.classicbeat)) {
&>div.holdbeat {
position: absolute;
width: calc((var(--hold) * 28 - 2) * 1px);
height: inherit;
background-size: auto 100%;
background-image: url(./assets/beats/hold-area.png);
transform: translate(calc(((var(--tick) + var(--delay)) * 28 - 4) * 1px), 0);
z-index: -2;
&::after {
content: '';
position: absolute;
width: 2px;
height: 28px;
background-size: auto 100%;
transform: translate(calc((var(--hold) * 28 - 2) * 1px), 0);
background-image: url(./assets/beats/hold-right.png);
}
}
&:active>div.holdbeat {
background-image: url(./assets/beats/hold-hover-area.png);
&::after {
background-image: url(./assets/beats/hold-hover-right.png);
}
}
}
&>.beat:has(.row-xs) {
width: 56px;
height: 28px;