Skip to content

Advanced Inventory & Equipment System

Comprehensive data-driven inventory and equipment management for Unreal Engine with multiplayer support.

System Overview

The Mountea Advanced Inventory & Equipment System provides complete item management functionality including storage, equipment handling, UI components, and network replication. Built with modularity and extensibility in mind.

Core Systems

Inventory System

Complete item storage and management system with:

Equipment System

Advanced equipment management featuring:

User Interface

Complete widget framework with:

Configuration

System-wide settings and data:

Key Features

๐Ÿ“ฆ Inventory Management

  • Stackable items with quantity tracking
  • Durability system with degradation
  • Fast item search and filtering
  • Efficient network replication

โš”๏ธ Equipment System

  • RPG-style weapon switching
  • Two-handed vs dual-wield logic
  • Socket-based attachments
  • Gameplay tag filtering

๐ŸŽฎ User Interface

  • Grid-based inventory layouts
  • Drag & drop functionality
  • 3D item previews
  • Customizable themes

๐ŸŒ Multiplayer Ready

  • Delta compression replication
  • Authority validation
  • Client prediction support
  • Efficient bandwidth usage

Quick Start

  1. Setup: Configure system in Settings
  2. Items: Create templates using Item Templates
  3. UI: Implement widgets with User Interface
  4. Network: Enable Replication for multiplayer

Architecture

Mountea Inventory & Equipment System - Architecture Design

Table of Contents

  1. High-Level System Architecture
  2. Component Relationship Diagram
  3. Class Hierarchy
  4. Data Flow Diagrams
  5. Interface Definitions
  6. Core Struct/Class Definitions

1. High-Level System Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                         MOUNTEA INVENTORY & EQUIPMENT SYSTEM                โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                            CONFIGURATION LAYER                              โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  UMounteaAdvancedInventorySettings                                          โ”‚
โ”‚  โ”œโ”€ UMounteaAdvancedInventorySettingsConfig                                 โ”‚
โ”‚  โ”‚  โ”œโ”€ Inventory Types (Player, NPC, Storage, Merchant, Loot, Specialized)  โ”‚
โ”‚  โ”‚  โ”œโ”€ Item Rarities                                                        โ”‚
โ”‚  โ”‚  โ”œโ”€ Item Categories                                                      โ”‚
โ”‚  โ”‚  โ”œโ”€ UI Classes                                                           โ”‚
โ”‚  โ”‚  โ””โ”€ Notification Configs                                                 โ”‚
โ”‚  โ””โ”€ UMounteaAdvancedEquipmentSettingsConfig                                 โ”‚
โ”‚     โ”œโ”€ Equipment Slot Definitions                                           โ”‚
โ”‚     โ””โ”€ Attachment Rules                                                     โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                              DATA LAYER                                     โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  Templates (Data Assets):                                                   โ”‚
โ”‚  โ”œโ”€ UMounteaInventoryItemTemplate                                           โ”‚
โ”‚  โ”œโ”€ UMoneyItemTemplate : UMounteaInventoryItemTemplate                      โ”‚
โ”‚  โ”œโ”€ UCraftingRecipeTemplate : UMounteaInventoryItemTemplate                 โ”‚
โ”‚  โ””โ”€ UModifierTemplate : UMounteaInventoryItemTemplate                       โ”‚
โ”‚                                                                             โ”‚
โ”‚  Runtime Instances (Structs):                                               โ”‚
โ”‚  โ”œโ”€ FInventoryItem                                                          โ”‚
โ”‚  โ”œโ”€ FInventoryItemArray (FastArraySerializer)                               โ”‚
โ”‚  โ”œโ”€ FEquipmentSlot                                                          โ”‚
โ”‚  โ””โ”€ FEquipmentSlotArray (FastArraySerializer)                               โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                          CORE LOGIC LAYER                                   โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                                                                             โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                      โ”‚
โ”‚  โ”‚  INVENTORY SUBSYSTEM โ”‚     โ”‚  EQUIPMENT SUBSYSTEM โ”‚                      โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                      โ”‚
โ”‚           โ”‚                              โ”‚                                  โ”‚
โ”‚           โ”œโ”€ UInventoryManagerComponent  โ”œโ”€ UEquipmentManagerComponent      โ”‚
โ”‚           โ”‚  (Database)                  โ”‚  (Attachment Database)           โ”‚
โ”‚           โ”‚                              โ”‚                                  โ”‚
โ”‚           โ””โ”€ Operations:                 โ””โ”€ Operations:                     โ”‚
โ”‚              - Add/Remove Items             - Equip/Unequip                 โ”‚
โ”‚              - Modify Quantity              - Get Slots                     โ”‚
โ”‚              - Find/Get Items               - Validate Equipment            โ”‚
โ”‚              - Sort/Filter                  - Save/Load                     โ”‚
โ”‚              - Save/Load                                                    โ”‚
โ”‚                                                                             โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                      โ”‚
โ”‚  โ”‚   CRAFTING SUBSYSTEM โ”‚     โ”‚   RECIPE SUBSYSTEM   โ”‚                      โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                      โ”‚
โ”‚           โ”‚                              โ”‚                                  โ”‚
โ”‚           โ”œโ”€ UCraftingComponent          โ”œโ”€ URecipeKnowledgeComponent       โ”‚
โ”‚           โ”‚  (Recipe Execution)          โ”‚  (Recipe Storage)                โ”‚
โ”‚           โ”‚                              โ”‚                                  โ”‚
โ”‚           โ””โ”€ Operations:                 โ””โ”€ Operations:                     โ”‚
โ”‚              - Can Craft                    - Learn Recipe                  โ”‚
โ”‚              - Craft Item                   - Forget Recipe                 โ”‚
โ”‚              - Validate Ingredients         - Get Known Recipes             โ”‚
โ”‚              - Execute Recipe               - Is Recipe Known               โ”‚
โ”‚                                             - Save/Load                     โ”‚
โ”‚                                                                             โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                                                   โ”‚
โ”‚  โ”‚ NOTIFICATION SYSTEM  โ”‚                                                   โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                                                   โ”‚
โ”‚           โ”‚                                                                 โ”‚
โ”‚           โ””โ”€ UNotificationManagerComponent                                  โ”‚
โ”‚              (Event Processing)                                             โ”‚
โ”‚                                                                             โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                            INTERACTION LAYER                                โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                                                                             โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                      โ”‚
โ”‚  โ”‚   PICKUP/DROP SYSTEM โ”‚     โ”‚  LOOTING/VENDOR SYS  โ”‚                      โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                      โ”‚
โ”‚           โ”‚                              โ”‚                                  โ”‚
โ”‚           โ”œโ”€ IMounteaPickupInterface     โ”œโ”€ IMounteaLootableInterface       โ”‚
โ”‚           โ””โ”€ IMounteaDroppableInterface  โ””โ”€ IMounteaVendorInterface         โ”‚
โ”‚                                                                             โ”‚
โ”‚           Operations:                    Operations:                        โ”‚
โ”‚           - Pickup Item                  - Request Loot Access              โ”‚
โ”‚           - Drop Item                    - Transfer Items                   โ”‚
โ”‚           - Spawn Pickup Actor           - Buy/Sell                         โ”‚
โ”‚                                          - Calculate Price                  โ”‚
โ”‚                                                                             โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                          PRESENTATION LAYER (UI)                            โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                                                                             โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                      โ”‚
โ”‚  โ”‚   INVENTORY UI       โ”‚     โ”‚    EQUIPMENT UI      โ”‚                      โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                      โ”‚
โ”‚           โ”‚                              โ”‚                                  โ”‚
โ”‚           โ”œโ”€ UInventoryUIComponent       โ”œโ”€ UEquipmentUIComponent           โ”‚
โ”‚           โ”‚  (UI Bridge)                 โ”‚  (UI Bridge)                     โ”‚
โ”‚           โ”‚                              โ”‚                                  โ”‚
โ”‚           โ””โ”€ Widget Hierarchy:           โ””โ”€ Widget Hierarchy:               โ”‚
โ”‚              - Wrapper Widget               - Equipment Panel               โ”‚
โ”‚              - Inventory Widget             - Equipment Slots               โ”‚
โ”‚              - Item Grid                    - Quick Access Slots            โ”‚
โ”‚              - Item Slots                   - Slot Tooltips                 โ”‚
โ”‚              - Item Widgets                                                 โ”‚
โ”‚              - Categories                                                   โ”‚
โ”‚              - Tooltips                                                     โ”‚
โ”‚              - Action Menus                                                 โ”‚
โ”‚                                                                             โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                                                   โ”‚
โ”‚  โ”‚  NOTIFICATION UI     โ”‚                                                   โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                                                   โ”‚
โ”‚           โ”‚                                                                 โ”‚
โ”‚           โ””โ”€ Notification Widgets                                           โ”‚
โ”‚              - Container                                                    โ”‚
โ”‚              - Notification Items                                           โ”‚
โ”‚                                                                             โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                            REPLICATION LAYER                                โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  Server Authority:                                                          โ”‚
โ”‚  - All inventory operations                                                 โ”‚
โ”‚  - All equipment operations                                                 โ”‚
โ”‚  - Crafting execution                                                       โ”‚
โ”‚  - Item transfers                                                           โ”‚
โ”‚                                                                             โ”‚
โ”‚  Client Prediction:                                                         โ”‚
โ”‚  - Equipment visual attachment (with server confirmation)                   โ”‚
โ”‚  - UI updates (with rollback on server rejection)                           โ”‚
โ”‚                                                                             โ”‚
โ”‚  Replication Method:                                                        โ”‚
โ”‚  - FastArraySerializer for item arrays                                      โ”‚
โ”‚  - Delta replication for efficient bandwidth                                โ”‚
โ”‚  - OnRep functions for client notification                                  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

2. Component Relationship Diagram

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                              ACTOR (Player/NPC)                             โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                      โ”‚
                    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                    โ”‚                 โ”‚                 โ”‚
                    โ–ผ                 โ–ผ                 โ–ผ
    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
    โ”‚ UInventoryManager     โ”‚ โ”‚ UEquipment   โ”‚ โ”‚ URecipeKnowledge    โ”‚
    โ”‚ Component             โ”‚ โ”‚ Manager      โ”‚ โ”‚ Component           โ”‚
    โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€    โ”‚ โ”‚ Component    โ”‚ โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”‚
    โ”‚ Implements:           โ”‚ โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€   โ”‚ โ”‚ Stores:             โ”‚
    โ”‚ - IInventoryInterface โ”‚ โ”‚ Implements:  โ”‚ โ”‚ - Known Recipes     โ”‚
    โ”‚                       โ”‚ โ”‚ - IEquipment โ”‚ โ”‚ - Recipe States     โ”‚
    โ”‚ Contains:             โ”‚ โ”‚   Interface  โ”‚ โ”‚                     โ”‚
    โ”‚ - FInventoryItemArray โ”‚ โ”‚ - IAttachmentโ”‚ โ”‚ Operations:         โ”‚
    โ”‚                       โ”‚ โ”‚   Container  โ”‚ โ”‚ - LearnRecipe()     โ”‚
    โ”‚ References:           โ”‚ โ”‚              โ”‚ โ”‚ - ForgetRecipe()    โ”‚
    โ”‚ - EquipmentManager โ”€โ”€โ”€โ”ผโ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€>โ”‚ โ”‚ - IsKnown()         โ”‚
    โ”‚ - NotificationMgr     โ”‚ โ”‚              โ”‚ โ”‚ - GetKnownRecipes() โ”‚
    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ Contains:    โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                โ”‚             โ”‚ - FEquipment โ”‚
                โ”‚             โ”‚   SlotArray  โ”‚           โ”‚
                โ”‚             โ”‚ - Attachment โ”‚           โ”‚
                โ”‚             โ”‚   Slots      โ”‚           โ”‚
                โ”‚             โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜           โ”‚
                โ”‚                      โ”‚                 โ”‚
                โ”‚                      โ”‚                 โ”‚
                โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                           โ”‚
                           โ–ผ
              โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
              โ”‚ UCraftingComponent     โ”‚
              โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”‚
              โ”‚ Implements:            โ”‚
              โ”‚ - ICraftingInterface   โ”‚
              โ”‚                        โ”‚
              โ”‚ Requires:              โ”‚
              โ”‚ - InventoryManager     โ”‚
              โ”‚ - RecipeKnowledge      โ”‚
              โ”‚                        โ”‚
              โ”‚ Operations:            โ”‚
              โ”‚ - CanCraft()           โ”‚
              โ”‚ - CraftItem()          โ”‚
              โ”‚ - ValidateIngredients()โ”‚
              โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                            UI COMPONENTS LAYER                              โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”         โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
    โ”‚ UInventoryUIComponent โ”‚         โ”‚ UEquipmentUIComponent โ”‚
    โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”‚         โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”‚
    โ”‚ Implements:           โ”‚         โ”‚ Implements:           โ”‚
    โ”‚ - IInventoryUI        โ”‚         โ”‚ - IEquipmentUI        โ”‚
    โ”‚   Interface           โ”‚         โ”‚   Interface           โ”‚
    โ”‚                       โ”‚         โ”‚                       โ”‚
    โ”‚ References:           โ”‚         โ”‚ References:           โ”‚
    โ”‚ - InventoryManager โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€>โ”‚ - EquipmentManager โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”
    โ”‚ - InventoryWidget     โ”‚         โ”‚ - EquipmentWidget     โ”‚    โ”‚
    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ”‚
                โ”‚                                โ”‚                 โ”‚
                โ”‚                                โ”‚                 โ”‚
                โ–ผ                                โ–ผ                 โ”‚
    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”         โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”‚
    โ”‚ Inventory Widget Tree โ”‚         โ”‚ Equipment Widget Treeโ”‚     โ”‚
    โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”‚         โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”‚     โ”‚
    โ”‚ - WrapperWidget       โ”‚         โ”‚ - EquipmentPanel     โ”‚     โ”‚
    โ”‚ - InventoryWidget     โ”‚         โ”‚ - EquipmentSlots     โ”‚     โ”‚
    โ”‚ - ItemGridWidget      โ”‚         โ”‚ - QuickAccessSlots   โ”‚     โ”‚
    โ”‚ - ItemSlotWidgets     โ”‚         โ”‚   (tagged slots)     โ”‚     โ”‚
    โ”‚ - ItemWidgets         โ”‚         โ”‚ - SlotTooltips       โ”‚     โ”‚
    โ”‚ - CategoryWidgets     โ”‚         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     โ”‚
    โ”‚ - TooltipWidgets      โ”‚                                      โ”‚
    โ”‚ - ActionMenuWidgets   โ”‚                                      โ”‚
    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                                      โ”‚
                                                                   โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ”‚
