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);