# Combat Event Popup System - Setup Guide

## Overview
This system provides a beautiful popup UI for combat encounters that allows players to choose between "Attack" or "Run Away" when encountering enemies during travel.

## Components Created

### 1. CombatEventPopup.cs
- **Purpose**: Beautiful UI popup showing enemy details and choice buttons
- **Features**: 
  - Displays enemy count, names, stats, and threat levels
  - Animated popup with smooth transitions
  - Hover effects on buttons
  - Enemy threat level color coding

### 2. CombatEventIntegration.cs
- **Purpose**: Connects the popup with the travel event system
- **Features**:
  - Handles player choices (attack/run away)
  - Manages escape success/failure logic
  - Applies health penalties for failed escapes
  - Configurable escape chance and messages

### 3. Enhanced TravelEventTypes.cs
- **Purpose**: Updated combat events to use the popup system
- **Features**:
  - Automatically detects if popup system is available
  - Falls back to immediate battle if no popup found
  - Integrates with existing enemy character data

## Setup Instructions

### Step 1: Create UI Document
1. In your scene, create a UI Document GameObject
2. Add a UI Document component
3. Create or assign a Panel Settings asset
4. Leave the Visual Tree Asset blank (popup creates its own UI)

### Step 2: Setup Combat Event Popup
1. Create an empty GameObject named "CombatEventPopup"
2. Add the `CombatEventPopup` component
3. Assign the UI Document from step 1 to the `uiDocument` field
4. Adjust animation settings if desired

### Step 3: Setup Combat Event Integration
1. Find your existing TravelEventSystem GameObject
2. Add the `CombatEventIntegration` component to the same GameObject
3. Assign the CombatEventPopup from step 2 to the `combatEventPopup` field
4. Configure settings:
   - **Allow Running Away**: Enable/disable run away option
   - **Run Away Success Chance**: Probability of successful escape (0.0 - 1.0)
   - **Run Away Health Penalty**: Damage taken on failed escape
   - **Messages**: Customize success/failure messages

### Step 4: Test the System
1. Create or find a CombatTravelEvent asset
2. Assign EnemyCharacterData assets to the `possibleEnemies` array
3. Add the combat event to your TravelEventSystem's `availableEvents` list
4. Start travel and trigger the event (use "Force Next Event" for testing)

## Configuration Options

### Combat Event Integration Settings
```csharp
[Header("Combat Popup Integration")]
public bool allowRunningAway = true;            // Can players run away?
public float runAwaySuccessChance = 0.75f;      // 75% success chance
public int runAwayHealthPenalty = 5;            // Damage on failed escape

[Header("Run Away Messages")]
public string[] successfulRunAwayMessages;      // Success messages
public string[] failedRunAwayMessages;          // Failure messages (use {damage} placeholder)
```

### Popup Animation Settings
```csharp
[Header("Popup Settings")]
public float animationDuration = 0.3f;          // Animation speed
public float backgroundBlurIntensity = 0.5f;    // Background overlay opacity
```

## Enemy Display Features

### Threat Level Color Coding
- **Green (1-2)**: Easy enemies
- **Yellow (3-4)**: Medium enemies  
- **Orange (5-6)**: Hard enemies
- **Red (7+)**: Very hard enemies

### Enemy Information Shown
- Enemy count and name
- Health points, armor class, threat level
- Preferred weapon (if assigned)
- Visual threat level indicator

## Integration Flow

### 1. Combat Event Triggered
```
Travel Event System → Combat Travel Event → Combat Integration → Popup UI
```

### 2. Player Makes Choice
```
Popup UI → Combat Integration → Apply Result → Continue/Battle
```

### 3. Escape Outcomes
**Successful Escape:**
- Show success message
- No penalties applied
- Travel continues normally

**Failed Escape:**
- Show failure message with damage
- Apply health penalty to party
- Force combat to start

### 4. Attack Choice
- Show battle preparation message
- Stop travel
- Set up battle with enemy data
- Transition to battle system

## Troubleshooting

### Popup Not Appearing
1. Check that UI Document is properly assigned
2. Verify CombatEventIntegration is on the same GameObject as TravelEventSystem
3. Ensure combat events have valid EnemyCharacterData assigned

### Escape Always Fails/Succeeds
1. Check `runAwaySuccessChance` setting (0.0 = always fail, 1.0 = always succeed)
2. Verify `allowRunningAway` is enabled

### UI Layout Issues
1. Check that Panel Settings asset is properly configured
2. Verify screen resolution compatibility
3. Adjust popup container sizing in CombatEventPopup.cs

### Events Go Straight to Battle
1. Verify CombatEventIntegration component is present and enabled
2. Check console for "No CombatEventIntegration found" warnings
3. Ensure all components are on active GameObjects

## Customization Tips

### Custom Enemy Display
Modify `CreateEnemyElement()` in CombatEventPopup.cs to show additional enemy information like special abilities or lore.

### Custom Button Styles
Update `SetupButtonHoverEffects()` and button creation code to match your game's visual style.

### Different Escape Mechanics
Modify `HandleRunAwayChoice()` in CombatEventIntegration.cs to implement different escape mechanics based on party stats, terrain, or enemy types.

### Battle System Integration
Update `ApplyBattleResult()` in CombatEventIntegration.cs to properly integrate with your existing battle scene transition system.

## File Locations
- `/Assets/Scripts/UI/CombatEventPopup.cs`
- `/Assets/Scripts/Events/CombatEventIntegration.cs`  
- `/Assets/Scripts/Events/TravelEventTypes.cs` (modified)

This system provides a rich, interactive combat encounter experience while maintaining compatibility with your existing travel and battle systems!
