# Forge Locker Module

## Overview
The Locker module provides a comprehensive equipment management system for the Forge client. It includes features for storing, equipping, and managing player gear in a secure locker system with a modern web-based interface.

## Dependencies
- forge_client_main

## Authors
- J. Schmidt
- Creedcoder
- IDSolutions

## Features

### Locker System
1. **Locker Initialization** (`fnc_initLocker.sqf`)
   - Initializes the locker system
   - Sets up storage structures
   - Configures player variables
   - Manages equipment tracking

2. **Equipment Management**
   - **Store Gear** (`fnc_storeGear.sqf`)
     - Stores equipment in locker
     - Handles different item types:
       - Backpacks (with contents)
       - Facewear (goggles)
       - Headgear
       - HMD (Head Mounted Display)
       - Uniforms
       - Vests
       - Weapons (with attachments)
       - Items
       - Magazines (with ammo count)
     - Manages storage space
     - Preserves item condition

   - **Equip Gear** (`fnc_equipGear.sqf`)
     - Equips items from locker
     - Handles equipment compatibility
     - Manages inventory space
     - Preserves attachments and magazines
     - Provides feedback on actions

3. **Data Management**
   - **Fetch Locker** (`fnc_fetchLocker.sqf`)
     - Retrieves locker contents
     - Updates UI display
     - Manages item categorization
     - Handles item metadata

   - **Fetch Player** (`fnc_fetchPlayer.sqf`)
     - Retrieves player equipment
     - Updates UI display
     - Manages equipment lists
     - Handles item metadata

### User Interface
1. **Modern Web Interface**
   - Responsive design
   - Category filtering
   - Item categorization
   - Storage statistics
   - Equipment details view

2. **Interface Features**
   - Storage space tracking
   - Item count display
   - Category filters:
     - All Items
     - Weapons
     - Clothing
     - Equipment
     - Magazines
   - Item details:
     - Name
     - Category
     - Condition
     - Quantity
     - Attachments

3. **Control Elements**
   - Store button
   - Equip button
   - Category filters
   - Item lists
   - Status indicators

## Event Handlers
The module uses several event handlers for initialization and execution:
- `XEH_preInit.sqf`: Pre-initialization setup
- `XEH_postInit.sqf`: Post-initialization tasks
- `XEH_preStart.sqf`: Pre-start configuration
- `XEH_postInit_client.sqf`: Client-specific post-initialization
- `XEH_preInit_server.sqf`: Server-specific pre-initialization

## Usage
To use the locker module:
1. Ensure the module is properly loaded in your mission
2. Access the locker through the interaction menu
3. Manage equipment using the interface:
   ```sqf
   // Open locker interface
   [] call forge_client_locker_fnc_openLocker;
   
   // Store equipment
   [] call forge_client_locker_fnc_storeGear;
   
   // Equip items
   [] call forge_client_locker_fnc_equipGear;
   ```
4. Monitor storage space and item status

## Configuration
The module can be configured through the main Forge client configuration:
```cpp
// Locker storage space (default: 100)
FORGE_Locker_Space = 100;

// Enable/disable features
FORGE_Locker_EnableAttachments = 1;
FORGE_Locker_EnableMagazines = 1;
```

## Debugging
Debug mode can be enabled by uncommenting the following in `script_component.hpp`:
```cpp
#define DEBUG_MODE_FULL
```

## Version Information
Version information is managed through the main Forge client system configuration.

## Technical Details
- Modern web-based interface
- Real-time storage tracking
- Equipment condition preservation
- Attachment management
- Magazine ammo tracking
- Category-based filtering
- Responsive UI design
- Error handling
- User feedback
- State management
- Event system integration
- Database persistence
- Inventory validation
- Space management