Skip to content

Enchanting table UI: vanilla fonts, controller glyphs, storage counts and rarity shimmer - #36

Merged
MidnightsFX merged 26 commits into
MidnightsFX:mainfrom
ksavila:ksavila/enchant-table-ui
Oct 2, 2026
Merged

MidnightsFX merged 26 commits into
MidnightsFX:mainfrom
ksavila:ksavila/enchant-table-ui

Conversation

@ksavila

@ksavila ksavila commented Sep 30, 2026 •

Copy link
Copy Markdown

Moves the whole enchanting table UI off legacy UnityEngine.UI.Text and the hand-drawn gamepad PNGs, onto TMP with vanilla fonts and the game's own controller glyphs. This started as the Enchant tab only. It now covers every panel, plus a few things that only became possible once the table was fully TMP.

Contains #31. The rarity flare branch is merged in so its shimmer can run inside the table (see "Rarity shimmer in the table" below). #31's description still covers how the star tiers are derived; it can be closed if this goes in.

Unity project fix (first commit, stands alone)

  • The CopyAssembliesToUnity target now refreshes the game dlls from the Steam install and also copies MagicaClothV2.dll plus its Unity.Collections/Burst/Mathematics companions. Without that closure Mono cannot load ItemDrop.ItemData.SharedData (SharedData -> Attack -> VisEquipment -> MagicaCloth colliders) and Unity silently drops every item's shared data and icons from the bundle. This covers the MagicaCloth reference without the Asset Store package; if that package is added later for cloth authoring, drop those six copy lines to avoid duplicate assemblies.
  • All prefabs now bind to EpicLoot.dll instead of the retired EpicLoot-UnityLib.dll (same class file IDs, only the guid changed). EpicLoot.dll.meta is force-added so the guid is stable across machines.
  • If you rebuild the bundle, run -t:CopyAssembliesToUnity first.

Runtime building blocks

  • GamepadGlyph: a TMP label that renders one ZInput button via GetBoundKeyString, so it follows the player's bindings and pad type (Xbox/PlayStation/Switch glyph sets) and refreshes on layout change.
  • VanillaFont: prefab-authored font role applied through MagicFontManager on enable.
  • TemperPanel uses both instead of its private copies.

TMP conversion

  • Every panel is TMP end to end: Enchant, Augment, Rune, Sacrifice, Convert, Disenchant and Upgrade, along with the shared list elements, the feature status rows, the input fields and the dropdowns.
  • Every gamepad hint icon, including the tab bar's trigger hints, is a GamepadGlyph instance. The fifteen hint PNGs are deleted.
  • With nothing legacy left in the table, the dual Text/TMP_Text paths in the panel base and SelectableTextColor are gone, along with the commented-out Auga fixups for the mode and rarity buttons.
  • The Enchant header arrow changed to U+2192 because the vanilla fonts do not carry U+2794.
  • Line spacing on the enchant info text is tightened back towards the legacy look (the side effect noted in the comment below).

Gamepad fixes

  • The Y hint beside each selector column (Enchant rarities; Sacrifice, Rune and Convert modes) is parented to the column, which now sizes to its content, so the hint follows the last button. This replaces the runtime resize the Enchant tab did when it cloned extra rarity toggles.
  • The right trigger hint on the tab bar follows the last active tab.
  • On the Upgrade tab the bumpers now move focus between the feature list and the cost list.

Storage counts

  • New client config Show Storage Counts (Interface section, default on). Each material cost shows a green +N for how many are available from storage outside the inventory, as reported by API.CountProviderItems (a craft-from-containers mod, for example). The hover tooltip carries the full "N in storage" line.

Rarity shimmer in the table

  • Mark rare magic effects in the UI, derived from SelectionWeight #31 left the table with stars but no shimmer, because legacy Text prints <link> verbatim. Now the shimmer runs wherever the table shows stars: the Enchant and Augment available-effects lists, the Augment and Rune effect selector rows, the runestone rows that show their effect as the name, and the augment choice dialog (description and buttons).
  • The augment choice buttons were the last legacy labels in the table (Jotunn builds them in code); their label is swapped for TMP at creation.
  • Every rare line now sweeps on one shared cycle, so a list of them reads as a single pass instead of each line glinting on its own schedule. This applies to the item tooltip as well.
  • The star glyph is picked against both vanilla Averia TMP fonts, since the table and the tooltip between them use both, rather than against the tooltip font plus the legacy panel font. It resolves on first use, so the first tooltip of a session no longer shows the fallback diamond.
  • Effect Rarity Flare config description updated to mention the table.

Editor tooling (Assets/Scripts/Editor)

  • LegacyTextToTmp converts a prefab's Text, InputField and Dropdown components. PrefabYaml recovers field references and nested-prefab label overrides from the prefab YAML, since Unity nulls references whose field type changed.
  • GamepadGlyphTools swaps an icon for a glyph instance.
  • PanelTmpMigration is the record of each conversion, one menu item per step under Mod/Migrations.

The bundle is rebuilt once, in the last commit, so the prefab commits before it do not carry a matching bundle on their own.

Tested in game: enchant flow, rarity toggles, fonts, controller hints and glyph sizing; rarity shimmer in the table with the lines sweeping in step.

@ksavila ksavila changed the title Enchant tab on TMP with vanilla fonts and controller glyphs Enchanting table on TMP: vanilla fonts, controller glyphs, storage counts and rarity shimmer Oct 1, 2026
@ksavila ksavila changed the title Enchanting table on TMP: vanilla fonts, controller glyphs, storage counts and rarity shimmer Enchanting table UI: vanilla fonts, controller glyphs, storage counts and rarity shimmer Oct 1, 2026
@ksavila
ksavila force-pushed the ksavila/enchant-table-ui branch from 2a82c57 to 09082c4 Compare October 1, 2026 23:47
@MidnightsFX
MidnightsFX merged commit 74f7708 into MidnightsFX:main Oct 2, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants