void Show()
    {
        Clear();

        foreach (SOResearch researchData in Researches)
        {
            GameObject        newResearchOptionComponent = Instantiate(ResearchComponent, Vector3.zero, Quaternion.identity, (Transform)researchOptionsPanel);
            ResearchComponent researchComponent          = newResearchOptionComponent.GetComponent <ResearchComponent>();

            bool isDisabled = uiController.Store["CompletedResearch"][selectedNode.Team].Contains(researchData) ||
                              researchData.prerequisites.Any(prerequisite => !uiController.Store["CompletedResearch"][selectedNode.Team].Contains(prerequisite));
            researchComponent.Initialize(isDisabled, researchData);

            researchComponent.Clicked += OnResearchComponentClicked;
        }

        view.DOAnchorPos(new Vector2(362, 75), 0.2f);
        shown = true;
    }
    void OnStoreUpdated(string storeKey)
    {
        if (storeKey == "Selection" && uiController.Store[storeKey] != null && uiController.Store[storeKey].GetComponent <BaseNode>() != null)
        {
            selectedNode = uiController.Store[storeKey].GetComponent <BaseNode>();

            Show();
        }

        if (storeKey == "Selection" && (uiController.Store[storeKey] == null || uiController.Store[storeKey].GetComponent <BaseNode>() == null) && shown)
        {
            Hide();
        }

        if (storeKey == "CompletedResearch" && selectedNode != null)
        {
            foreach (Transform researchOptionTransform in (Transform)researchOptionsPanel)
            {
                ResearchComponent researchComponent = researchOptionTransform.GetComponent <ResearchComponent>();

                if (researchComponent.Research.prerequisites.All(prerequisite => uiController.Store["CompletedResearch"][selectedNode.Team].Contains(prerequisite)))
                {
                    researchComponent.Enable();
                }

                if (uiController.Store["CompletedResearch"][selectedNode.Team].Contains(researchComponent.Research))
                {
                    researchComponent.Disable();
                }
            }
        }

        if (storeKey == "GameState" && uiController.Store[storeKey] == GameState.Over && shown)
        {
            Hide();
        }
    }