โ”‚   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ””โ”€โ”€>โ”‚ UNotificationManager        โ”‚
    โ”‚ Component                   โ”‚
    โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”‚
    โ”‚ Implements:                 โ”‚
    โ”‚ - INotificationInterface    โ”‚
    โ”‚                             โ”‚
    โ”‚ Operations:                 โ”‚
    โ”‚ - ProcessNotification()     โ”‚
    โ”‚ - CreateNotificationWidget()โ”‚
    โ”‚ - QueueNotification()       โ”‚
    โ”‚                             โ”‚
    โ”‚ References:                 โ”‚
    โ”‚ - NotificationContainer     โ”‚
    โ”‚   Widget                    โ”‚
    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                          INTERACTION INTERFACES                             โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

    Actor (with Pickup Interface)          Actor (with Lootable Interface)
           โ”‚                                          โ”‚
           โ–ผ                                          โ–ผ
    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
    โ”‚ Pickup Actor     โ”‚                  โ”‚ Lootable Container โ”‚
    โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”‚                  โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”‚
    โ”‚ Implements:      โ”‚                  โ”‚ Implements:        โ”‚
    โ”‚ - IPickupable    โ”‚                  โ”‚ - ILootable        โ”‚
    โ”‚                  โ”‚                  โ”‚ - IInventory       โ”‚
    โ”‚ Contains:        โ”‚                  โ”‚   Interface        โ”‚
    โ”‚ - ItemTemplate   โ”‚                  โ”‚                    โ”‚
    โ”‚ - Quantity       โ”‚                  โ”‚ Contains:          โ”‚
    โ”‚ - Mesh           โ”‚                  โ”‚ - InventoryManager โ”‚
    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

    Actor (with Vendor Interface)
           โ”‚
           โ–ผ
    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
    โ”‚ Vendor NPC       โ”‚
    โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”‚
    โ”‚ Implements:      โ”‚
    โ”‚ - IVendor        โ”‚
    โ”‚ - IInventory     โ”‚
    โ”‚   Interface      โ”‚
    โ”‚                  โ”‚
    โ”‚ Contains:        โ”‚
    โ”‚ - InventoryMgr   โ”‚
    โ”‚ - BuyMultiplier  โ”‚
    โ”‚ - SellMultiplier โ”‚
    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

3. Class Hierarchy

3.1 Component Hierarchy

UActorComponent
โ”‚
โ”œโ”€ UInventoryManagerComponent
โ”‚  โ”œโ”€ Implements: IMounteaAdvancedInventoryInterface
โ”‚  โ””โ”€ Contains: FInventoryItemArray
โ”‚
โ”œโ”€ UEquipmentManagerComponent
โ”‚  โ”œโ”€ Implements: IMounteaAdvancedEquipmentInterface
โ”‚  โ”œโ”€ Implements: IMounteaAdvancedAttachmentContainerInterface
โ”‚  โ””โ”€ Contains: FEquipmentSlotArray, TArray<UAttachmentSlot*>
โ”‚
โ”œโ”€ UCraftingComponent
โ”‚  โ”œโ”€ Implements: IMounteaCraftingInterface
โ”‚  โ””โ”€ Requires: UInventoryManagerComponent, URecipeKnowledgeComponent
โ”‚
โ”œโ”€ URecipeKnowledgeComponent
โ”‚  โ”œโ”€ Implements: IMounteaRecipeKnowledgeInterface
โ”‚  โ””โ”€ Contains: TMap<FGuid, FRecipeKnowledge>
โ”‚
โ”œโ”€ UInventoryUIComponent
โ”‚  โ”œโ”€ Implements: IMounteaInventoryUIInterface
โ”‚  โ””โ”€ References: UInventoryManagerComponent
โ”‚
โ”œโ”€ UEquipmentUIComponent
โ”‚  โ”œโ”€ Implements: IMounteaEquipmentUIInterface
โ”‚  โ””โ”€ References: UEquipmentManagerComponent
โ”‚
โ””โ”€ UNotificationManagerComponent
   โ”œโ”€ Implements: IMounteaNotificationInterface
   โ””โ”€ Contains: TArray<FInventoryNotificationData>

3.2 Data Asset Hierarchy

UPrimaryDataAsset
โ”‚
โ”œโ”€ UMounteaInventoryItemTemplate (base template)
โ”‚  โ”‚
โ”‚  โ”œโ”€ UMoneyItemTemplate
โ”‚  โ”‚  โ”œโ”€ Additional: CurrencyType (GameplayTag)
โ”‚  โ”‚  โ””โ”€ Additional: AutoStack = true
โ”‚  โ”‚
โ”‚  โ”œโ”€ UCraftingRecipeTemplate
โ”‚  โ”‚  โ”œโ”€ Additional: TMap<FGuid, int32> RequiredIngredients
โ”‚  โ”‚  โ”œโ”€ Additional: TMap<FGuid, int32> OutputItems
โ”‚  โ”‚  โ”œโ”€ Additional: bPermanentLearning
โ”‚  โ”‚  โ”œโ”€ Additional: CraftingStationTag
โ”‚  โ”‚  โ””โ”€ Additional: SuccessRate
โ”‚  โ”‚
โ”‚  โ””โ”€ UModifierTemplate (for affectors/effects)
โ”‚     โ”œโ”€ Additional: ModifierType (GameplayTag)
โ”‚     โ”œโ”€ Additional: bIsReversible
โ”‚     โ”œโ”€ Additional: TArray<FGameplayEffectSpecHandle> Effects
โ”‚     โ””โ”€ Additional: ModifierStats
โ”‚
โ”œโ”€ UMounteaAdvancedInventorySettingsConfig
โ”‚  โ”œโ”€ Contains: Inventory Type Configs
โ”‚  โ”œโ”€ Contains: Item Rarities
โ”‚  โ”œโ”€ Contains: Item Categories
โ”‚  โ”œโ”€ Contains: UI Class References
โ”‚  โ””โ”€ Contains: Notification Configs
โ”‚
โ””โ”€ UMounteaAdvancedEquipmentSettingsConfig
   โ””โ”€ Contains: Equipment Slot Definitions

3.3 Struct Hierarchy

FFastArraySerializerItem
โ”‚
โ”œโ”€ FInventoryItem (existing)
โ”‚  โ”œโ”€ FGuid Guid
โ”‚  โ”œโ”€ UMounteaInventoryItemTemplate* Template
โ”‚  โ”œโ”€ int32 Quantity
โ”‚  โ”œโ”€ float Durability
โ”‚  โ”œโ”€ FGameplayTagContainer CustomData
โ”‚  โ”œโ”€ TMap<FGameplayTag, FGuid> AffectorSlots
โ”‚  โ””โ”€ TScriptInterface<IInventoryInterface> OwningInventory
โ”‚
โ””โ”€ FEquipmentSlot (new)
   โ”œโ”€ FGuid SlotGuid
   โ”œโ”€ FName SlotName
   โ”œโ”€ FGameplayTagContainer SlotTags
   โ”œโ”€ FGuid EquippedItemGuid
   โ”œโ”€ EEquipmentSlotState State
   โ””โ”€ UMounteaAdvancedAttachmentSlot* AttachmentSlot

FFastArraySerializer
โ”‚
โ”œโ”€ FInventoryItemArray (existing)
โ”‚  โ””โ”€ TArray<FInventoryItem> Items
โ”‚
โ””โ”€ FEquipmentSlotArray (new)
   โ””โ”€ TArray<FEquipmentSlot> Slots

3.4 Widget Hierarchy

UUserWidget
โ”‚
โ”œโ”€ Inventory UI Hierarchy
โ”‚  โ”œโ”€ UInventoryWrapperWidget (IInventorySystemBaseWidgetInterface)
โ”‚  โ”‚  โ””โ”€ Contains: UInventoryWidget
โ”‚  โ”‚
โ”‚  โ”œโ”€ UInventoryWidget (IInventoryWidgetInterface)
โ”‚  โ”‚  โ”œโ”€ Contains: UItemGridWidget
โ”‚  โ”‚  โ”œโ”€ Contains: UCategoriesWrapperWidget
โ”‚  โ”‚  โ””โ”€ Contains: UItemPanelWidget
โ”‚  โ”‚
โ”‚  โ”œโ”€ UItemsGridWidget (IInventoryItemsGridWidgetInterface)
โ”‚  โ”‚  โ””โ”€ Contains: TArray<UItemSlotWidget>
โ”‚  โ”‚
โ”‚  โ”œโ”€ UItemSlotWidget (IInventoryItemSlotWidgetInterface)
โ”‚  โ”‚  โ””โ”€ Contains: UItemWidget
โ”‚  โ”‚
โ”‚  โ”œโ”€ UItemWidget (IInventoryItemWidgetInterface)
โ”‚  โ”‚
โ”‚  โ”œโ”€ UItemTooltipWidget (IInventoryTooltipWidgetInterface)
โ”‚  โ”‚
โ”‚  โ”œโ”€ UItemActionsContainerWidget (IInventoryItemActionsContainerWidgetInterface)
โ”‚  โ”‚  โ””โ”€ Contains: TArray<UItemActionWidget>
โ”‚  โ”‚
โ”‚  โ”œโ”€ UItemActionWidget (IInventoryItemActionWidgetInterface)
โ”‚  โ”‚
โ”‚  โ””โ”€ UCategoryWidget (IInventoryCategoryWidgetInterface)
โ”‚
โ”œโ”€ Equipment UI Hierarchy
โ”‚  โ”œโ”€ UEquipmentPanelWidget (IEquipmentPanelWidgetInterface)
โ”‚  โ”‚  โ””โ”€ Contains: TArray<UEquipmentSlotWidget>
โ”‚  โ”‚
โ”‚  โ””โ”€ UEquipmentSlotWidget (IEquipmentSlotWidgetInterface)
โ”‚     โ””โ”€ Contains: UItemWidget (reused from inventory)
โ”‚
โ””โ”€ Notification UI Hierarchy
   โ”œโ”€ UNotificationContainerWidget (INotificationContainerWidgetInterface)
   โ”‚  โ””โ”€ Contains: TArray<UNotificationWidget>
   โ”‚
   โ””โ”€ UNotificationWidget (INotificationWidgetInterface)

3.5 Interface Inheritance

UInterface (Unreal Base)
โ”‚
โ”œโ”€ IMounteaAdvancedInventoryInterface
โ”‚  โ””โ”€ Core inventory operations
โ”‚
โ”œโ”€ IMounteaAdvancedEquipmentInterface
โ”‚  โ””โ”€ Core equipment operations
โ”‚
โ”œโ”€ IMounteaAdvancedAttachmentContainerInterface (existing)
โ”‚  โ””โ”€ Attachment slot container operations
โ”‚
โ”œโ”€ IMounteaAdvancedAttachmentAttachableInterface (existing)
โ”‚  โ””โ”€ Attachable object interface
โ”‚
โ”œโ”€ IMounteaCraftingInterface
โ”‚  โ””โ”€ Crafting operations
โ”‚
โ”œโ”€ IMounteaRecipeKnowledgeInterface
โ”‚  โ””โ”€ Recipe storage and retrieval
โ”‚
โ”œโ”€ IMounteaPickupInterface
โ”‚  โ””โ”€ Pickup operations
โ”‚
โ”œโ”€ IMounteaDroppableInterface
โ”‚  โ””โ”€ Drop operations
โ”‚
โ”œโ”€ IMounteaLootableInterface
โ”‚  โ””โ”€ Looting operations
โ”‚
โ”œโ”€ IMounteaVendorInterface
โ”‚  โ””โ”€ Buy/sell operations
โ”‚
โ”œโ”€ IMounteaInventoryUIInterface
โ”‚  โ””โ”€ Inventory UI bridge operations
โ”‚
โ”œโ”€ IMounteaEquipmentUIInterface
โ”‚  โ””โ”€ Equipment UI bridge operations
โ”‚
โ”œโ”€ IMounteaNotificationInterface
โ”‚  โ””โ”€ Notification processing
โ”‚
โ””โ”€ Widget Interfaces (multiple for each widget type)
   โ”œโ”€ IMounteaInventorySystemBaseWidgetInterface
   โ”œโ”€ IMounteaInventoryWidgetInterface
   โ”œโ”€ IMounteaInventoryItemSlotWidgetInterface
   โ”œโ”€ IMounteaInventoryItemWidgetInterface
   โ”œโ”€ IMounteaInventoryTooltipWidgetInterface
   โ”œโ”€ IMounteaEquipmentPanelWidgetInterface
   โ”œโ”€ IMounteaEquipmentSlotWidgetInterface
   โ””โ”€ IMounteaNotificationWidgetInterface

4. Data Flow Diagrams (Simplified)

4.1 Add Item Flow

Player โ†’ InventoryManager
    โ”‚
    โ”œโ”€ [Server] Validate Request
    โ”‚     โ”œโ”€ Check Inventory Space
    โ”‚     โ”œโ”€ Check Weight Limit
    โ”‚     โ”œโ”€ Check Item Validity
    โ”‚     โ””โ”€ Check Configuration
    โ”‚
    โ”œโ”€ [Server] Process Item
    โ”‚     โ”œโ”€ Find Existing Stack (if stackable)
    โ”‚     โ”œโ”€ Add to Existing OR Create New Item Instance
    โ”‚     โ””โ”€ Update FInventoryItemArray
    โ”‚
    โ”œโ”€ [Replication] Replicate to Clients
    โ”‚     โ””โ”€ OnRep_InventoryItems()
    โ”‚
    โ”œโ”€ [Server] Fire Notification
    โ”‚     โ””โ”€ NotificationManagerโ†’ProcessNotification()
    โ”‚
    โ””โ”€ [Both] Update UI
          โ””โ”€ InventoryUIComponentโ†’RefreshInventory()

4.2 Equip Item Flow

Player โ†’ EquipmentManager
    โ”‚
    โ”œโ”€ [Client] Request Equip (Prediction)
    โ”‚     โ””โ”€ Show Equipment Visual
    โ”‚
    โ”œโ”€ [Server] Validate Request
    โ”‚     โ”œโ”€ Check Item in Inventory
    โ”‚     โ”œโ”€ Check Slot Compatibility
    โ”‚     โ”œโ”€ Check Slot State
    โ”‚     โ””โ”€ Check Configuration
    โ”‚
    โ”œโ”€ [Server] Process Equipment
    โ”‚     โ”œโ”€ Get Item from InventoryManager
    โ”‚     โ”œโ”€ Find Target Equipment Slot
    โ”‚     โ”œโ”€ Unequip Current Item (if any)
    โ”‚     โ”œโ”€ Update FEquipmentSlot
    โ”‚     โ””โ”€ Attach to AttachmentSlot
    โ”‚
    โ”œโ”€ [Replication] Replicate to Clients
    โ”‚     โ”œโ”€ OnRep_EquipmentSlots()
    โ”‚     โ””โ”€ Physical Attachment Update
    โ”‚
    โ”œโ”€ [Both] Update Inventory UI State
    โ”‚     โ””โ”€ Mark Item as Equipped
    โ”‚
    โ””โ”€ [Both] Update Equipment UI
          โ””โ”€ EquipmentUIComponentโ†’RefreshSlot()

