From 9a060eb6ffb1350089eace6ad25fe1ad9b31b7a1 Mon Sep 17 00:00:00 2001 From: OLDREDSTONE Date: Mon, 12 Jan 2026 20:58:25 +0800 Subject: [PATCH 1/2] =?UTF-8?q?[RDView]=20=E6=9B=B4=E6=96=B0=E7=BB=86?= =?UTF-8?q?=E5=88=86=E6=8B=8D=E7=9A=84=E5=9B=BE=E5=83=8F=EF=BC=8C=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E9=95=BF=E6=8C=89=E4=BA=8C=E6=8B=8D=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- script/rdview.js | 5 +++- script/rdview.ts | 5 +++- style/assets/beats/subdivision-area.png | Bin 130 -> 129 bytes style/rdview.css | 30 ++++++++++++++++++++++++ 4 files changed, 38 insertions(+), 2 deletions(-) diff --git a/script/rdview.js b/script/rdview.js index 90f77ca..fda7705 100644 --- a/script/rdview.js +++ b/script/rdview.js @@ -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') ? `
` : `
`; } 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`, () => ''])}`; + }], [(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`, () => ''])}`; } else if (obj instanceof RDGroup) { return `
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`, () => ''], )}
`; } diff --git a/style/assets/beats/subdivision-area.png b/style/assets/beats/subdivision-area.png index 9915732d12a185d4444df4b13ad90c4eff048da7..1bd906b94b324322375cebbfb5d50fe0daa0ba1e 100644 GIT binary patch delta 87 zcmZo-Y-F5Z7+~$`;us<^HCg1|f*.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; From 55c53278ea62cb5ae7c51bff69d82f7550a89608 Mon Sep 17 00:00:00 2001 From: OLDREDSTONE Date: Mon, 12 Jan 2026 21:10:13 +0800 Subject: [PATCH 2/2] =?UTF-8?q?[RDView]=E4=BF=AE=E5=A4=8D=E4=BA=8B?= =?UTF-8?q?=E4=BB=B6=E7=BB=84=E5=86=85=E7=9A=84=E5=8D=95=E5=8F=91=E6=8B=8D?= =?UTF-8?q?=E9=95=BF=E6=8C=89=E4=B8=8D=E6=98=BE=E7=A4=BA=E7=9A=84=E5=BC=82?= =?UTF-8?q?=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- style/rdview.css | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/style/rdview.css b/style/rdview.css index 9ed2093..e8bd658 100644 --- a/style/rdview.css +++ b/style/rdview.css @@ -1153,7 +1153,7 @@ 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); + transform: translate(calc(((var(--tick) + var(--delay) + var(--loop) * var(--interval)) * 28 - 4) * 1px), 0); z-index: -2; &::after { @@ -2210,6 +2210,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) + var(--loop) * var(--interval)) * 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;