Skip to content

Personal Estate Labels #6

Description

@devoreofox

Problem/Opportunity Space

The teleport window's Residential Areas list shows your own estates, apartments, and shared estates only with the game's default place names (e.g. two "Empyreum" rows, one Apartment and one Estate Hall). With several residences it's easy to lose track of which row is which. Users want to rename their own entries to whatever they like ("Oreo's Apartment", "Home <3") so the list reads at a glance. This is the Personal Estate Labels stub, and the rename half (Feature A) of the teleport-label work; adding entries for plots you don't own is tracked separately as Feature B.

Acceptance Criteria

  • User can assign a custom label to any of their own residential teleport entries (apartment, private estate, shared estate)
  • Labels persist across sessions and game restarts, keyed to the specific residence
  • The renamed label appears in the teleport window in place of the default name, in every tab the entry shows in
  • Clearing a label restores the game's default name
  • No change to teleport behaviour or cost; display only

Suggested solution

Store a user label per residential entry, keyed off the stable fields of its TeleportInfo (HouseId + EstateType + SubIndex). When the Teleport addon renders, overwrite the name text node of any residential row that has a label. It's cosmetic text replacement with no server interaction, the same low-risk class as Hide Housing Arrows.

Suggested design

  • Config stores Dictionary<string, string> of key to label, key = $"{houseId.Id:X}:{(byte)estateType}:{subIndex}"
  • Read entries from AgentTeleport.AetheryteList (StdVector<TeleportInfo>), filtered to residential (EstateType != 0); resolve default names via the same path as SimpleTweaks' EstateListCommand
  • Hook AddonTeleport on PostRequestedUpdate/PostRefresh, walk the AtkComponentTreeList, and SetText the name node for labelled rows; re-apply every refresh since the tree virtualizes on scroll
  • Config UI (Personal Estate Labels tweak): list the user's residential entries with their default name and an input field for the custom label
  • Capture step first: confirm the mapping between a rendered tree row and its TeleportInfo before wiring the overwrite

Testing Considerations

Happy path

  • A labelled entry shows the custom name in the teleport window
  • Label survives addon refresh, tab switches, scrolling, and a game restart
  • Label shows correctly in every tab the entry appears in (All plus its region tab)
  • Clearing a label restores the default name

Sad path

  • Two same-district entries (e.g. Empyreum apartment vs estate hall) get distinct keys and don't share a label
  • Rows are matched by data key, not by displayed text, so localization and duplicate names don't cross-apply labels
  • Overwriting the name node never bleeds into non-residential rows or corrupts the list on repopulate
  • An entry that no longer exists (residence sold/unregistered) leaves a harmless orphan label, not a crash

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

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions