Skip to content

INSCRIBED (ratingClassAlias) data layer and app-wide display follow-ups #61

Description

@283375

Context

Upstream songlist introduced ratingClassAlias: number on difficulty entries. So far it only appears as ratingClass: 3 + ratingClassAlias: 1.

UI-side support already landed on branch refactor/rating-class-selector:

  • ArcaeaRatingClassDisplay (core/constants): maps (ratingClass, alias) to a display form; unknown (class, alias) combos fall back to the default form, so future upstream additions won't break anything.
  • Theme: inscribed color.
  • ArcaeaRatingClassSelector renders the BYD slot as INSCRIBED via RatingClassSelectorItem.display.

Tasks

1. DB: store rating_class_alias on difficulties

  • Add a nullable rating_class_alias Int column to Difficulty, with a Room migration (ALTER TABLE ... ADD COLUMN). Old imports default to null (= no alias).
  • If the Chart DatabaseView is still around by then, add d.rating_class_alias to its SELECT too; otherwise skip it (view is slated for deprecation).
  • Files: core/src/main/kotlin/xyz/sevive/arcaeaoffline/core/database/entities/Difficulty.kt, core/src/main/kotlin/xyz/sevive/arcaeaoffline/core/database/ArcaeaOfflineDatabase.kt
  • Search: @Entity(tableName = "difficulties"), Migration(

2. Parser: read ratingClassAlias from songlist

  • Add val ratingClassAlias: Int? = null to the difficulty item and pass it through when building Difficulty.
  • Files: core/src/main/kotlin/xyz/sevive/arcaeaoffline/core/database/externals/ArcaeaListDefinitions.kt (ArcaeaSonglistDifficultyItem), core/src/main/kotlin/xyz/sevive/arcaeaoffline/core/database/externals/importers/ArcaeaSonglistImporter.kt
  • Search: class ArcaeaSonglistDifficultyItem, fun difficulties()

3. Selector: move item extension from Chart to Difficulty

  • The transitional List<Chart>.toRatingClassSelectorItems() should become a List<Difficulty> version, feeding ratingClassAlias into ArcaeaRatingClassDisplay.of.
  • Files: app/src/main/java/xyz/sevive/arcaeaoffline/ui/components/ArcaeaRatingClassSelector.kt (extension + transitional comment), call sites ArcaeaChartSelector.kt and UtilitiesCalculatorScreen.kt
  • Search: toRatingClassSelectorItems

4. App-wide INSCRIBED-aware labels & colors

Currently INSCRIBED only affects the selector; everywhere else an INSCRIBED chart still shows "BEYOND":

  • ArcaeaFormatters.ratingText builds e.g. "BEYOND 12.0" from ratingClass.toString() and is used by chart/play-result cards, B30/R30 lists, chart recommend, potential card, etc. Add an overload taking ArcaeaRatingClassDisplay (or an alias) and update callers.
  • ArcaeaChartCard colors the difficulty label via ratingClassColor(ratingClass); switch to ratingClassColor(display).
  • Search: ratingText(, ratingClass.toString(), ratingClassColor(ratingClass)

Notes

  • DatabaseDeduplicatorViewModel uses ratingClass.toString() as a dedup key only — no change needed.
  • The theme overhaul (seed-generated schemes via material-color-utilities, replacing the theme-builder exports in ui/theme/Colors.kt / ColorSchemes.kt) is future work and not part of this issue.

This issue was filed by a coding agent (pi) at the owner's request, summarizing the discussion on branch refactor/rating-class-selector.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementImprovements on existing features

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions