/// <summary>
    /// This callback fires when a wildcard tile receives input.
    /// </summary>
    /// <remarks>
    /// This method is assigned in the Wildcard Tile Manager's inspector.
    /// Callbacks like these can also be assigned dynamically at runtime,
    /// and anonymous delegates are supported as well.
    /// </remarks>
    public void OnWildcardTileSelect()
    {
        // Get the currently selected letter tile.
        var wildcardManagerTile = WGBEvent.currentLetterTile;

        // If the letter is blank,
        // show the wildcard tile selection panel.
        if (!(wildcardManagerTile.defaultLetter.hasValue || wildcardManagerTile.wildcardLetter.hasValue))
        {
            // Show the panel and initialize UI variables.
            m_ViewModel.wildcardPanelSelection      = -1;
            m_ViewModel.wildcardPanelScrollPosition = Vector2.zero;
            m_ViewModel.showWildcardPanel           = true;

            // Cache manager information.
            m_WildcardManagerLanguage = WGBEvent.currentLanguage;
            m_WildcardManagerTile     = wildcardManagerTile;
        }
        // If the letter is not blank, reset the wildcard value.
        else
        {
            wildcardManagerTile.RemoveWildcard();

            // Deselect the tile.
            m_PlayerCached.DeselectTile(wildcardManagerTile);
        }
    }
    // This method is called by the ViewModel,
    // when the user presses a button to change a wildcard letter.
    void OnWildcardLetterSelect(string letter)
    {
        // Hide the wildcard tile selection panel.
        m_ViewModel.showWildcardPanel = false;

        // Set the letter to the currently cached tile, if the language has not changed.
        if (!string.IsNullOrEmpty(letter) && m_WildcardManagerTile != null && m_WildcardManagerLanguage == WordGameLanguage.current)
        {
            // Get a letter struct from a letter string.
            var selectedLetter = m_WildcardManagerLanguage.GetLetter(letter);

            // Set the wildcard letter. A value of 0 points is given, as well.
            m_WildcardManagerTile.SetWildcard(selectedLetter, 0);

            // Select the tile.
            m_PlayerCached.SelectTile(m_WildcardManagerTile);
        }

        m_WildcardManagerTile     = null;
        m_WildcardManagerLanguage = null;
    }