void Awake()
 {
     if (_instance == null)
     {
         _instance = this;
     }
     else
     {
         Debug.LogError("There should not be 2 RotatingWheels, destroys the newly created RotatingWheels");
         Destroy(gameObject);
     }
 }
    public void ResolveInteraction(string interactionId, GameObject obj)
    {
        Debug.Log("Resolving interaction: " + interactionId);

        if (interactionId == "breakable_door_00")
        {
            GameObject.Find("InputController").GetComponent <InputController>().ActionTutorialPass();
            Player.GetComponentInChildren <Animator>().SetBool("headbutt", true);
        }
        else if (interactionId == "exit_door_00" || interactionId == "exit_door_01" ||
                 interactionId == "exit_door_02" || interactionId == "exit_door_04")
        {
            ExitDoor exitDoor = obj.GetComponent <ExitDoor>();
            if (!exitDoor.usable)
            {
                return;
            }

            exitDoor.usable = false;

            Player.GetComponent <CharacterController2D>().WalkRightEndlessly = true;

            if (interactionId == "exit_door_00")
            {
                GameObject depthWall          = GameObject.FindGameObjectWithTag("DepthWall");
                Transform  depthWallTransform = depthWall.transform;
                depthWallTransform.position = new Vector3(
                    depthWallTransform.position.x,
                    depthWallTransform.position.y,
                    -5.0f);
            }

            LevelTransitionManager.Instance.LoadNextLevel();
        }
        else if (interactionId == "wall_fish_00" ||
                 interactionId == "wall_fish_01" ||
                 interactionId == "wall_fish_02")
        {
            RotatingWheel rotatingWheel = obj.GetComponent <RotatingWheel>();
            if (!rotatingWheel.usable)
            {
                return;
            }
            rotatingWheel.Rotate();
        }
        else if (interactionId == "wheel_puzzle_ok")
        {
            StartCoroutine(WheelPuzzleActions());
        }
        else if (interactionId == "exit_door_desert")
        {
            ExitDoorDesert door = obj.GetComponent <ExitDoorDesert>();

            if (!door.usable)
            {
                return;
            }

            if (door.numberTimesUsed == 0 || door.numberTimesUsed == 1)
            {
                Player.GetComponent <CharacterInteractions>().InteractionsEnabled = false;
                Player.GetComponent <CharacterController2D>().WalkRightEndlessly  = true;
                StartCoroutine(TransitionDesert(door));
            }
            else
            {
                door.usable = false;
                Player.GetComponent <CharacterInteractions>().InteractionsEnabled = false;
                Player.GetComponent <CharacterController2D>().WalkRightEndlessly  = true;
                LevelTransitionManager.Instance.LoadNextLevel();
            }
        }
    }