# Inventory Window UGUI

## 🎒 InventoryWindowUGUI Class

> **Namespace:** `Esper.Inventool.UI.UGUI`\
> **Access:** `public`\
> **Type:** `class`\
> **Inherits:** `DraggableWindowUGUI`

***

### 📦 Fields

| Access          | Field                         | Type                                          | Description                                          |
| --------------- | ----------------------------- | --------------------------------------------- | ---------------------------------------------------- |
| `protected`     | `itemStackElementPrefab`      | `ItemStackElementUGUI`                        | Item stack element prefab placed over slots.         |
| `protected`     | `inventorySlotPrefab`         | `InventorySlotUGUI`                           | Empty inventory slot prefab.                         |
| `protected`     | `inventoryFilterPrefab`       | `InventoryFilterUGUI`                         | Inventory filter prefab.                             |
| `protected`     | `currencyElementPrefab`       | `CurrencyElementUGUI`                         | Currency display element prefab.                     |
| `protected`     | `closeButton`                 | `Button`                                      | Close button.                                        |
| `protected`     | `pageLeftButton`              | `Button`                                      | Inventory previous page button.                      |
| `protected`     | `pageRightButton`             | `Button`                                      | Inventory next page button.                          |
| `protected`     | `inventoryTitleLabel`         | `TextMeshProUGUI`                             | Inventory title element.                             |
| `protected`     | `weightLabel`                 | `TextMeshProUGUI`                             | Inventory weight amount label.                       |
| `protected`     | `pagesLabel`                  | `TextMeshProUGUI`                             | Inventory pages label.                               |
| `protected`     | `filterTitleLabel`            | `TextMeshProUGUI`                             | Inventory filter title label.                        |
| `protected`     | `weightArea`                  | `GameObject`                                  | Inventory weight area.                               |
| `protected`     | `currenciesContainer`         | `RectTransform`                               | Container for currency UI elements.                  |
| `protected`     | `inventoryArea`               | `RectTransform`                               | Inventory area.                                      |
| `protected`     | `gridLayoutGroup`             | `GridLayoutGroup`                             | Grid layout for inventory slots.                     |
| `protected`     | `inventoryContentFitter`      | `ContentSizeFitter`                           | Inventory content size fitter.                       |
| `protected`     | `filterScroll`                | `ScrollRect`                                  | Inventory filter scroll.                             |
| `protected`     | `inventoryScroll`             | `ScrollRect`                                  | Inventory scroll rect.                               |
| `protected`     | `inventoryCanvasGroup`        | `CanvasGroup`                                 | Canvas group used during reload.                     |
| `protected`     | `pagesArea`                   | `RectTransform`                               | Area for pagination text and buttons.                |
| `protected`     | `inventoryScrollbar`          | `Scrollbar`                                   | Inventory scrollbar.                                 |
| `protected`     | `currencyElements`            | `List<CurrencyElementUGUI>`                   | Loaded currency elements.                            |
| `protected`     | `inventoryFilters`            | `List<InventoryFilterUGUI>`                   | Inventory filters.                                   |
| `protected`     | `selectedInventoryFilter`     | `InventoryFilterUGUI`                         | Currently selected filter.                           |
| `protected`     | `loadedInventorySlots`        | `List<InventorySlotUGUI>`                     | All loaded inventory slot elements.                  |
| `protected`     | `loadedItemElements`          | `Dictionary<ItemStack, ItemStackElementUGUI>` | Loaded item UI elements keyed by ItemStack.          |
| `protected`     | `inventoryRequiresReload`     | `bool`                                        | True if inventory requires reload.                   |
| `protected`     | `originalInventoryAreaHeight` | `float`                                       | Original height of the inventory area.               |
| `public`        | `Loaded`                      | `bool`                                        | True if UI elements have been loaded (`!firstOpen`). |
| `public static` | `Instance`                    | `InventoryWindowUGUI`                         | The active instance.                                 |

***

### 🔍 Properties

| Access          | Property   | Type                  | Description                               |
| --------------- | ---------- | --------------------- | ----------------------------------------- |
| `public`        | `Loaded`   | `bool`                | True if all UI elements have been loaded. |
| `public static` | `Instance` | `InventoryWindowUGUI` | The active instance.                      |

***

### 🧰 Methods

| Access               | Method                                                                       | Returns                | Description                                                                                                                              |
| -------------------- | ---------------------------------------------------------------------------- | ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `protected override` | `Awake()`                                                                    | `void`                 | Singleton initialization, register buttons and event listeners, set current page, localize UI.                                           |
| `protected override` | `Start()`                                                                    | `void`                 | Reload currencies, filters, weight UI, pages text; cache original area height; hide content.                                             |
| `protected virtual`  | `HandleItemDismantled(ItemStack itemStack, List<ItemStack> dismantleResult)` | `void`                 | Reloads current inventory page after dismantle.                                                                                          |
| `protected virtual`  | `HandleItemUsed(ItemStack itemStack)`                                        | `void`                 | Reloads current inventory page after use.                                                                                                |
| `protected virtual`  | `HandleCurrencyChanged(Currency currency)`                                   | `void`                 | Updates currency texts.                                                                                                                  |
| `protected virtual`  | `HandleItemsUpdated()`                                                       | `void`                 | Reloads current inventory page and updates currencies.                                                                                   |
| `protected virtual`  | `HandleItemDropped(ItemStack itemStack)`                                     | `void`                 | Reloads current inventory page after drop.                                                                                               |
| `protected virtual`  | `HandleMerchantError(Merchant.MerchantError error, string message)`          | `void`                 | Shows localized confirm prompt for merchant errors.                                                                                      |
| `public`             | `LocalizeElements()`                                                         | `void`                 | Localizes UI labels if localization enabled.                                                                                             |
| `public virtual`     | `Toggle()`                                                                   | `void`                 | Toggles window open/close state.                                                                                                         |
| `protected virtual`  | `HandleInitialOpen()`                                                        | `void`                 | Starts first-open initialization coroutine when needed.                                                                                  |
| `private`            | `LateReload()`                                                               | `IEnumerator`          | Deferred initialization: select default filter, remove filters, start reload coroutine.                                                  |
| `private`            | `ReloadInventoryCoroutine()`                                                 | `IEnumerator`          | Rebuilds layout (layout rebuilds, reload slots, reload page) and fades canvas group.                                                     |
| `public override`    | `Open()`                                                                     | `void`                 | Opens window, performs initial open, triggers reload if required and sets active.                                                        |
| `public virtual`     | `IsPointInsideInventory(Vector2 point)`                                      | `bool`                 | Returns true if a screen point is inside the inventory scroll area.                                                                      |
| `protected`          | `ShowOrHideWeightArea()`                                                     | `void`                 | Shows or hides weight area based on settings.                                                                                            |
| `protected`          | `ReloadCurrencyElements()`                                                   | `void`                 | Rebuilds currency UI elements from inventory currencies.                                                                                 |
| `public`             | `UpdateCurrenciesText()`                                                     | `void`                 | Updates currency amount labels.                                                                                                          |
| `public`             | `UpdateWeightText()`                                                         | `void`                 | Updates weight text label.                                                                                                               |
| `public`             | `UpdatePagesText()`                                                          | `void`                 | Updates pages label text.                                                                                                                |
| `public`             | `NextPage()`                                                                 | `void`                 | Advances to next inventory page and reloads.                                                                                             |
| `public`             | `PreviousPage()`                                                             | `void`                 | Goes to previous inventory page and reloads.                                                                                             |
| `public`             | `ReloadCurrentInventoryPage()`                                               | `void`                 | Clears existing item elements, creates UI elements for items in current page, positions and rotates as needed, updates pages and weight. |
| `public`             | `GetItemElement(ItemStack itemStack)`                                        | `ItemStackElementUGUI` | Returns ItemStackElementUGUI for given ItemStack or null.                                                                                |
| `protected`          | `ResetLoadedSlots()`                                                         | `void`                 | Marks all loaded slots available visually.                                                                                               |
| `protected`          | `SetSlotInUse(InventorySlotUGUI slot)`                                       | `void`                 | Marks a slot visually as in‑use.                                                                                                         |
| `protected`          | `SetSlotAvailable(InventorySlotUGUI slot)`                                   | `void`                 | Marks a slot visually as available.                                                                                                      |
| `protected`          | `CreateItemStackElement(ItemStack itemStack)`                                | `ItemStackElementUGUI` | Instantiates and sizes an ItemStackElementUGUI for given ItemStack.                                                                      |
| `protected virtual`  | `ReloadInventorySlots()`                                                     | `void`                 | Rebuilds slot grid according to inventory navigation mode, calculates cell size and instantiates slots.                                  |
| `protected virtual`  | `ReloadInventoryFilters()`                                                   | `void`                 | Rebuilds filter list, wires buttons to set/remove filters and reload pages.                                                              |
| `protected virtual`  | `SelectInventoryFilter(InventoryFilterUGUI filter)`                          | `void`                 | Selects a filter, deselects previous, updates filter title text (localized).                                                             |
| `protected virtual`  | `DeselectInventoryFilter()`                                                  | `void`                 | Deselects current inventory filter.                                                                                                      |

***

## Active Instance

You can get the active `InventoryWindowUGUI` instance with `InventoryWindowUGUI.Instance`. Ensure there's an instance of it in your scene before using this field.

## Opening & Closing

### Open

Call the `Open` method when the player wants to open their inventory.

```csharp
InventoryWindowUGUI.Instance.Open();
```

### Close

`Close` simply closes the window.

```csharp
InventoryWindowUGUI.Instance.Close();
```

### Toggle

Optionally, you can use `Toggle` to open or close the window.

```csharp
InventoryWindowUGUI.Instance.Toggle();
```
