# Battle Scene Test Mode Guide

This guide explains how to use the test modes for the battle scene to quickly create test characters and enemies for development and testing purposes.

## Overview

Two test mode scripts have been created to help with battle scene testing:

1. **BattleTestMode.cs** - Basic test mode for simple character creation
2. **EnhancedBattleTestMode.cs** - Advanced test mode with full combat data and realistic stats

## Basic Test Mode (BattleTestMode)

### Features
- ✅ Creates test player and enemy characters automatically
- ✅ Configurable character counts and weapon types
- ✅ Multiple preset battle configurations
- ✅ Context menu commands for easy testing

### Setup Instructions

1. **Add to Battle Scene**:
   ```
   1. Open your BattleScene
   2. Create an empty GameObject named "BattleTestMode"
   3. Add the BattleTestMode component to it
   4. Configure the settings in the inspector
   ```

2. **Configuration Options**:
   - `Enable Test Mode`: Master switch to enable/disable test mode
   - `Test Player Count`: Number of player characters (1-4)
   - `Test Enemy Count`: Number of enemy characters (1-6)
   - `Available Weapons`: Array of weapon types to randomly assign
   - `Player Names`: Array of names for test players
   - `Enemy Names`: Array of names for test enemies

3. **Automatic Activation**:
   - Test mode only activates if no existing battle data is present
   - Characters are created automatically when the scene loads
   - Debug logs show what was created

### Context Menu Commands

Right-click on the BattleTestMode component to access these commands:

- **Create Test Battle Data**: Manually create test data
- **Clear Test Data**: Remove all test battle data
- **Create Random Test Data**: Create random character counts and weapons
- **Create 1v1 Test Battle**: Quick single combat for testing
- **Create Large Test Battle**: 4 players vs 6 enemies for stress testing

## Enhanced Test Mode (EnhancedBattleTestMode)

### Features
- ✅ Creates full CombatDataTransfer sessions with realistic stats
- ✅ Configurable battle context (terrain, weather, time)
- ✅ Character stats and equipment integration
- ✅ Support for WeaponItem assets
- ✅ Backward compatibility with legacy BattleSetupData

### Setup Instructions

1. **Add to Battle Scene**:
   ```
   1. Open your BattleScene
   2. Create an empty GameObject named "EnhancedBattleTestMode"
   3. Add the EnhancedBattleTestMode component to it
   4. Configure the settings in the inspector
   ```

2. **Configuration Options**:
   - `Enable Enhanced Test Mode`: Master switch
   - `Test Player Count`: Number of players (1-4)
   - `Test Enemy Count`: Number of enemies (1-6)
   - `Test Terrain`: Terrain type for the battle
   - `Test Weather`: Weather conditions
   - `Test Time Of Day`: Time in 24-hour format
   - `Base Player Health`: Starting HP for players
   - `Base Enemy Health`: Starting HP for enemies
   - `Base Armor Class`: Base AC value
   - `Test Weapons`: Array of WeaponItem assets to use

3. **WeaponItem Setup** (Optional but Recommended):
   ```
   1. Create WeaponItem assets in Project window:
      Right-click → Create → RPG → Items → Weapon
   2. Configure the weapon stats and behavior
   3. Assign them to the Test Weapons array
   4. Test characters will randomly get these weapons
   ```

### Context Menu Commands

Right-click on the EnhancedBattleTestMode component:

- **Create Enhanced Test Data**: Manually create full test session
- **Clear All Test Data**: Remove both CombatDataTransfer and BattleSetupData
- **Create Balanced Test Battle**: 2v2 balanced encounter
- **Create Challenging Test Battle**: 2v4 difficult encounter
- **Create Simple Test Battle**: 1v1 for quick testing

## Using Both Test Modes

### Recommended Setup

1. **For Simple Testing**: Use `BattleTestMode` when you just need basic characters for testing placement, movement, or basic combat mechanics.

2. **For Full Testing**: Use `EnhancedBattleTestMode` when you need realistic character stats, equipment, and battle context for testing the complete combat system.

3. **Don't Use Both**: Only use one test mode at a time to avoid conflicts.

### Integration with Existing Battle System

Both test modes integrate seamlessly with the existing battle setup:

- **BattleSetup.cs** will find and use the test characters
- **EnhancedBattleSetup.cs** will use the enhanced combat session data
- **GameManager.cs** will manage the test characters normally
- All existing battle mechanics work with test characters

## Example Workflows

### Quick Combat Test
```
1. Add EnhancedBattleTestMode to scene
2. Set Test Player Count = 1, Test Enemy Count = 1
3. Right-click component → "Create Simple Test Battle"
4. Press Play to test 1v1 combat
```

### Weapon System Test
```
1. Create several WeaponItem assets with different stats
2. Add them to the Test Weapons array in EnhancedBattleTestMode
3. Right-click component → "Create Enhanced Test Data"
4. Characters will spawn with random weapons from your array
```

### Stress Test
```
1. Add BattleTestMode to scene
2. Right-click component → "Create Large Test Battle"
3. Press Play to test 4v6 battle performance
```

### Battle Context Test
```
1. Add EnhancedBattleTestMode to scene
2. Set Test Terrain = Mountains, Test Weather = Storm, Time = 22
3. Create Enhanced Test Data
4. Test how different environments affect combat
```

## Debug Information

Both test modes provide extensive debug logging:

- 🧪 Prefix indicates test mode messages
- Character creation details (names, weapons, stats)
- Battle context information
- Data population confirmation

Enable `Show Debug Logs` in the inspector to see all test mode activity.

## Troubleshooting

### Test Mode Not Activating
- Check that `Enable Test Mode` is checked
- Ensure no existing battle data is present
- Clear existing data using context menu commands

### Characters Not Spawning
- Ensure you have `playerPrefab` and `enemyPrefab` assigned in BattleSetup
- Check that PlayerSpawnArea and EnemySpawnArea exist in scene
- Verify ground layer mask is set correctly

### Weapons Not Working
- For Enhanced mode, ensure WeaponItem assets are properly configured
- Check that weapon class names match existing weapon classes
- Verify prefab references in WeaponItem assets

### Performance Issues
- Reduce character counts for stress testing
- Use Simple Test Battle for basic testing
- Clear test data between tests to avoid memory buildup

## Advanced Usage

### Custom Test Characters

You can extend the test modes to create specific character builds:

```csharp
// In EnhancedBattleTestMode.CreateTestPlayerData()
if (playerName == "TestMage")
{
    playerData.wisdom = 18;  // High wisdom for mage
    playerData.equippedWeapon = "Staff";
}
```

### Dynamic Test Scenarios

Create different test scenarios by modifying the context:

```csharp
[ContextMenu("Create Night Ambush Test")]
public void CreateNightAmbushTest()
{
    testTerrain = TerrainType.Forest;
    testWeather = Weather.Clear;
    testTimeOfDay = 2f; // 2 AM
    testPlayerCount = 2;
    testEnemyCount = 4;
    CreateEnhancedTestData();
}
```

This system makes it easy to test any battle scenario quickly without going through the full character creation and travel system.