4.3 Craft Item Flow

Player โ†’ CraftingComponent
    โ”‚
    โ”œโ”€ [Server] Validate Recipe
    โ”‚     โ”œโ”€ RecipeKnowledgeโ†’IsRecipeKnown()
    โ”‚     โ”œโ”€ InventoryManagerโ†’ValidateIngredients()
    โ”‚     โ”œโ”€ Check Crafting Station (if required)
    โ”‚     โ””โ”€ Roll Success Chance (if configured)
    โ”‚
    โ”œโ”€ [Server] Execute Crafting
    โ”‚     โ”œโ”€ InventoryManagerโ†’RemoveItems(ingredients)
    โ”‚     โ”œโ”€ InventoryManagerโ†’AddItems(outputs)
    โ”‚     โ””โ”€ Apply Tool Durability (if configured)
    โ”‚
    โ”œโ”€ [Replication] Replicate Inventory Changes
    โ”‚     โ””โ”€ FInventoryItemArray replication
    โ”‚
    โ””โ”€ [Server] Fire Notification
          โ””โ”€ NotificationManagerโ†’ProcessNotification()

4.4 Apply Modifier Flow

Player โ†’ Drag Modifier to Item
    โ”‚
    โ”œโ”€ [Client] UI Validation
    โ”‚     โ”œโ”€ Check Affector Slot Compatibility
    โ”‚     โ””โ”€ Visual Feedback
    โ”‚
    โ”œโ”€ [Server] Validate Modification
    โ”‚     โ”œโ”€ Check Item Has Affector Slot
    โ”‚     โ”œโ”€ Check Slot is Empty/Compatible
    โ”‚     โ””โ”€ Check Modifier Compatibility
    โ”‚
    โ”œโ”€ [Server] Apply Modifier
    โ”‚     โ”œโ”€ Get Target Item from Inventory
    โ”‚     โ”œโ”€ Remove Modifier Item (if configured)
    โ”‚     โ”œโ”€ Add ModifierGuid to Item.AffectorSlots
    โ”‚     โ”œโ”€ Apply Effects to Item.CustomData
    โ”‚     โ””โ”€ Update Item Template (if needed)
    โ”‚
    โ”œโ”€ [Replication] Replicate Item Change
    โ”‚     โ””โ”€ FInventoryItem replication
    โ”‚
    โ””โ”€ [Both] Update UI
          โ”œโ”€ Refresh Item Display
          โ””โ”€ Show Modifier Visual

4.5 Pickup Item Flow

Player Interacts with Pickup Actor
    โ”‚
    โ”œโ”€ [Client] Show Pickup Prompt
    โ”‚
    โ”œโ”€ [Server] Pickup Request
    โ”‚     โ””โ”€ PickupActorโ†’IPickupInterfaceโ†’RequestPickup()
    โ”‚
    โ”œโ”€ [Server] Transfer to Inventory
    โ”‚     โ”œโ”€ Get ItemTemplate + Quantity from Pickup
    โ”‚     โ””โ”€ InventoryManagerโ†’AddItem()
    โ”‚
    โ”œโ”€ [Server] Destroy/Update Pickup Actor
    โ”‚     โ””โ”€ Remove from world or reduce quantity
    โ”‚
    โ””โ”€ [Replication] Standard Add Item Flow
          (See 4.1)

4.6 Loot/Trade Flow

Player โ†’ Opens Loot/Vendor Interface
    โ”‚
    โ”œโ”€ [Server] Request Access
    โ”‚     โ””โ”€ Targetโ†’ILootableInterfaceโ†’RequestLootAccess()
    โ”‚     OR Targetโ†’IVendorInterfaceโ†’RequestTradeAccess()
    โ”‚
    โ”œโ”€ [Server] Validate Access
    โ”‚     โ”œโ”€ Check Distance
    โ”‚     โ”œโ”€ Check Permissions
    โ”‚     โ””โ”€ Check Inventory Flags
    โ”‚
    โ”œโ”€ [Both] Show UI
    โ”‚     โ”œโ”€ Source Inventory UI
    โ”‚     โ””โ”€ Target Inventory UI
    โ”‚
    โ”œโ”€ [Transfer Item] Player Action
    โ”‚     โ”œโ”€ [Server] Validate Transfer
    โ”‚     โ”œโ”€ [Server] Sourceโ†’RemoveItem()
    โ”‚     โ”œโ”€ [Server] Targetโ†’AddItem()
    โ”‚     โ””โ”€ [Server] Process Payment (if vendor)
    โ”‚
    โ””โ”€ [Replication] Both Inventories Update
          โ””โ”€ FInventoryItemArray replication

5. Interface Definitions

5.1 Core Interfaces

IMounteaAdvancedInventoryInterface

Purpose: Core inventory database operations Implementers: UInventoryManagerComponent

Responsibilities: - Add/Remove items - Find items by GUID/template/tags - Modify item quantity/durability - Get inventory state (weight, value, capacity) - Sort/filter items - Save/load inventory data - Validate inventory operations - Process inventory notifications


IMounteaAdvancedEquipmentInterface

Purpose: Equipment slot management and attachment Implementers: UEquipmentManagerComponent

Responsibilities: - Equip/unequip items - Get equipment slots by name/tag - Validate equipment compatibility - Get equipped items - Check slot states - Save/load equipment data - Manage quick access slots


IMounteaCraftingInterface

Purpose: Crafting execution and validation Implementers: UCraftingComponent

Responsibilities: - Validate recipe requirements - Check ingredient availability - Execute crafting recipe - Calculate success chance - Handle crafting failures - Check crafting station requirements - Apply tool durability costs


IMounteaRecipeKnowledgeInterface

Purpose: Recipe storage and learning system Implementers: URecipeKnowledgeComponent

Responsibilities: - Learn recipe (permanent or temporary) - Forget recipe - Check if recipe is known - Get all known recipes - Get recipes by category/tags - Save/load recipe knowledge - Handle recipe discovery


IMounteaPickupInterface

Purpose: Item pickup operations Implementers: APickupActor

