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)); }