/*
     * // This is for camera shaking
     * public void UltimateShake()
     * {
     *
     *  StartCoroutine(cameraShake.Shake(0.15f, 0.4f));
     * }
     */

    public s_GameManager.PlayerData CreatePlayerDataStructOfPlayer()
    {
        s_GameManager.PlayerData pd = new s_GameManager.PlayerData();
        pd.score                = score;
        pd.BlocksMatched        = stats_BlocksMatched;
        pd.CombosMade           = stats_CombosMade;
        pd.TrashDumpedOnOther   = stats_TrashDumpedOnOther;
        pd.UltimatePointsEarned = stats_UltimatePointsEarned;
        pd.UltimatesUsed        = stats_UltimatesUsed;
        pd.Roll = Player;
        pd.Name = myCharacter;
        if (s_GameManager.GetDebug())
        {
            Debug.Log("Player Datat Created for " + pd.Roll.ToString() + " with name " + pd.Name);
        }
        return(pd);
    }
    public void LoseGame()
    {
        s_GameManager.PlayerData losingPlayer  = owningPlayer.CreatePlayerDataStructOfPlayer();
        s_GameManager.PlayerData winningPlayer = new s_GameManager.PlayerData();

        // Game Over Functionality
        // Debug.LogError("NO FREE SPACE YOU LOSE. Lost by " + gameObject.name + " at pos " + transform.position);
        for (int i = 0; i < s_GameManager.Singleton.Players.Count; i++)
        {
            if (s_GameManager.Singleton.Players[i] != owningPlayer && s_GameManager.Singleton.Players[i] != null && s_GameManager.Singleton.Players[i].gameObject != null)
            {
                winningPlayer = s_GameManager.Singleton.Players[i].CreatePlayerDataStructOfPlayer();
                break;
            }
        }

        s_GameManager.Singleton.EndGame(losingPlayer, winningPlayer); // Call the EndGame function from the game manager script
    }