Files
commander-ai-lab/unity-client/Assets/UI/CoachPanel.uxml
KoalaTrapLord 18beb9192e feat(unity-ui): add UXML+USS layouts for all 5 GUI screens
- CollectionTracker.uxml  — card grid, filter sidebar, detail panel
- CoachPanel.uxml         — chat bubbles, analytics, mana curve chart
- DeckGenerator.uxml      — 4-step wizard (commander → strategy → generate → result)
- SimulationPanel.uxml    — 4-player config, progress bar, results table
- TrainingPanel.uxml      — stats, start/stop, live charts, log, model history

- CommanderLabShared.uss  — dark MTG theme shared across all screens
- CollectionTracker.uss
- CoachPanel.uss
- DeckGenerator.uss
- SimulationPanel.uss
- TrainingPanel.uss
2026-03-19 03:55:13 -04:00

103 lines
4.3 KiB
Plaintext

<ui:UXML xmlns:ui="UnityEngine.UIElements"
xsi:noNamespaceSchemaLocation="../UIElementsSchema/UIElements.xsd"
editor-extension-mode="False">
<Style src="CommanderLabShared.uss" />
<Style src="CoachPanel.uss" />
<ui:VisualElement name="CoachRoot" class="lab-root">
<!-- ── Nav Bar ── -->
<ui:VisualElement name="NavBar" class="nav-bar">
<ui:Button name="BackButton" text="◀ Menu" class="btn" />
<ui:Label text="🧠 AI Coach" class="nav-title" />
<ui:Button name="ToggleViewButton" text="Analytics" class="btn" />
</ui:VisualElement>
<!-- ── Deck Selector Row ── -->
<ui:VisualElement name="DeckSelectorRow" class="deck-selector-row">
<ui:Label text="Deck:" class="label" />
<ui:DropdownField name="DeckDropdown" class="dropdown deck-dropdown"
choices="-- Select Deck --" index="0" />
<ui:Button name="RefreshDecksButton" text="⟳" class="btn btn-icon" />
<ui:DropdownField name="PreconDropdown" class="dropdown precon-dropdown"
choices="-- Compare to Precon --" index="0" />
<ui:Button name="ExportToSimButton" text="▶ Send to Sim" class="btn btn-primary" />
</ui:VisualElement>
<!-- ── Body: Chat + Analytics ── -->
<ui:VisualElement name="BodyRow" class="coach-body">
<!-- Chat Panel (fullscreen on mobile) -->
<ui:VisualElement name="ChatFullscreenPanel" class="chat-panel panel">
<ui:Label text="Chat" class="panel-header" />
<!-- Bubble scroll area -->
<ui:ScrollView name="ChatScrollView" class="scroll-view chat-scroll">
<!-- Runtime: userBubblePrefab / coachBubblePrefab spawned into ChatContent -->
<ui:VisualElement name="ChatContent" class="chat-content" />
</ui:ScrollView>
<!-- Typing indicator -->
<ui:Label name="TypingIndicator" text="Coach is thinking…" class="typing-indicator" />
<!-- Input row -->
<ui:VisualElement name="ChatInputRow" class="chat-input-row">
<ui:TextField name="ChatInput" placeholder-text="Ask the coach…" class="input-field chat-input" />
<ui:Button name="SendButton" text="Send" class="btn btn-primary" />
<ui:Button name="AskCoachButton" text="✦ Analyze Deck" class="btn" />
</ui:VisualElement>
</ui:VisualElement>
<!-- Analytics Panel (swipe panel on mobile) -->
<ui:VisualElement name="AnalyticsSwipePanel" class="analytics-panel panel">
<ui:Label text="Deck Analytics" class="panel-header" />
<!-- Stat row -->
<ui:VisualElement name="StatRow" class="stat-row">
<ui:VisualElement class="stat-chip">
<ui:Label name="AvgCmcText" text="Avg CMC: —" class="label-bold" />
</ui:VisualElement>
<ui:VisualElement class="stat-chip">
<ui:Label name="LandCountText" text="Lands: —" class="label-bold" />
</ui:VisualElement>
</ui:VisualElement>
<!-- Mana Curve chart area -->
<ui:Label text="Mana Curve" class="label" />
<!-- Runtime: RenderManaCurveChart fills this rect -->
<ui:VisualElement name="ManaCurveChartRect" class="chart-rect mana-chart" />
<ui:Label name="ManaCurveText" text="" class="label chart-sub" />
<ui:VisualElement class="divider" />
<!-- Color distribution -->
<ui:Label text="Color Distribution" class="label" />
<ui:Label name="ColorDistText" text="" class="label" />
<ui:VisualElement class="divider" />
<!-- Card types -->
<ui:Label text="Card Types" class="label" />
<ui:Label name="CardTypeText" text="" class="label" />
<ui:VisualElement class="divider" />
<!-- Precon compare panel -->
<ui:VisualElement name="PreconPanel" class="precon-panel">
<ui:Label text="Precon Comparison" class="panel-header" />
<ui:Label name="PreconCompareText" text="" class="label" />
<ui:Button name="PreconRefreshButton" text="Refresh Precon DB" class="btn" />
</ui:VisualElement>
</ui:VisualElement>
</ui:VisualElement>
<!-- ── Error Panel ── -->
<ui:VisualElement name="ErrorPanel" class="error-panel">
<ui:Label name="ErrorText" text="" class="error-text" />
</ui:VisualElement>
</ui:VisualElement>
</ui:UXML>