internal void SetupButtonHandlers(Button pieceTierButton, ITowerOptionBase config, DispatchOnSet <int> answer, bool addClosePanel)
        {
            DeactivateButton(pieceTierButton); // Reset button first

            pieceTierButton.onClick.AddListener(delegate()
            {
                // Trigger confirmation that clicked item was referenced piece id (engine will pick it up)
                answer.value = config.ReferencedPieceId;
            });

            if (addClosePanel)
            {
                pieceTierButton.onClick.AddListener(closePanel);
            }

            ActivateButton(pieceTierButton, config.Enabled);
        }
        public void SetupButton(Button button, ITowerOptionBase config, DispatchOnSet <int> answer, bool addClosePanel)
        {
            DeactivateButton(button); // Reset button first

            button.onClick.AddListener(delegate()
            {
                // Trigger confirmation that clicked item was referenced piece id (engine will pick it up)
                answer.value = config.ReferencedPieceId;
            });

            if (addClosePanel)
            {
                button.onClick.AddListener(closePanel);
            }

            button.GetComponentInChildren <Text>().text = config.Name;

            button.gameObject.SetActive(true);
            button.interactable = config.Enabled;
        }
 internal void SetupButtonAppearance(GameObject pieceTier, ITowerOptionBase config)
 {
     // TODO Hack, since BLACK doesn't activate flip; REFACTOR: Make a 2nd function that doesn't flip the sprite
     pieceViewService.ChangeIcon(pieceTier, PlayerColor.BLACK, config.PieceType, config.Back);
     pieceViewService.ChangePlayerBorder(pieceTier, config.Team);
 }