public void SetTowerCount(int towerCount)
    {
        towerCards = new List <TowerCard>();

        foreach (var id in TowerTable.GetTowerIds().Take(towerCount))
        {
            TowerCard card   = new TowerCard();
            var       status = TowerTable.GetStatus(id);
            card.id     = id;
            card.prefab = (Tower)status.prefab;
            card.sprite = status.sprite;
            card.cost   = status.cost;

            towerCards.Add(card);
        }

        prefabs    = new Dictionary <TowerCard, Tower>();
        towerPools = new Dictionary <TowerCard, LocalObjectPool <Tower> >();
        foreach (var card in towerCards)
        {
            Transform towerHolder        = new GameObject($"Tower Pool ({card.id})").transform;
            LocalObjectPool <Tower> pool = new LocalObjectPool <Tower>(
                card.prefab, towerHolder, 5
                );
            prefabs.Add(card, card.prefab);
            towerPools.Add(card, pool);
        }
        cursor.gameObject.SetActive(false);
    }
    public void Initialize(TowerCard card)
    {
        this.card = card;

        image.sprite = card.sprite;

        eventTrigger.AddListener(EventTriggerType.PointerDown, _ => Interact());
        Select(false);
        costText.text = card.cost.ToString();
    }
    // 소환 준비
    public bool ReadySummon(TowerCard tower, Func <int, int, bool> enableChecker)
    {
        if (!CostManager.instance.CanUse(tower.cost))
        {
            return(false);
        }

        range.SetSight(GetRange(tower));
        ready         = tower;
        cursor.sprite = tower.sprite;
        cursor.gameObject.SetActive(true);

        Tile.SetStateGetter(TileStateGetter);

        //Tile.OnPointerUp    += Summon;
        Tile.OnPointerEnter += HighlightTile;
        Tile.OnPointerExit  += DeHighlightTile;

        readySummon = true;
        Tile.Enable(enableChecker);

        return(true);
    }
 public bool ReadySummon(TowerCard tower) => ReadySummon(tower, (x, y) => true);
 private Sight GetRange(TowerCard card) => prefabs[card].range;
 public bool CanSummon(TowerCard card) => CostManager.instance.CanUse(card.cost);