8c08b94d2b
Packages are unique-per-type; duplicate pulls now auto-scrap into Cache (mirroring the distro dupe->Merges path) instead of a dead-end merges pool, and the pull reveal shows "-> N cache" for the dupe card. Save loading collapses any pre-existing duplicate package entries to the highest-level instance and grants Cache for the extras, logging the migration. Also adds a dedicated Packages tab in the Collection screen (master list with slot filter/sort + affordability hints, detail panel with upgrade/scrap actions) so the whole inventory can be managed from one place, sharing state with the existing per-distro Packages sub-tab. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MQmck8EqqWxSq5uVZ4E7yN
24 lines
1.4 KiB
XML
24 lines
1.4 KiB
XML
<ui:UXML xmlns:ui="UnityEngine.UIElements" xmlns:uie="UnityEditor.UIElements" editor-extension-mode="False">
|
|
<ui:VisualElement name="CollectionPanel" class="screen-panel hidden">
|
|
<ui:VisualElement class="screen-frame">
|
|
<ui:VisualElement class="screen-frame-header">
|
|
<ui:Label class="screen-frame-title" />
|
|
</ui:VisualElement>
|
|
<ui:VisualElement class="screen-frame-content">
|
|
<ui:VisualElement class="collection-actions">
|
|
<ui:Button name="CollectionUnitsButton" text="units" focusable="false" class="collection-tab" />
|
|
<ui:Button name="CollectionLanguagesButton" text="languages" focusable="false" class="collection-tab" />
|
|
<ui:Button name="CollectionPackagesButton" text="packages" focusable="false" class="collection-tab" />
|
|
</ui:VisualElement>
|
|
<ui:VisualElement name="CollectionContent" class="collection-shell">
|
|
<ui:ScrollView name="CollectionList" class="collection-list" />
|
|
<ui:ScrollView name="CollectionDetail" class="collection-detail" />
|
|
</ui:VisualElement>
|
|
</ui:VisualElement>
|
|
<ui:VisualElement class="screen-frame-footer">
|
|
<ui:Label class="screen-frame-hint" />
|
|
</ui:VisualElement>
|
|
</ui:VisualElement>
|
|
</ui:VisualElement>
|
|
</ui:UXML>
|