# Building System Input Actions Setup

## Required Input Actions

Add these three actions to your `InputSystem_Actions.inputactions` file in the **Player** action map:

### 1. ToggleBuildMode (Button)
- **Action Type**: Button
- **Control Type**: Button
- **Binding**: Keyboard B

### 2. Rotate (Value)
- **Action Type**: Value
- **Control Type**: Axis
- **Binding**: Keyboard R (positive value)
- Alternative: You can use a 1D Axis composite with:
  - Negative: Q
  - Positive: E

### 3. Build (Button)
- **Action Type**: Button
- **Control Type**: Button
- **Binding**: Mouse Left Button

## Step-by-Step Setup in Unity

1. **Open Input Actions Asset**
   - Navigate to `Assets/InputSystem_Actions.inputactions`
   - Double-click to open the Input Actions window

2. **Select Player Action Map**
   - In the left panel, click on "Player" action map

3. **Add ToggleBuildMode Action**
   - Click the "+" button in the Actions column
   - Name it: `ToggleBuildMode`
   - Action Type: Button
   - Add binding: Keyboard → B

4. **Add Rotate Action**
   - Click the "+" button in the Actions column
   - Name it: `Rotate`
   - Action Type: Value
   - Control Type: Axis

   **Option A (Simple - Single key):**
   - Add binding: Keyboard → R

   **Option B (Advanced - Q/E rotation):**
   - Right-click → Add 1D Axis Composite
   - Negative: Keyboard → Q
   - Positive: Keyboard → E

5. **Add Build Action**
   - Click the "+" button in the Actions column
   - Name it: `Build`
   - Action Type: Button
   - Add binding: Mouse → Left Button

6. **Save and Regenerate**
   - Click "Save Asset" button
   - The `InputSystem_Actions.cs` script will auto-regenerate

## How It Works in Code

The BuildingPlacement script subscribes to these actions:

```csharp
// Setup in OnNetworkSpawn
_inputActions.Player.ToggleBuildMode.performed += OnToggleBuildMode;
_inputActions.Player.Rotate.performed += OnRotate;
_inputActions.Player.Build.performed += OnBuild;

// Cleanup in OnNetworkDespawn
_inputActions.Player.ToggleBuildMode.performed -= OnToggleBuildMode;
_inputActions.Player.Rotate.performed -= OnRotate;
_inputActions.Player.Build.performed -= OnBuild;
```

### ToggleBuildMode
- Triggers when B is pressed
- Toggles build mode on/off
- Shows/hides building preview

### Rotate
- Triggers when R is pressed (or Q/E if using composite)
- Reads value: positive = rotate right, negative = rotate left
- Rotates building preview by 90°

### Build
- Triggers when left mouse button is pressed
- Only works when build mode is active
- Places the building at the preview position

## Customizing Controls

To change the key bindings:
1. Open `InputSystem_Actions.inputactions`
2. Click on the binding you want to change
3. Click "Path" dropdown
4. Select new key/button
5. Save Asset

No code changes needed - the script uses the action names, not specific keys!

## Testing

After setup:
1. Enter Play mode
2. Press **B** → Should see "Entered Build Mode" in console
3. Press **R** → Building preview should rotate
4. Click **Left Mouse Button** → Should place building (if valid position)
5. Press **B** again → Should exit build mode

## Troubleshooting

**Error: "ToggleBuildMode does not exist"**
- Make sure you named the action exactly `ToggleBuildMode` (case-sensitive)
- Save the Input Actions asset to regenerate the code

**Rotation doesn't work:**
- Check the action name is exactly `Rotate`
- If using composite, make sure it's a 1D Axis composite
- Verify the action type is "Value" not "Button"

**Build action triggers during movement:**
- Make sure Build action is mapped to Mouse Left Button, not Attack
- Check that Build mode is active (press B first)
