public void Setup(Tile tile, int totalApCost = 0) { GlobalHelper.DestroyAllChildren(tileEffectsParent); tileType.text = tile.TileType.ToString(); if (ReferenceEquals(_inputController, null)) { _inputController = FindObjectOfType <CombatInputController>(); } if (tile is Floor floor) { if (_inputController.TileSelected() && ReferenceEquals(tile, _inputController.GetSelectedTile())) { if (totalApCost <= 0) { totalApCost = _inputController.GetTotalTileMovementCost(); } apCost.text = $"{totalApCost} AP to move here"; } else { apCost.text = $"{floor.ApCost} AP to cross"; } } else { apCost.text = "Impassable"; } var effects = tile.GetEffects(); if (effects == null || !effects.Any()) { tileEffectsParent.SetActive(false); } else { var listedEffects = new List <string>(); tileEffectsParent.SetActive(true); foreach (var effect in effects) { if (listedEffects.Contains(effect.Name)) { continue; } listedEffects.Add(effect.Name); var effectText = Instantiate(tileEffectTextPrefab, tileEffectsParent?.transform); effectText.GetComponent <TextMeshProUGUI>().text = effect.Name; } } if (_subscribed) { return; } var eventMediator = FindObjectOfType <EventMediator>(); eventMediator.SubscribeToEvent(RefreshEvent, this); _subscribed = true; }