using UnityEngine;
using System.Collections;
using System.Collections.Generic;

// Ermöglicht dem Spieler, die Kameras per Zahlentasten umzuschalten
public class CameraManager : MonoBehaviour {

    // Alle Kameras, die man umschalten können soll
    public List<GameObject> cameras = new List<GameObject>();

    // die derzeit aktive Kamera
    private GameObject currentActiveCamera = null;

    // durchlaufe alle Kameras, stelle sicher, dass genau eine
    // Kamera aktiv ist und diese Kamera currentActiveCam
    // zugewiesen ist; falls keine Kamera aktiv ist, aktiviere
    // die erste Kamera in der Liste
    void Awake() {
        bool hasFoundActiveCamera = false;
        
        foreach (GameObject cam in cameras) {
            if (hasFoundActiveCamera) {
                cam.SetActive(false);
            }
            if (!hasFoundActiveCamera && cam.activeSelf) {
                currentActiveCamera = cam;
                hasFoundActiveCamera = true;
            }
        }

        if (!hasFoundActiveCamera) {
            SwitchCamera(0);
        }
    }

    // Prüfe in jedem Frame, ob eine der Tasten Zahlentasten auf der normalen 
    // Tastatur oder dem Nummernblock gedrückt ist, falls ja, schalte auf die 
    // entsprechende Kamera
	void Update() {
        if (Input.GetKeyDown(KeyCode.Alpha1) || Input.GetKeyDown(KeyCode.Keypad1)) {
            SwitchCamera(0); // 0 ist das erste Element, und sollte auf Taste 1 liegen
        } else if (Input.GetKeyDown(KeyCode.Alpha2) || Input.GetKeyDown(KeyCode.Keypad2)) {
            SwitchCamera(1); 
        } else if (Input.GetKeyDown(KeyCode.Alpha3) || Input.GetKeyDown(KeyCode.Keypad3)) {
            SwitchCamera(2); 
        } else if (Input.GetKeyDown(KeyCode.Alpha4) || Input.GetKeyDown(KeyCode.Keypad4)) {
            SwitchCamera(3); 
        } else if (Input.GetKeyDown(KeyCode.Alpha5) || Input.GetKeyDown(KeyCode.Keypad5)) {
            SwitchCamera(4); 
        } else if (Input.GetKeyDown(KeyCode.Alpha6) || Input.GetKeyDown(KeyCode.Keypad6)) {
            SwitchCamera(5); 
        } else if (Input.GetKeyDown(KeyCode.Alpha7) || Input.GetKeyDown(KeyCode.Keypad7)) {
            SwitchCamera(6); 
        } else if (Input.GetKeyDown(KeyCode.Alpha8) || Input.GetKeyDown(KeyCode.Keypad8)) {
            SwitchCamera(7); 
        } else if (Input.GetKeyDown(KeyCode.Alpha9) || Input.GetKeyDown(KeyCode.Keypad9)) {
            SwitchCamera(8);
        } else if (Input.GetKeyDown(KeyCode.Alpha0) || Input.GetKeyDown(KeyCode.Keypad0)) {
            SwitchCamera(9); // Taste 0 ist ganz rechts, also 10. Kamera (=> Index ist 9)
        }
	}

    private void SwitchCamera(int newCameraId) {
        newCameraId = Mathf.Clamp(newCameraId, 0, cameras.Count - 1);
        if (currentActiveCamera != null) {
            currentActiveCamera.SetActive(false);
        }
        cameras[newCameraId].SetActive(true);
        currentActiveCamera = cameras[newCameraId];
    }
}
