Releases: 2228293026/JipperOverlayer
v1.1.1
Features
- ComboLineReversed: new toggle to swap the vertical order of the combo number and combo title label; animation anchor adapts to both orientations (3 Tr keys: EN/KO/CN)
- ShowAutoInXPerfect: when XPerfect mode is active, optionally show the auto-tile perfect count in orange (
#FF8000) after the−Perfectvalue
Refactors
- Jongyeol State/Death/PurePerfect via
IOverlayTextManager: moved all three Jongyeol-mode helper methods (UpdateDeath,UpdateState,CheckPurePerfect,GetTooJudgement) out ofJongyeolModuleand intoIOverlayTextManager; bothOverlayTextManagerNormalandOverlayTextManagerCoopnow implement them, enabling full coop-aware Jongyeol display - Coop Jongyeol Death/State:
OverlayTextManagerCoopnow renders per-player death counts and state labels in each player's color, withIsPurePerfectchecked independently per player _monofield cache:OverlayMonocomponent reference stored as_monofield at construction; replaces repeatedGetComponent<OverlayMono>()calls inUpdateCombo,Show(), andHide()- Static
StringBuilderpools:_judgementSb,_attemptSb,_bpmSb,_comboSb,_timingSbdeclared as static fields; eliminates per-frame heap allocations acrossBuildJudgementString,UpdateAttempts,BuildBpmText,UpdateCombo, andUpdateTimingScale UpdateTimingScaleearly-exit: value cached in_lastTimingScale; text rebuild skipped when scale changes less than 0.001%OutExpoChangelookup table: combo animation easing replaced with a 31-entry pre-built float array (_expTable), removingMath.Powcalls per animation frameOverlayMono.Updateguard: added!Overlay.GameObject.activeSelfcheck to skip update loop when overlay is hidden
Full Changelog: v1.1.0...v1.1.1
v1.1.0
Features
- Full Jongyeol color customization: 3 gradients (JCombo/JDeath/JTiming) + 11 static colors (8 states + FPS/Author/Start)
- Display order: reorder main stack elements with ▲▼ (General 7 items, Jongyeol 13 items)
- BPM line order: reorder TBPM/CBPM/KPS lines independently
- BPM line visibility: per-line ✓ toggle to show/hide each BPM line
- Attempt line order: swap Attempt/Full Attempt display order
- 14 new Tr keys for state colors + 23 keys for display order (EN/KO/CN)
Refactors
- Settings folder namespace: JipperOverlayer.Overlayer.Settings → JipperOverlayer.Overlayer (fixes Settings type collision)
- DrawReorderList helper: unified ▲▼/✓ UI for all order lists, 3 callers share 1 implementation (-45 lines)
- BPM text building: extracted shared BuildBpmText() static method, used by both General and Jongyeol mode
Bug Fixes
- ColorPerDictionary.GetColor cache: added noCache parameter for static color updates
- EnsureDefaults() migration: detect stale colors.json and reset transparent (a==0) colors
- FPS/Author/Start text: label white via <color=white>, value takes configured color
- BPM/Combo colors: added missing reset buttons in General section
- State colors: all 8 conditions fully translated with "Color"/"색상"/"颜色" suffix
- Empty reference guard: null-check in SetupLocationMain to prevent NRE from stale config
- Config migration: auto-filter invalid IDs from display order arrays on load
- BPM cache: DirtyBpmCache() forces text rebuild when visibility/order changes
Full Changelog: v1.0.8...v1.1.0
v1.0.8
feat: integrate XPerfect counter into judgement display
Add optional integration with XPerfect mod:
- Detect XPerfect availability via UnityModManager and cache delegates
- Replace perfect counts in judgement line with +Perfect / X-Perfect / -Perfect
- Ensure correct execution order with HarmonyAfter
- Handle dynamic enable/disable of XPerfect via OnToggle event
- Add settings toggle "Show XPerfect in Judgement"
Full Changelog: v1.0.7...v1.0.8
v1.0.7
-
All custom positions changed to pixel offsets (position += offset), not affected by alignment
-
New PosSlide2: XY on the same line, -2000~2000 range, integer pixel values
-
Tr.cs: Added Coop and 11 position tags Key, trilingual translation
-
Position grouping fold: Main/BPM, Judge(P1~P4), Others
-
FPS refresh rate slider indented below ShowFPS, hidden when turned off
-
DecimalPrecision remove extra {} blocks, indentation alignment
-
Attempt added Coop independent offset field
-
ApplyFontToAll remove redundant try-catch
-
Configuration migration: ConfigVersion 0→2, old PX/PY converted to offset
-
Change JudgementText/_judgementObject to [4] array
-
SetupLocationJudgement: P1/P3 x=-250, P2/P4 x=250 First row y=35, Second row y=5 (same as single-player default height)
-
UpdateJudgement: Read per-player marginTrackers in coop mode
-
Settings: P1~P4 JudgePX/PY sliders, default values aligned with two-column layout
-
Move Attempt text to x=550 in multiplayer mode to avoid overlap
-
In Show(), set up SetupLocationJudgement first, then UpdateJudgement
-
Title text updates in real time, pausing switching Jongyeol does not lose text, DecimalPrecision injection, code cleanup
Full Changelog: v1.0.6...v1.0.7
v1.0.6
Bug Fixes
- Fix version detection for game API changes: detect v141+ via scrMarginTracker and ADOBase.playerManager instead of removed scrController.playerManager
- Fix percentAcc/percentXAcc delegate bindings: use ADOBase.playerManager (static) instead of scrController.instance.playerManager (removed property)
Full Changelog: v1.0.5...v1.0.6
v1.0.5
Features
- Customizable text labels: all overlay labels can be customized via Custom Labels settings panel
- Label presets: English / Korean / Chinese one-click presets
- FPS refresh rate slider (0.05~1.0s) for Jongyeol mode
- Settings UI reorganized with collapsible panels (General/Display/Jongyeol/Alignment/Labels)
Refactors
- Replaced JOverlay inheritance with JongyeolModule composition (-405 lines)
- Removed all unused virtual keywords (Overlay 13, OverlayTextManagerCoop 4, OverlayTextManagerNormal 3)
- Renamed YellowCombo → AllowELCombo for accurate naming (EL = Early/Late judgment)
- Settings.OnGUI split into 5 collapsible sections with sub-folders
Bug Fixes
- PlanetMoveToNextFloorPatch: include Jongyeol settings in registration condition
- JCombo patches: require ShowCombo guard
- Show(): call SetupLocationMain when Jongyeol is active regardless of standard settings
- RefreshVisibility: actively refresh BPM/Combo/Judgement/TimingScale/ProgressBar when toggled on
- Fix UpdateDeath division-by-zero when currentSeqID == StartTile
- Fix GUI.changed false-positive triggering unnecessary overlay updates
- Fix time label cache not refreshing when edited in Custom Labels panel
Full Changelog: v1.0.4...v1.0.5
v1.0.4
Refactors
- Replaced JOverlay inheritance with JongyeolModule composition (-405 lines)
- Deleted JOverlay.cs, JOverlayTextManagerNormal.cs, JOverlayTextManagerCoop.cs, IJOverlayTextManager.cs
- Created JongyeolModule.cs as composable module
- Overlay fields changed from protected to internal for module access
- PurePerfectColor changed to public static readonly
- Removed all unused virtual keywords (Overlay 13, OverlayTextManagerCoop 4, OverlayTextManagerNormal 3)
- Removed redundant Jbpm.BpmColorMax wrapper; callers use Main.Settings.BpmColorMax directly
- Renamed YellowCombo → AllowELCombo for accurate naming (EL = Early/Late judgment)
- Removed redundant UpdateState() call in RdcSetAutoPatch
v1.0.4.2-preview
- Fix Chinese translations
- Fix value update issues when toggling settings
Full Changelog: v1.0.4.1-preview...v1.0.4.2-preview
v1.0.4.1-preview
Same as v1.0.4, preview release for testing.
Full Changelog: v1.0.4...v1.0.4.1-preview
v1.0.3
See CHANGELOG.md for details.