private IEnumerator SwitchHandlerCoroutine(ElecSwitch elecSwitch, ElecSwitchColor color)
    {
        elecSwitch.TurnOff();

        if ((ElecSwitchColor.RED == color && redDoorsOpen)
            || (ElecSwitchColor.BLACK == color && blackDoorsOpen)
            || (ElecSwitchColor.BLUE == color && blueDoorsOpen))
            goto EXIT_LABEL;

        cman.BeginCutScene();

        yield return StartCoroutine(elecSwitch.Press());

        switch (color) {
        case ElecSwitchColor.BLACK:
            toggleDoor(blackDoors, blackDoorsOpen = true);
            toggleDoor(blueDoors, blueDoorsOpen = false);
            toggleDoor(redDoors, redDoorsOpen = false);
            break;
        case ElecSwitchColor.BLUE:
            toggleDoor(blackDoors, blackDoorsOpen = false);
            toggleDoor(blueDoors, blueDoorsOpen = true);
            toggleDoor(redDoors, redDoorsOpen = false);
            break;
        case ElecSwitchColor.RED:
            toggleDoor(blackDoors, blackDoorsOpen = false);
            toggleDoor(blueDoors, blueDoorsOpen = false);
            toggleDoor(redDoors, redDoorsOpen = true);
            break;
        }

        yield return StartCoroutine(elecSwitch.Recover());

        cman.EndCutScene();
        EXIT_LABEL:
        elecSwitch.TurnOn();
    }
 private void SwitchHandler(ElecSwitch elecSwitch, ElecSwitchColor color)
 {
     StartCoroutine(SwitchHandlerCoroutine(elecSwitch, color));
 }