Files
ClassicAssist.Avalonia/.qoder/repowiki/en/content/Game Automation Features/Dress Manager/Dress Manager Basics.md
T
Beyhan Oğur d5f52cc3d3 first commit
2026-09-03 04:45:36 +03:00

360 lines
17 KiB
Markdown

# Dress Manager Basics
<cite>
**Referenced Files in This Document**
- [DressAgentEntry.cs](file://ClassicAssist.Shared/Data/Dress/DressAgentEntry.cs)
- [DressAgentItem.cs](file://ClassicAssist.Shared/Data/Dress/DressAgentItem.cs)
- [DressAgentItemType.cs](file://ClassicAssist.Shared/Data/Dress/DressAgentItemType.cs)
- [DressManager.cs](file://ClassicAssist.Shared/Data/Dress/DressManager.cs)
- [DressTabViewModel.cs](file://ClassicAssist.Shared/UI/ViewModels/Agents/DressTabViewModel.cs)
- [DressTabControl.axaml](file://ClassicAssist.Avalonia/Views/Agents/DressTabControl.axaml)
- [DressTabControl.axaml.cs](file://ClassicAssist.Avalonia/Views/Agents/DressTabControl.axaml.cs)
</cite>
## Table of Contents
1. [Introduction](#introduction)
2. [Project Structure](#project-structure)
3. [Core Components](#core-components)
4. [Architecture Overview](#architecture-overview)
5. [Detailed Component Analysis](#detailed-component-analysis)
6. [Dependency Analysis](#dependency-analysis)
7. [Performance Considerations](#performance-considerations)
8. [Troubleshooting Guide](#troubleshooting-guide)
9. [Conclusion](#conclusion)
10. [Appendices](#appendices)
## Introduction
This document explains the basic Dress Manager functionality in ClassicAssist.Avalonia. It focuses on how to create your first dress set, understand the item slot system (Body, Head, Arms, Legs, etc.), and manage equipment configurations. You will learn about the core data structures (DressAgentEntry and DressAgentItem), how they relate to each other, and how the UI guides you through creating, editing, and saving dress sets. Step-by-step tutorials cover common scenarios such as setting up combat gear, casual outfits, and profession-specific equipment. Finally, a troubleshooting section addresses typical issues like missing items, invalid slots, and inventory requirements.
## Project Structure
The Dress Manager spans both shared logic and Avalonia UI layers:
- Shared domain models and manager live under ClassicAssist.Shared/Data/Dress.
- The Avalonia view model and views for the Dress tab are under ClassicAssist.Shared/UI/ViewModels/Agents and ClassicAssist.Avalonia/Views/Agents respectively.
```mermaid
graph TB
subgraph "Shared Domain"
DAE["DressAgentEntry"]
DAI["DressAgentItem"]
DAT["DressAgentItemType"]
DM["DressManager"]
end
subgraph "UI Layer (Avalonia)"
VM["DressTabViewModel"]
VAXAML["DressTabControl.axaml"]
VCX["DressTabControl.axaml.cs"]
end
DAE --> DAI
DAE --> DAT
DM --> DAE
VM --> DM
VCX --> VM
VAXAML --> VCX
```
**Diagram sources**
- [DressAgentEntry.cs](file://ClassicAssist.Shared/Data/Dress/DressAgentEntry.cs)
- [DressAgentItem.cs](file://ClassicAssist.Shared/Data/Dress/DressAgentItem.cs)
- [DressAgentItemType.cs](file://ClassicAssist.Shared/Data/Dress/DressAgentItemType.cs)
- [DressManager.cs](file://ClassicAssist.Shared/Data/Dress/DressManager.cs)
- [DressTabViewModel.cs](file://ClassicAssist.Shared/UI/ViewModels/Agents/DressTabViewModel.cs)
- [DressTabControl.axaml](file://ClassicAssist.Avalonia/Views/Agents/DressTabControl.axaml)
- [DressTabControl.axaml.cs](file://ClassicAssist.Avalonia/Views/Agents/DressTabControl.axaml.cs)
**Section sources**
- [DressAgentEntry.cs](file://ClassicAssist.Shared/Data/Dress/DressAgentEntry.cs)
- [DressAgentItem.cs](file://ClassicAssist.Shared/Data/Dress/DressAgentItem.cs)
- [DressAgentItemType.cs](file://ClassicAssist.Shared/Data/Dress/DressAgentItemType.cs)
- [DressManager.cs](file://ClassicAssist.Shared/Data/Dress/DressManager.cs)
- [DressTabViewModel.cs](file://ClassicAssist.Shared/UI/ViewModels/Agents/DressTabViewModel.cs)
- [DressTabControl.axaml](file://ClassicAssist.Avalonia/Views/Agents/DressTabControl.axaml)
- [DressTabControl.axaml.cs](file://ClassicAssist.Avalonia/Views/Agents/DressTabControl.axaml.cs)
## Core Components
- DressAgentEntry: Represents a single dress set configuration. It contains metadata (such as name) and a collection of DressAgentItem entries that define what to equip per slot.
- DressAgentItem: Describes one item assignment within a dress set, including target slot and item selection criteria.
- DressAgentItemType: Enumerates valid equipment slots (e.g., Body, Head, Arms, Legs).
- DressManager: Orchestrates loading, saving, and applying dress sets. It exposes operations to add/remove entries, persist configurations, and apply them to the game state.
- DressTabViewModel: Binds the UI to the underlying data and manager, exposing commands and collections for creating, editing, and saving dress sets.
- DressTabControl (axaml + code-behind): The Avalonia user interface where users select or create dress sets, choose slots, pick items, and save changes.
Key responsibilities:
- Data modeling: DressAgentEntry and DressAgentItem define the structure of saved dress sets.
- Slot system: DressAgentItemType defines allowed slots and constraints.
- Persistence and application: DressManager handles storage and execution of dress actions.
- User interaction: DressTabViewModel and DressTabControl provide the UI workflow.
**Section sources**
- [DressAgentEntry.cs](file://ClassicAssist.Shared/Data/Dress/DressAgentEntry.cs)
- [DressAgentItem.cs](file://ClassicAssist.Shared/Data/Dress/DressAgentItem.cs)
- [DressAgentItemType.cs](file://ClassicAssist.Shared/Data/Dress/DressAgentItemType.cs)
- [DressManager.cs](file://ClassicAssist.Shared/Data/Dress/DressManager.cs)
- [DressTabViewModel.cs](file://ClassicAssist.Shared/UI/ViewModels/Agents/DressTabViewModel.cs)
- [DressTabControl.axaml](file://ClassicAssist.Avalonia/Views/Agents/DressTabControl.axaml)
- [DressTabControl.axaml.cs](file://ClassicAssist.Avalonia/Views/Agents/DressTabControl.axaml.cs)
## Architecture Overview
The Dress Manager follows a layered architecture:
- UI layer (Avalonia): DressTabControl presents the interface; its code-behind wires events to the view model.
- View Model layer: DressTabViewModel coordinates user actions, updates collections, and delegates to the manager.
- Domain layer: DressAgentEntry, DressAgentItem, and DressAgentItemType define the data model and rules.
- Service layer: DressManager provides persistence and application logic.
```mermaid
sequenceDiagram
participant U as "User"
participant V as "DressTabControl.axaml.cs"
participant VM as "DressTabViewModel"
participant M as "DressManager"
participant E as "DressAgentEntry"
participant I as "DressAgentItem"
U->>V : Open Dress Tab
V->>VM : Initialize bindings
U->>VM : Create new dress set
VM->>M : Add new entry
M-->>VM : New DressAgentEntry
U->>VM : Select slot and item
VM->>I : Configure item for slot
VM->>E : Add item to entry
U->>VM : Save dress set
VM->>M : Persist entry
M-->>VM : Success
U->>VM : Apply dress set
VM->>M : Apply entry
M-->>U : Equip items
```
**Diagram sources**
- [DressTabControl.axaml.cs](file://ClassicAssist.Avalonia/Views/Agents/DressTabControl.axaml.cs)
- [DressTabViewModel.cs](file://ClassicAssist.Shared/UI/ViewModels/Agents/DressTabViewModel.cs)
- [DressManager.cs](file://ClassicAssist.Shared/Data/Dress/DressManager.cs)
- [DressAgentEntry.cs](file://ClassicAssist.Shared/Data/Dress/DressAgentEntry.cs)
- [DressAgentItem.cs](file://ClassicAssist.Shared/Data/Dress/DressAgentItem.cs)
## Detailed Component Analysis
### Data Model: DressAgentEntry and DressAgentItem
- DressAgentEntry holds a list of DressAgentItem objects and identifies the dress set.
- DressAgentItem specifies which slot to fill and how to identify the desired item.
- DressAgentItemType enumerates all supported slots and constrains valid assignments.
```mermaid
classDiagram
class DressAgentEntry {
+Name
+Items
+AddItem(item)
+RemoveItem(index)
+Clear()
}
class DressAgentItem {
+Slot
+Criteria
+IsValid()
}
class DressAgentItemType {
<<enumeration>>
+Body
+Head
+Arms
+Legs
+...
}
DressAgentEntry --> DressAgentItem : "contains many"
DressAgentItem --> DressAgentItemType : "uses"
```
**Diagram sources**
- [DressAgentEntry.cs](file://ClassicAssist.Shared/Data/Dress/DressAgentEntry.cs)
- [DressAgentItem.cs](file://ClassicAssist.Shared/Data/Dress/DressAgentItem.cs)
- [DressAgentItemType.cs](file://ClassicAssist.Shared/Data/Dress/DressAgentItemType.cs)
**Section sources**
- [DressAgentEntry.cs](file://ClassicAssist.Shared/Data/Dress/DressAgentEntry.cs)
- [DressAgentItem.cs](file://ClassicAssist.Shared/Data/Dress/DressAgentItem.cs)
- [DressAgentItemType.cs](file://ClassicAssist.Shared/Data/Dress/DressAgentItemType.cs)
### Manager: DressManager
DressManager centralizes:
- Loading existing dress sets from storage.
- Saving updated dress sets.
- Applying a selected dress set by equipping items according to their slots.
- Validating entries before application.
```mermaid
flowchart TD
Start(["Apply Dress Set"]) --> LoadEntry["Load DressAgentEntry"]
LoadEntry --> ValidateSlots{"All slots valid?"}
ValidateSlots --> |No| Error["Return validation error"]
ValidateSlots --> |Yes| Iterate["Iterate DressAgentItem list"]
Iterate --> CheckInventory["Check item availability"]
CheckInventory --> Found{"Item found?"}
Found --> |No| Missing["Record missing item"]
Found --> |Yes| Equip["Equip item to slot"]
Equip --> Next{"More items?"}
Next --> |Yes| Iterate
Next --> |No| Done(["Complete"])
Missing --> Next
```
**Diagram sources**
- [DressManager.cs](file://ClassicAssist.Shared/Data/Dress/DressManager.cs)
- [DressAgentEntry.cs](file://ClassicAssist.Shared/Data/Dress/DressAgentEntry.cs)
- [DressAgentItem.cs](file://ClassicAssist.Shared/Data/Dress/DressAgentItem.cs)
**Section sources**
- [DressManager.cs](file://ClassicAssist.Shared/Data/Dress/DressManager.cs)
### UI: DressTabControl and DressTabViewModel
- DressTabControl.axaml defines the layout and controls for selecting dress sets, managing slots, and adding items.
- DressTabControl.axaml.cs binds UI events to the view model.
- DressTabViewModel exposes properties and commands for:
- Creating new dress sets.
- Adding/removing items to/from slots.
- Saving and applying configurations.
- Handling validation feedback.
```mermaid
sequenceDiagram
participant U as "User"
participant AX as "DressTabControl.axaml"
participant CS as "DressTabControl.axaml.cs"
participant VM as "DressTabViewModel"
participant M as "DressManager"
U->>AX : Click "New Dress Set"
AX->>CS : Event handler
CS->>VM : Command_NewSet()
VM->>M : Create new entry
M-->>VM : Entry reference
U->>AX : Choose slot and item
AX->>CS : Selection changed
CS->>VM : AddItem(slot, criteria)
VM->>M : Save current entry
M-->>VM : Persisted
U->>AX : Click "Apply"
AX->>CS : Apply command
CS->>VM : ApplySelectedEntry()
VM->>M : Apply(entry)
M-->>U : Items equipped
```
**Diagram sources**
- [DressTabControl.axaml](file://ClassicAssist.Avalonia/Views/Agents/DressTabControl.axaml)
- [DressTabControl.axaml.cs](file://ClassicAssist.Avalonia/Views/Agents/DressTabControl.axaml.cs)
- [DressTabViewModel.cs](file://ClassicAssist.Shared/UI/ViewModels/Agents/DressTabViewModel.cs)
- [DressManager.cs](file://ClassicAssist.Shared/Data/Dress/DressManager.cs)
**Section sources**
- [DressTabControl.axaml](file://ClassicAssist.Avalonia/Views/Agents/DressTabControl.axaml)
- [DressTabControl.axaml.cs](file://ClassicAssist.Avalonia/Views/Agents/DressTabControl.axaml.cs)
- [DressTabViewModel.cs](file://ClassicAssist.Shared/UI/ViewModels/Agents/DressTabViewModel.cs)
## Dependency Analysis
The following diagram shows key dependencies between components involved in the Dress Manager:
```mermaid
graph LR
VM["DressTabViewModel"] --> DM["DressManager"]
DM --> DAE["DressAgentEntry"]
DM --> DAI["DressAgentItem"]
DAE --> DAI
DAI --> DAT["DressAgentItemType"]
VCX["DressTabControl.axaml.cs"] --> VM
VAX["DressTabControl.axaml"] --> VCX
```
**Diagram sources**
- [DressTabViewModel.cs](file://ClassicAssist.Shared/UI/ViewModels/Agents/DressTabViewModel.cs)
- [DressManager.cs](file://ClassicAssist.Shared/Data/Dress/DressManager.cs)
- [DressAgentEntry.cs](file://ClassicAssist.Shared/Data/Dress/DressAgentEntry.cs)
- [DressAgentItem.cs](file://ClassicAssist.Shared/Data/Dress/DressAgentItem.cs)
- [DressAgentItemType.cs](file://ClassicAssist.Shared/Data/Dress/DressAgentItemType.cs)
- [DressTabControl.axaml.cs](file://ClassicAssist.Avalonia/Views/Agents/DressTabControl.axaml.cs)
- [DressTabControl.axaml](file://ClassicAssist.Avalonia/Views/Agents/DressTabControl.axaml)
**Section sources**
- [DressTabViewModel.cs](file://ClassicAssist.Shared/UI/ViewModels/Agents/DressTabViewModel.cs)
- [DressManager.cs](file://ClassicAssist.Shared/Data/Dress/DressManager.cs)
- [DressAgentEntry.cs](file://ClassicAssist.Shared/Data/Dress/DressAgentEntry.cs)
- [DressAgentItem.cs](file://ClassicAssist.Shared/Data/Dress/DressAgentItem.cs)
- [DressAgentItemType.cs](file://ClassicAssist.Shared/Data/Dress/DressAgentItemType.cs)
- [DressTabControl.axaml.cs](file://ClassicAssist.Avalonia/Views/Agents/DressTabControl.axaml.cs)
- [DressTabControl.axaml](file://ClassicAssist.Avalonia/Views/Agents/DressTabControl.axaml)
## Performance Considerations
- Keep dress sets lean: Only include necessary slots to minimize application time.
- Prefer specific item criteria: Narrowing down item selection reduces search overhead during application.
- Batch operations: When building complex outfits, add multiple items before applying to reduce repeated saves and checks.
- Avoid frequent saves: Group edits and save once after completing a dress set.
[No sources needed since this section provides general guidance]
## Troubleshooting Guide
Common issues and resolutions:
- Missing items: Ensure required items exist in your backpack or on your character before applying. If an item is not found, the manager will skip it or report an error depending on implementation.
- Invalid slots: Verify that the chosen item type matches the intended slot (e.g., do not assign a shield to a head slot). Use DressAgentItemType to constrain valid assignments.
- Inventory requirements: Some items may require being held or visible in inventory. Confirm the item is accessible when applying.
- Conflicting slots: Certain slots cannot be occupied simultaneously. Remove conflicting items before applying a new set.
- Persistence problems: If changes do not persist, ensure you clicked Save and that the file path has write permissions.
**Section sources**
- [DressManager.cs](file://ClassicAssist.Shared/Data/Dress/DressManager.cs)
- [DressAgentItemType.cs](file://ClassicAssist.Shared/Data/Dress/DressAgentItemType.cs)
## Conclusion
The Dress Manager in ClassicAssist.Avalonia provides a structured way to organize and automate equipment setups. By understanding DressAgentEntry, DressAgentItem, and DressAgentItemType, and using the UI provided by DressTabControl and DressTabViewModel, you can efficiently create, edit, and apply dress sets for various scenarios. Follow the step-by-step tutorials below to get started quickly and troubleshoot common issues effectively.
[No sources needed since this section summarizes without analyzing specific files]
## Appendices
### Tutorial: Create Your First Dress Set
- Open the Dress tab in the main window.
- Click “New Dress Set” to create a fresh entry.
- Name your dress set (e.g., “Combat Gear”).
- For each slot (Body, Head, Arms, Legs, etc.):
- Select the slot from the dropdown.
- Choose the desired item using the item picker.
- Confirm the item meets any special requirements (hue, properties).
- Click “Save” to persist the dress set.
- Click “Apply” to equip the items immediately.
**Section sources**
- [DressTabControl.axaml](file://ClassicAssist.Avalonia/Views/Agents/DressTabControl.axaml)
- [DressTabControl.axaml.cs](file://ClassicAssist.Avalonia/Views/Agents/DressTabControl.axaml.cs)
- [DressTabViewModel.cs](file://ClassicAssist.Shared/UI/ViewModels/Agents/DressTabViewModel.cs)
- [DressManager.cs](file://ClassicAssist.Shared/Data/Dress/DressManager.cs)
### Tutorial: Set Up Combat Gear
- Create a dress set named “Combat Gear”.
- Assign weapon to the appropriate hand slot.
- Assign armor pieces to Body, Arms, and Legs.
- Add helmet and gloves if available.
- Save and test by applying while in safe zones.
**Section sources**
- [DressAgentItemType.cs](file://ClassicAssist.Shared/Data/Dress/DressAgentItemType.cs)
- [DressAgentItem.cs](file://ClassicAssist.Shared/Data/Dress/DressAgentItem.cs)
- [DressManager.cs](file://ClassicAssist.Shared/Data/Dress/DressManager.cs)
### Tutorial: Casual Outfit
- Create a dress set named “Casual”.
- Choose non-combat clothing for Body, Head, and Legs.
- Optionally exclude weapons and shields.
- Save and apply for everyday use.
**Section sources**
- [DressAgentEntry.cs](file://ClassicAssist.Shared/Data/Dress/DressAgentEntry.cs)
- [DressAgentItem.cs](file://ClassicAssist.Shared/Data/Dress/DressAgentItem.cs)
- [DressManager.cs](file://ClassicAssist.Shared/Data/Dress/DressManager.cs)
### Tutorial: Profession-Specific Equipment
- Identify profession needs (e.g., tinkerer tools, mage focus).
- Create a dress set tailored to those items.
- Assign relevant tools or accessories to appropriate slots.
- Save and apply when performing profession tasks.
**Section sources**
- [DressAgentItemType.cs](file://ClassicAssist.Shared/Data/Dress/DressAgentItemType.cs)
- [DressAgentItem.cs](file://ClassicAssist.Shared/Data/Dress/DressAgentItem.cs)
- [DressManager.cs](file://ClassicAssist.Shared/Data/Dress/DressManager.cs)