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 9915732..1bd906b 100644 Binary files a/style/assets/beats/subdivision-area.png and b/style/assets/beats/subdivision-area.png differ diff --git a/style/rdview.css b/style/rdview.css index 1780c62..9ed2093 100644 --- a/style/rdview.css +++ b/style/rdview.css @@ -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;