6fret#1470
Open
theli-ua wants to merge 71 commits into
Open
Conversation
Add SixFretGuitar property reusing FiveFretGuitarPreset type. Register in serialization and copy methods. Co-authored-by: opencode <opencode@local>
Extract hardcoded 5-fret patterns to virtual methods: GetFretActionMax, GetFretFromAction, GetFretIndex, GetDefaultHighwayOrdering. Change LANE_COUNT to virtual LaneCount property. Co-authored-by: opencode <opencode@local>
Override LaneCount=6, highway ordering [0,3,1,4,2,5], fret mappings, engine creation (YargSixFretGuitarEngine), and initialization to use SixFretGuitar presets. Skip range shift setup for 6-fret. Co-authored-by: opencode <opencode@local>
…ment Override UpdateColor() to use Player.ColorProfile.SixFretGuitar for color retrieval. All other functionality inherited from base class. Co-authored-by: opencode <opencode@local>
…lay scene Add _sixFretNotes and _sixFretFret to ThemeComponent with switch cases for VisualStyle.SixFretGuitar. Create SixFretGuitarVisual.prefab based on FiveFretGuitarVisual with FretCount: 6 and disabled range/shift indicators. Wire _sixFretGuitarPrefab in Gameplay.unity GameManager. Co-authored-by: opencode <opencode@local>
…heritance SixFretGuitarPlayer: remove all SixFretRangeShift references (range shift is irrelevant for 6-fret), clean up unused fields and methods. SixFretGuitarNoteElement: inherit directly from NoteElement instead of sealed FiveFretGuitarNoteElement, use SixFretGuitarFret for fret mapping. Co-authored-by: opencode <opencode@local>
Co-authored-by: opencode <opencode@local>
Co-authored-by: opencode <opencode@local>
Range shift is a 5-lane-specific mechanic. Remove RANGE_DISABLE toggle from GameMode.SixFretGuitar's PossibleProfileSettings. Co-authored-by: opencode <opencode@local>
Update Enum.Instrument localization strings so 6-fret instruments display with (6-Fret) suffix, matching the pattern used for SortAttribute names. Co-authored-by: opencode <opencode@local>
Add ToResourceName/FromResourceName mappings for SixFretGuitar, SixFretBass, SixFretRhythm, SixFretCoopGuitar (guitar6, bass6, rhythm6, coop6). Expand InstrumentIcons.png and NoInstrumentIcons.png sprite sheets from 4x4 to 5x4 grid with 6-fret icons featuring a '6' badge in the corner. Co-authored-by: opencode <opencode@local>
Ring [7] now shows SixFretGuitar/Bass/Rhythm/CoopGuitar icons with fallback priority, matching the pattern used for ProGuitar/Coop and ProBass/Rhythm rings. Ring is hidden if no 6-fret instruments exist. Co-authored-by: opencode <opencode@local>
Add new column at x=2048 with guitar6, bass6, rhythm6, coop6 icons. All existing icon coordinates remain unchanged. Uses correct source coordinates from Unity meta file (guitar, bass, rhythm, guitarCoop). Co-authored-by: opencode <opencode@local>
guitar6 at (2048,1536), bass6 at (2048,1024), rhythm6 at (2048,0), coop6 at (2048,512) - all coordinates are now unique. Co-authored-by: opencode <opencode@local>
Unity meta files use bottom-up Y (y=0 = bottom edge), PIL uses top-down Y (y=0 = top edge). Conversion: PIL_crop_y = 1536 - Unity_y. guitar6 at Unity(2048,1536)->PIL(2048,0), bass6 at Unity(2048,1024) ->PIL(2048,512), rhythm6 at Unity(2048,0)->PIL(2048,1536), coop6 at Unity(2048,512)->PIL(2048,1024). Co-authored-by: opencode <opencode@local>
Instead of hiding ring 7 entirely when no 6-fret tracks are available, fall back to showing elite drums icon as a placeholder. Co-authored-by: opencode <opencode@local>
- Fix SixFretGuitarVisual.prefab: correct objectReference format
({0} -> {fileID: 0}) and swap FiveFretGuitarPlayer component for
SixFretGuitarPlayer
- Fix Gameplay.unity: replace fake GUID with actual SixFretGuitarVisual
prefab GUID (93bb65c0743846fb28f6ecbb05e1e37b)
- Fix GameMode.SixFretGuitar.ToResourceName() to return "guitar6"
instead of "guitar" (fixes wrong instrument icon in difficulty
selection header)
- Add SixFretGuitarPlayer case to GameManager.Debug.cs player type
switch
- Add 6-fret instruments to GuitarScoreCard.cs icon switch
- Add SixFretGuitar color profile preview mapping to
PresetSubTab.Generic.cs
Co-Authored-By: pi-coding-agent <pi@coding-agent>
All three themes had _sixFretNotes and _sixFretFret unassigned, causing "Theme does not support visual style SixFretGuitar" crash. Point both to 5-fret objects per 6-fret inheritance design. Co-Authored-By: pi-coding-agent <pi-coding-agent>
SixFretGuitarVisual pool pointed to FiveFretGuitarNote prefab, causing InvalidCastException when casting to SixFretGuitarNoteElement. Created SixFretGuitarNote prefab and updated all 3 pool refs. Co-Authored-By: pi-coding-agent <pi-coding-agent> Model: Qwen3.6-27B
SixFretGuitar mode was missing from switch, leaving card null and causing NRE on card.SetCardContents() after song ends.
SixFretGuitar mode skipped modifier icons on score card. Uses enginePreset.SixFretGuitar (FiveFretGuitarPreset type).
SubSection dropdown and 6 color field names were absent, leaving raw field names in the color profile settings UI.
Bindings.SixFret.Black1/White1 etc. had no localization entry, so binding UI showed raw keys. Co-Authored-By: pi-coding-agent <pi-coding-agent> Model: Qwen3.6-27B
Add profile setting SixFretSplitLanes (default false) for combined lane display. Solo notes in a combined pair render wider and centered; paired notes stay normal. - Bump PROFILE_VERSION to 8, serialize/deserialize SixFretSplitLanes - Add SIX_FRET_SPLIT_LANES string and PossibleProfileSettings entry - SixFretGuitarPlayer: pair detection via chord, IsPaired flag, SetCombinedSpan - SixFretGuitarNoteElement: combined center X, 2x scale, sustain width/offset - LaneElement: SetCombinedSpan, doubled X scale in RenderScale - SustainLine: SetWidthMultiplier with reset on Initialize - ProfileSidebar: toggle wired to profile.SixFretSplitLanes Co-Authored-By: pi-coding-agent <pi-coding-agent> Model: Qwen3.6-27B
SixFretGuitarPlayer copy-pasted ~90 lines of CreateEngine() from base, fragile to any base change. Extract 3 protected virtual hooks so derived class overrides only the varying points: GetBassInstrument() — instrument to check for bass mode GetEnginePreset() — preset to pass into engine factory BuildEngine() — concrete engine constructor Also: - make BassStarMultiplierThresholds protected for reuse - make OnSustainStart/End protected virtual for override - deduplicate ModifierIcon guitar cases (switch expression) - fix Player.Player.Profile typo in SixFretSpawnedNote/Lane - fix grammar in SixFretGuitarNoteElement comment - normalize ProfileSidebar line endings (CRLF -> LF) Co-Authored-By: pi-coding-agent <pi-coding-agent> Model: Qwen3.6-27B
Contributor
Author
output.webm |
Contributor
|
Seems promising. Obviously there's some visual stuff to work out, but you definitely seem like you're on the right track! |
Co-Authored-By: pi-coding-agent <pi-coding-agent> Model: Qwen3.6-27B
Co-Authored-By: pi-coding-agent <pi-coding-agent> Model: tencent/hy3-preview
- Add SixFretUp/Down/Barre/HOPO/Tap enum values to ThemeNoteType - Add ColoredSecondaryMaterials field to ThemeNote for dual-color barre notes - Add SetSecondaryColor method to NoteGroup for secondary color application - Remove SixFretSplitLanes from YargProfile, bump PROFILE_VERSION to 9 Co-Authored-By: pi-coding-agent <pi-coding-agent> Model: tencent/hy3-preview
Co-Authored-By: pi-coding-agent <pi-coding-agent> Model: tencent/hy3-preview
- Refactor SixFretGuitarPlayer to 3 visual lanes, add IsUpFret/LaneIndex helpers - Remove SixFretSplitLanes references, update highway ordering for 3 lanes - Refactor SixFretGuitarNoteElement: add LaneNoteType, remove IsPaired/combined logic - Update theme model mapping for new 6-fret note types (Up/Down/Barre) - Remove combined span logic from LaneElement - Add SetSecondaryColor to SustainLine for barre sustain blending - Make FiveFretGuitarPlayer.UpdateFretArray protected virtual Co-Authored-By: pi-coding-agent <pi-coding-agent> Model: tencent/hy3-preview
- Add secondary half fields to ThemeFret (materials, pressed effect) - Extend Fret.cs with secondary half initialization, SetPressedSecondary, SetSecondaryColor - Update FretArray.cs with dual-half Initialize overload, map primary/secondary colors - Add SetPressedSecondary methods to FretArray - Override UpdateFretArray in SixFretGuitarPlayer to handle black/white half presses Co-Authored-By: pi-coding-agent <pi-coding-agent> Model: tencent/hy3-preview
- Remove SixFretSplitLanes toggle from ProfileSidebar - Remove SixFretSplitLanes from GameModeExtensions PossibleProfileSettings - Remove SIX_FRET_SPLIT_LANES constant from ProfileSettingStrings Co-Authored-By: pi-coding-agent <pi-coding-agent> Model: tencent/hy3-preview
- Update FakeTrackPlayer SixFretGuitar entry: 3 lanes, new ThemeNoteTypes (Up/Down/Barre) - Generate Up/Down/Barre notes with correct theme types for preview - Update FakeNote to map 6-fret frets to 3 lane indices for positioning Co-Authored-By: pi-coding-agent <pi-coding-agent> Model: tencent/hy3-preview
- Mark all Phase 1-5 tasks as completed in docs - Defer theme prefab creation and manual testing to subsequent tasks Co-Authored-By: pi-coding-agent <pi-coding-agent> Model: tencent/hy3-preview
- Fix _lanePositions field override error in SixFretGuitarPlayer - Make GetLaneIndex public for note element access - Fix System.Drawing.Color/UnityEngine.Color ambiguity in SixFretGuitarNoteElement - Add CurrentGameMode property to FakeTrackPlayer - Fix AllNotes.Any() to foreach loop in SixFretGuitarPlayer Co-Authored-By: pi-coding-agent <pi-coding-agent> Model: tencent/hy3-preview
- Restore file to working state from commit 1b0e6fd - Add CurrentGameMode property as class member (not inside dictionary) - Add 6-fret entry with 3 lanes, Up/Down/Barre note types Co-Authored-By: pi-coding-agent <pi-coding-agent> Model: tencent/hy3-preview
- Move _coloredSecondaryMaterialCache initialization into Initialize() - Remove ??= pattern, use direct assignment like existing caches - All LINQ (Select/ToArray) now only runs once in Initialize() Co-Authored-By: pi-coding-agent <pi-coding-agent> Model: tencent/hy3-preview
- Add _SecondaryColor and _SecondaryEmissionColor shader property IDs - SetSecondaryColor now uses dedicated properties so primary/secondary can coexist on same material without overwriting each other - Primary: material.color + _EmissionColor - Secondary: _SecondaryColor + _SecondaryEmissionColor Co-Authored-By: pi-coding-agent <pi-coding-agent> Model: tencent/hy3-preview
- Add _secondaryColor and _secondaryEmissionColor static readonly ints - WhitenFretColor: use _secondaryEmissionColor for secondary materials - RestoreFretColor: use _secondaryEmissionColor for secondary materials - SetSecondaryColor: use _secondaryColor and _secondaryEmissionColor Now both primary and secondary can coexist on same material. Co-Authored-By: pi-coding-agent <pi-coding-agent> Model: tencent/hy3-preview
Contributor
Author
|
This now has an original implementation of up/down/bar notes for the rectangular theme. no more 6-lane mode |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is a little awkward to play/read but seems to be fully functional.
I let bots play and I played it with an actual ghl live guitar.
Basic idea is to have six fret be based on five fret engine.
This does NOT have 6fret specific notes and simply reuses ones from regular notes.
There are more details in YARC-Official/YARG.Core#373
Opening before I put more time into it in case this is a wholly wrong direction.
if necessary I could hide behind experimental toggle.
Leaving in draft for now as I need to find time to review this myself before proper pr. But open to early feedback if someone decides to check it out as well.