# Shop/Inventory System Documentation

## Overview
This system provides a comprehensive shop and inventory management solution for your RPG game. It includes:
- Filterable and searchable shop interface
- Currency system (Gold, Silver, Copper)
- Inventory management for weapons, armor, and miscellaneous items
- Integration with the existing team character creation system

## Components Created

### Core Item System
- **Item.cs**: Base class for all items with cost, search functionality
- **WeaponItem.cs**: ScriptableObject for weapon data
- **ArmorItem.cs**: ScriptableObject for armor data  
- **MiscellaneousItem.cs**: ScriptableObject for consumables and misc items

### Shop System
- **Shop.cs**: ScriptableObject shop configuration
- **ShopUI.cs**: Advanced shop UI controller (full featured)
- **SimpleShopManager.cs**: Basic shop implementation that works with existing system

### Inventory System
- **Inventory.cs**: Character inventory management
- **Bank.cs**: Enhanced currency system

### Integration
- **MainTeamSelectScript.cs**: Updated to include shop/inventory functionality
- **SimpleSword.cs** & **SimpleBow.cs**: Updated to work with item system

### UI Files
- **ShopUI.uxml**: Shop interface layout
- **ShopUI.uss**: Shop styling
- **InventorySheet.uxml**: Already existed, now fully functional

## Quick Setup Guide

### 1. Basic Setup
1. Create a GameObject in your scene called "ShopManager"
2. Attach the `SimpleShopManager` script to it
3. Add a `UIDocument` component to the same GameObject
4. Assign `ShopUI.uxml` as the Visual Tree Asset in the UIDocument

### 2. Alternative: Use Setup Script
1. Add the `ShopSystemSetup` script to any GameObject
2. Check "Create Shop GameObject" in the inspector
3. The shop system will be automatically set up

### 3. Test the System
1. Open the Team Select scene
2. Create a character
3. Click "Add Weapon", "Add Armor", or "Add Misc" buttons
4. The shop will open with filterable/searchable items

## Features

### Shop Features
- **Search**: Type to find items by name, description, or tags
- **Filtering**: Filter by category (All, Weapons, Armor, Miscellaneous)
- **Affordability**: Items you can't afford are grayed out
- **Dynamic Pricing**: Gold/Silver/Copper conversion system

### Inventory Features
- **Currency Management**: Gold, Silver, Copper with automatic conversion
- **Item Lists**: Separate lists for weapons, armor, and misc items
- **Add/Remove**: Easy item management through UI buttons
- **Persistence**: Items are saved with character data

### Sample Items Included
The system comes with sample items:

**Weapons:**
- Simple Sword (10g)
- Simple Bow (15g) 
- Iron Sword (25g)
- Composite Bow (35g)

**Armor:**
- Leather Helmet (5g)
- Leather Vest (12g)
- Iron Chainmail (30g)

**Miscellaneous:**
- Health Potion (3g)
- Hemp Rope (8s)
- Torch (2s)

## Currency System
- **1 Gold = 10 Silver = 100 Copper**
- Characters start with 50 gold
- Automatic conversion when making purchases
- Bank fields in inventory are editable for testing

## Extending the System

### Adding New Items
1. Create ScriptableObject assets using the "RPG/Items/" menu
2. Configure item properties (name, description, cost, stats)
3. Add search tags for better discoverability
4. Add to shop's available items list

### Adding New Weapon Types
1. Create a new weapon script inheriting from `Weapon`
2. Add an `InitializeFromItem(WeaponItem)` method
3. Update `WeaponItem.CreateWeaponInstance()` to handle the new type

### Customizing Shop
- Modify `SimpleShopManager.InitializeDefaultItems()` for different starting inventory
- Create multiple shop GameObjects with different item sets
- Customize shop appearance by editing `ShopUI.uss` styles

## Integration with Existing Weapon System

The new system is backward compatible with your existing weapon system:
- `SimpleSword` and `SimpleBow` classes updated to work with `WeaponItem` data
- Characters can still use weapons without the shop system
- Weapon creation can use either old direct instantiation or new item-based creation

## Troubleshooting

### Shop Not Opening
- Check that `SimpleShopManager` exists in scene
- Verify `UIDocument` has `ShopUI.uxml` assigned
- Look for error messages in console

### Items Not Showing
- Check `InitializeDefaultItems()` method is populating lists
- Verify filter/search settings aren't hiding items
- Check item costs aren't higher than character's money

### Inventory Not Updating
- Ensure `UpdateInventoryUI()` is called after character changes
- Check that character has the new currency fields initialized
- Verify UI elements are properly connected in `GetUIElementReferences()`

## Performance Notes
- Items are created dynamically in UI for better performance
- Character data uses simple string lists for basic compatibility
- Full ScriptableObject system available for more complex item management

## Future Enhancements
This system provides a solid foundation that can be extended with:
- Item tooltips with detailed stats
- Equipment slots and stat bonuses
- Item rarity and visual effects
- Shop keeper NPCs and dialogue
- Item crafting and upgrades
- Save/load integration
