ShopInventorySystem.md 5.0 KB

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