Responsibilities: - Provide item template - Provide quantity - Handle pickup request - Destroy or update after pickup - Show pickup prompt - Validate pickup conditions


IMounteaDroppableInterface

Purpose: Item drop operations Implementers: UInventoryManagerComponent, Player/NPC Actors

Responsibilities: - Validate drop request - Spawn pickup actor - Remove item from inventory - Position pickup in world - Handle drop permissions


IMounteaLootableInterface

Purpose: Looting system access control Implementers: Actors with InventoryManagerComponent

Responsibilities: - Request loot access - Validate looter permissions - Provide inventory reference - Check loot distance - Handle loot state (open/closed) - Apply loot filters


IMounteaVendorInterface

Purpose: Buy/sell operations Implementers: Vendor NPCs, Merchant Actors

Responsibilities: - Calculate buy price - Calculate sell price - Validate transaction - Process payment - Provide merchant inventory - Check vendor gold/currency - Apply price multipliers


5.2 UI Interfaces

IMounteaInventoryUIInterface

Purpose: Bridge between inventory logic and UI Implementers: UInventoryUIComponent

Responsibilities: - Create/destroy inventory widgets - Refresh inventory display - Handle UI input - Translate UI commands to inventory operations - Subscribe to inventory notifications - Update item slot visuals


IMounteaEquipmentUIInterface

Purpose: Bridge between equipment logic and UI Implementers: UEquipmentUIComponent

Responsibilities: - Create/destroy equipment widgets - Refresh equipment display - Handle slot interactions - Translate UI commands to equipment operations - Update equipped item visuals - Show/hide quick access slots


IMounteaNotificationInterface

Purpose: Notification processing and display Implementers: UNotificationManagerComponent

Responsibilities: - Process notification requests - Create notification widgets - Queue notifications - Play notification sounds - Apply notification styles - Remove expired notifications


5.3 Widget Interfaces

IMounteaInventorySystemBaseWidgetInterface

Purpose: Top-level UI wrapper Implementers: UInventoryWrapperWidget

Responsibilities: - Initialize all child widgets - Handle widget lifecycle - Manage input mode - Toggle visibility - Coordinate multiple panels


IMounteaInventoryWidgetInterface

Purpose: Main inventory panel Implementers: UInventoryWidget

Responsibilities: - Display item grid - Show categories - Handle sorting - Manage item panel - Coordinate sub-widgets


IMounteaInventoryItemSlotWidgetInterface

Purpose: Individual inventory slot Implementers: UItemSlotWidget

Responsibilities: - Display item widget - Handle drag/drop - Show slot state - Trigger tooltip - Execute item actions


IMounteaEquipmentSlotWidgetInterface

Purpose: Individual equipment slot Implementers: UEquipmentSlotWidget

Responsibilities: - Display equipped item - Show slot type/name - Handle equip/unequip - Validate equipment drag/drop - Show compatibility feedback


6. Core Struct/Class Definitions

6.1 New Structs

FEquipmentSlot

USTRUCT(BlueprintType)
struct FEquipmentSlot : public FFastArraySerializerItem
{
    GENERATED_BODY()

    UPROPERTY()
    FGuid SlotGuid;

    UPROPERTY()
    FName SlotName;

    UPROPERTY()
    FGameplayTagContainer SlotTags;

    UPROPERTY()
    FGuid EquippedItemGuid;

    UPROPERTY()
    EEquipmentSlotState State;

    UPROPERTY(NotReplicated)
    TObjectPtr<UMounteaAdvancedAttachmentSlot> AttachmentSlot;
};

FEquipmentSlotArray

USTRUCT(BlueprintType)
struct FEquipmentSlotArray : public FFastArraySerializer
{
    GENERATED_BODY()

    UPROPERTY()
    TArray<FEquipmentSlot> Slots;

    bool NetDeltaSerialize(FNetDeltaSerializeInfo& DeltaParams);
};

FCraftingRecipeData

USTRUCT(BlueprintType)
struct FCraftingRecipeData
{
    GENERATED_BODY()

    UPROPERTY(EditAnywhere, BlueprintReadOnly)
    TMap<FGuid, int32> RequiredIngredients;

    UPROPERTY(EditAnywhere, BlueprintReadOnly)
    TMap<FGuid, int32> OutputItems;

    UPROPERTY(EditAnywhere, BlueprintReadOnly)
    float SuccessRate = 1.0f;

    UPROPERTY(EditAnywhere, BlueprintReadOnly)
    FGameplayTag CraftingStationTag;

    UPROPERTY(EditAnywhere, BlueprintReadOnly)
    bool bConsumesTool = false;

    UPROPERTY(EditAnywhere, BlueprintReadOnly)
    float ToolDurabilityCost = 0.0f;
};

FRecipeKnowledge

USTRUCT(BlueprintType)
struct FRecipeKnowledge
{
    GENERATED_BODY()

    UPROPERTY()
    FGuid RecipeGuid;

    UPROPERTY()
    bool bIsPermanent;

    UPROPERTY()
    FDateTime LearnedAt;

    UPROPERTY()
    FGuid SourceItemGuid;
};

FInventoryTransferRequest

USTRUCT(BlueprintType)
struct FInventoryTransferRequest
{
    GENERATED_BODY()

    UPROPERTY()
    FGuid ItemGuid;

    UPROPERTY()
    int32 Quantity;

    UPROPERTY()
    TScriptInterface<IMounteaAdvancedInventoryInterface> SourceInventory;

    UPROPERTY()
    TScriptInterface<IMounteaAdvancedInventoryInterface> TargetInventory;

    UPROPERTY()
    bool bIsVendorTransaction = false;

    UPROPERTY()
    float TransactionPrice = 0.0f;
};

FModifierData

USTRUCT(BlueprintType)
struct FModifierData
{
    GENERATED_BODY()

    UPROPERTY(EditAnywhere, BlueprintReadOnly)
    FGameplayTag ModifierType;

    UPROPERTY(EditAnywhere, BlueprintReadOnly)
    bool bIsReversible;

    UPROPERTY(EditAnywhere, BlueprintReadOnly)
    FGameplayTagContainer ModifierTags;

