public bool Pickup(GameObject obj)
        {
            _obj     = obj;
            _booster = obj.GetComponent <BoosterModBroadcaster>();
            _obj.SetActive(false);

            GameObject renderer = new GameObject("BoosterSprite");

            _spriteRenderer        = renderer.AddComponent <SpriteRenderer>();
            _spriteRenderer.sprite = _booster.Mod.Sprite.Get();
            _spriteRenderer.color  = Colorization.ColorInfo.Get(_booster.Mod.Color).DisplayColor;

            return(_booster != null);
        }
        public void Handle(Item pick)
        {
            BoosterItem      expItem   = pick as BoosterItem;
            BoosterPlacement placement = new BoosterPlacement();

            placement.OnPlaced += (go) => OnPlaced(expItem);

            BoosterModBroadcaster broadcaster = Instantiate(BoosterPrefab).GetComponent <BoosterModBroadcaster>();
            Mod mod = Instantiate(expItem.Mod);

            mod.Coeffecient = expItem.Coeffecient;

            broadcaster.Mod = mod;
            placement.Pickup(broadcaster.gameObject);

            PlacementController.Instance.TakePlacement(placement);
        }
        public bool Place()
        {
            if (_target != null)
            {
                if (_placeRequirements.All(x => x() == true))
                {
                    GameObject            cardGO = UnityEngine.Object.Instantiate(_obj, _target.transform.root);
                    BoosterModBroadcaster card   = cardGO.GetComponent <BoosterModBroadcaster>();
                    card.gameObject.SetActive(true);

                    OnPlaced?.Invoke(cardGO);
                    PlacementController.Instance.CancelAll();
                    return(true);
                }
            }
            return(false);
        }