# Forge Interaction Module

## Overview
The Interaction module provides a comprehensive player interaction system for the Forge client. It manages how players engage with objects, NPCs, items, and other interactive elements in the environment through a dynamic and context-sensitive interface.

## Dependencies
- forge_client_main

## Authors
- J. Schmidt
- Creedcoder
- IDSolutions

## Features

### Interaction System
1. **Interaction Initialization** (`fnc_initInteraction.sqf`)
   - Initializes the interaction system
   - Sets up interaction buttons and items
   - Configures team coordination settings
   - Manages virtual arsenal integration

2. **Interaction Interface**
   - **Open Interaction** (`fnc_openInteraction.sqf`)
     - Opens the interaction menu
     - Displays available actions
     - Manages button visibility
     - Handles action execution

   - **Interaction Action** (`fnc_interactionAction.sqf`)
     - Processes selected actions
     - Executes interaction commands
     - Manages action feedback
     - Handles interface updates

3. **Available Interactions**
   - **Player Interactions**
     - Give Cash
     - Add Contact
     - Access ATM
     - Access CPOF (Company Point of Finance)
     - Take Cash
     - Open Locker
     - Access Store
     - Open Garage
     - Virtual Armory (if enabled)
     - Virtual Garage (if enabled)

4. **Team Coordination**
   - Company garage access
   - Team-specific interactions
   - Permission-based actions
   - Organization integration

### User Interface
1. **Interaction Menu**
   - Dynamic button display
   - Context-sensitive actions
   - Distance-based availability
   - Permission-based options

2. **Control Elements**
   - Action buttons
   - Status indicators
   - Feedback messages
   - Error handling

## 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 interaction module:
1. Ensure the module is properly loaded in your mission
2. Access interactions using the configured key (default: TAB)
3. Interact with objects and players:
   ```sqf
   // Open interaction menu
   [] call forge_client_interaction_fnc_openInteraction;
   
   // Initialize interaction system
   [] call forge_client_interaction_fnc_initInteraction;
   ```
4. Monitor interaction feedback and results

## Configuration
The module can be configured through the main Forge client configuration:
```cpp
// Interaction key (default: TAB)
interactionKey = 15;

// Team coordination mode
FORGE_Team_Coord = 1;

// Virtual arsenal enable
FORGE_VA_Enable = 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
- Dynamic interaction system
- Context-sensitive actions
- Distance-based availability
- Permission management
- Team coordination
- Virtual arsenal integration
- Error handling
- User feedback
- Interface management
- Action validation
- State tracking
- Event system integration