    UPROPERTY(EditAnywhere, BlueprintReadOnly)
    TMap<FName, float> StatModifiers;
};

6.2 New Enums

EEquipmentSlotState

UENUM(BlueprintType)
enum class EEquipmentSlotState : uint8
{
    Empty,
    Equipped,
    Locked,
    Disabled
};

ECraftingResult

UENUM(BlueprintType)
enum class ECraftingResult : uint8
{
    Success,
    Failed_MissingIngredients,
    Failed_InsufficientQuantity,
    Failed_NoRecipeKnowledge,
    Failed_NoCraftingStation,
    Failed_ChanceRoll,
    Failed_InsufficientSpace
};

EInventoryTransferResult

UENUM(BlueprintType)
enum class EInventoryTransferResult : uint8
{
    Success,
    PartialSuccess,
    Failed_SourceInvalid,
    Failed_TargetInvalid,
    Failed_ItemNotFound,
    Failed_InsufficientQuantity,
    Failed_TargetFull,
    Failed_InsufficientCurrency,
    Failed_PermissionDenied
};

6.3 New Data Assets

UMoneyItemTemplate

UCLASS()
class UMoneyItemTemplate : public UMounteaInventoryItemTemplate
{
    GENERATED_BODY()

public:
    UPROPERTY(EditAnywhere, BlueprintReadOnly)
    FGameplayTag CurrencyType;

    UPROPERTY(EditAnywhere, BlueprintReadOnly)
    int32 CurrencyValue = 1;

    virtual bool IsStackable() const override { return true; }
    virtual bool IsAutoStack() const override { return true; }
};

UCraftingRecipeTemplate

UCLASS()
class UCraftingRecipeTemplate : public UMounteaInventoryItemTemplate
{
    GENERATED_BODY()

public:
    UPROPERTY(EditAnywhere, BlueprintReadOnly)
    FCraftingRecipeData RecipeData;

    UPROPERTY(EditAnywhere, BlueprintReadOnly)
    bool bPermanentLearning = true;

    UPROPERTY(EditAnywhere, BlueprintReadOnly)
    FText RecipeDescription;
};

UModifierTemplate

UCLASS()
class UModifierTemplate : public UMounteaInventoryItemTemplate
{
    GENERATED_BODY()

public:
    UPROPERTY(EditAnywhere, BlueprintReadOnly)
    FModifierData ModifierData;

    UPROPERTY(EditAnywhere, BlueprintReadOnly)
    FGameplayTagContainer CompatibleSlotTags;

    UPROPERTY(EditAnywhere, BlueprintReadOnly)
    bool bConsumeOnApplication = true;
};

6.4 Component Definitions

UInventoryManagerComponent

UCLASS()
class UInventoryManagerComponent : public UActorComponent, public IMounteaAdvancedInventoryInterface
{
    GENERATED_BODY()

public:
    UPROPERTY(Replicated)
    FInventoryItemArray InventoryItems;

    UPROPERTY(EditAnywhere, BlueprintReadOnly)
    EInventoryType InventoryType;

    UPROPERTY()
    TObjectPtr<UEquipmentManagerComponent> EquipmentManager;

    UPROPERTY()
    TObjectPtr<UNotificationManagerComponent> NotificationManager;

    // Configuration loaded from InventorySettingsConfig
    FInventoryTypeConfig TypeConfig;
};

UEquipmentManagerComponent

UCLASS()
class UEquipmentManagerComponent : public UActorComponent
    , public IMounteaAdvancedEquipmentInterface
    , public IMounteaAdvancedAttachmentContainerInterface
{
    GENERATED_BODY()

public:
    UPROPERTY(Replicated)
    FEquipmentSlotArray EquipmentSlots;

    UPROPERTY(NotReplicated)
    TArray<TObjectPtr<UMounteaAdvancedAttachmentSlot>> AttachmentSlots;

    UPROPERTY()
    TObjectPtr<UInventoryManagerComponent> InventoryManager;

    UPROPERTY(EditAnywhere, BlueprintReadOnly)
    TArray<FName> EnabledSlotNames;
};

UCraftingComponent

UCLASS()
class UCraftingComponent : public UActorComponent, public IMounteaCraftingInterface
{
    GENERATED_BODY()

public:
    UPROPERTY()
    TObjectPtr<UInventoryManagerComponent> InventoryManager;

    UPROPERTY()
    TObjectPtr<URecipeKnowledgeComponent> RecipeKnowledge;

    UPROPERTY(EditAnywhere, BlueprintReadOnly)
    FGameplayTag CurrentCraftingStationTag;

    UPROPERTY(EditAnywhere, BlueprintReadOnly)
    bool bRequiresCraftingStation = false;
};

URecipeKnowledgeComponent

UCLASS()
class URecipeKnowledgeComponent : public UActorComponent
    , public IMounteaRecipeKnowledgeInterface
{
    GENERATED_BODY()

public:
    UPROPERTY(SaveGame, Replicated)
    TMap<FGuid, FRecipeKnowledge> KnownRecipes;

    UPROPERTY()
    TObjectPtr<UInventoryManagerComponent> InventoryManager;
};

UNotificationManagerComponent

UCLASS()
class UNotificationManagerComponent : public UActorComponent
    , public IMounteaNotificationInterface
{
    GENERATED_BODY()

public:
    UPROPERTY()
    TArray<FInventoryNotificationData> NotificationQueue;

    UPROPERTY()
    TObjectPtr<UUserWidget> NotificationContainerWidget;

    UPROPERTY(EditAnywhere, BlueprintReadOnly)
    int32 MaxVisibleNotifications = 5;
};

Interfaces & Components

Each system provides well-defined interfaces for maximum flexibility:

  • IMounteaAdvancedInventoryInterface - Core inventory operations, lacks UI representation
  • IMounteaAdvancedEquipmentInterface - Equipment management
  • IMounteaAdvancedInventoryUIInterface - Inventory UI management, provides elegant way to separate Inventory and its UI
  • IMounteaAdvancedAttachmentContainerInterface - Attachment handling

Components can be used independently or as part of the complete system, enabling gradual adoption and customization.