# Forge Briefing Module

## Overview
The Briefing module provides a comprehensive presentation and lecture system for the Forge client. It includes features for creating interactive slideshows, managing presentations, and delivering lectures with synchronized audio and visual elements.

## Dependencies
- forge_client_main

## Authors
- J. Schmidt
- Creedcoder
- IDSolutions

## Features

### Presentation System
1. **Slide Show Management** (`fnc_initSlideShow.sqf`)
   - Initializes interactive slide shows
   - Configures display screens and controllers
   - Sets up image sequences and timing
   - Manages presentation flow and transitions

2. **Presentation Controls**
   - **Start Slide Show** (`fnc_startSlideShow.sqf`)
     - Initiates the presentation sequence
     - Synchronizes audio and visual elements
     - Manages presentation state
   - **Next Image** (`fnc_nextImage.sqf`)
     - Advances to the next slide
     - Updates display screens
     - Maintains presentation state
   - **Previous Image** (`fnc_prevImage.sqf`)
     - Returns to the previous slide
     - Updates display screens
     - Maintains presentation state
   - **End Slide Show** (`fnc_endSlideShow.sqf`)
     - Terminates the presentation
     - Cleans up resources
     - Resets presentation state

3. **Lecture System**
   - **Spawn Lecture** (`fnc_spawnLecture.sqf`)
     - Initiates AI-driven lectures
     - Manages speaker animations
     - Controls presentation timing
   - **Spawn Presentation** (`fnc_spawnPresentation.sqf`)
     - Creates automated presentations
     - Manages slide timing
     - Controls visual transitions

### Presentation Features
1. **Interactive Controls**
   - Manual slide navigation
   - Auto-scroll capability
   - Presentation state management
   - Speaker control integration

2. **Visual Elements**
   - Multiple display screen support
   - Synchronized image transitions
   - Customizable timing
   - Power-of-2 image optimization

3. **Audio Integration**
   - Speaker synchronization
   - Topic-based conversations
   - Sentence-specific playback
   - Multi-speaker support

## 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 briefing module:
1. Ensure the module is properly loaded in your mission
2. Set up presentation screens and controllers
3. Configure slide shows or lectures:
   ```sqf
   // Initialize a slide show
   [Screen01, [Controller01], ["images/folder/image.paa"]] call forge_client_briefing_fnc_initSlideShow;
   
   // Start a lecture
   [player, "topic", "sentence"] call forge_client_briefing_fnc_spawnLecture;
   
   // Create a presentation
   [screen, [["texture.paa", 5]]] call forge_client_briefing_fnc_spawnPresentation;
   ```
4. Control the presentation using the provided functions

## 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
- Support for multiple display screens
- Synchronized audio-visual presentations
- Interactive control system
- AI-driven lecture capabilities
- Power-of-2 image optimization
- State management for presentations
- Multi-speaker support
- Customizable timing controls
- Resource cleanup on completion
- Error handling and validation 