// Opens the Assignment Window
    private void OpenAssignmentWindow(int fieldID)
    {
        if (bActive || bUnassigned)
        {
            return;
        }

        goPreAssignPanelSelection = EventSystem.current.currentSelectedGameObject;
        goAssignPanel.SetActive(true);

        bAssignWindowOpen = true;
        bActive           = true;
        UIMenuManager.bOverrideCancelFunction = true;
        currentActiveMapper = this;

        // Get the current input field and check if it needs to be replaced
        currentUIInputRow = aUIInputRows[fieldID];
        CheckReplaceInput();
    }
    // Closes the Assignment Window
    public void CloseAssignmentWindow()
    {
        goPanelButtons.SetActive(false);
        panelCountdownText.gameObject.SetActive(false);
        EventSystem.current.SetSelectedGameObject(goPreAssignPanelSelection);

        iCountdownTimer         = 5;
        panelCountdownText.text = iCountdownTimer.ToString();
        StopAllCoroutines();
        UIMenuManager.bOverrideCancelFunction = false;

        aElementMaps    = controlMap.AllMaps.ToArray();
        aAltElementMaps = altControlMap.AllMaps.ToArray();

        bAltMap             = false;
        bAssignWindowOpen   = false;
        bActive             = false;
        currentActiveMapper = null;

        goAssignPanel.SetActive(false);
    }