# Role

You are a Senior Flutter Developer working on "Colosseum's Choice".
You need to upgrade the Inventory System to a **Grid-based Slot System**.

# Goal

Separate "Equipped Items" from "Inventory Items" and create a fixed 16-slot inventory interface.

# Key Requirements

1.  **Character Model Update:**
    - Maintain `equipment` list (Items currently providing stats).
    - Add `inventory` list (Items in the bag, providing NO stats).
    - Limit `inventory` size to **16 slots**.
    - Add methods: `equipItem(item)`, `unequipItem(item)`.
2.  **Battle Logic Update:**
    - **Victory Reward:** When an item is selected, add it to `inventory` (not `equipment`).
    - If inventory is full (16 items), show a "Inventory Full" message (Snack bar or Log) and discard the item (Simple logic for now).
3.  **UI Update (Inventory Screen):**
    - **Section 1: Equipment:** Show currently equipped items (List or Row). Tap to Unequip.
    - **Section 2: Inventory (Bag):** Use `GridView` with **fixed 16 slots** (4x4 grid).
      - If a slot has an item: Show Icon & Name. Tap to Equip.
      - If a slot is empty: Show an empty box container.

# Required Files

Please generate the updated code for the following files.

---

## 1. `lib/models/character.dart` (Update)

**Changes:**

- Add `List<Item> inventory = [];`.
- Add `int maxInventorySize = 16;`.
- Method `addToInventory(Item item)`: Adds to inventory if length < 16. Returns success boolean.
- Method `equip(Item item)`: Moves item from `inventory` to `equipment`.
- Method `unequip(Item item)`: Moves item from `equipment` to `inventory` (check space first).

## 2. `lib/providers/battle_provider.dart` (Update)

**Changes:**

- `selectReward(Item item)`: Now calls `player.addToInventory(item)`.
  - If false (full), add a log "Inventory is full! Item discarded.".
- Add `equipItem(Item item)`: Calls player logic and notifies listeners.
- Add `unequipItem(Item item)`: Calls player logic and notifies listeners.

## 3. `lib/screens/inventory_screen.dart` (Update)

**Layout:**

- **Top (Stats):** Keep existing stat display.
- **Middle (Equipped):** "Currently Equipped" Label -> `ListView` (horizontal or vertical, compact). OnTap -> `provider.unequipItem`.
- **Bottom (Inventory):** "Bag (X/16)" Label -> `GridView.builder` with `itemCount: 16`.
  - Loop 0 to 15.
  - If index < `player.inventory.length`, render the Item Tile (Tap to `equipItem`).
  - Else, render an Empty Slot (Grey container with border).

---

# Output Format

Please provide the complete code for the 3 modified files.
