using System; using System.Collections.Generic; using CIG.Translation; using CIGEnums; using SUISS.Core; using SUISSEngine; using UnityEngine; using UnityEngine.UI; public class BuildingInfoPopupView : PopupBaseView { public override void Init() { base.Init(); BuildingProperty[] allRequiredBuildingProperties = ((BuildingInfoPopupState)this.State).AllRequiredBuildingProperties; int num = allRequiredBuildingProperties.Length; for (int i = 0; i < num; i++) { this._buildingPropertyToInfoRowsMap.Add(allRequiredBuildingProperties[i], this.CreateBuildingInfoRow(allRequiredBuildingProperties[i])); } this._marginAffector.FindElements(); } public void UpdateInfo(Building building) { this._title.LocalizedString = building.LocalName; this._textPropertyTextHolder.SetActive(building.ShownProperties.Contains(BuildingProperty.Text)); foreach (KeyValuePair keyValuePair in this._buildingPropertyToInfoRowsMap) { keyValuePair.Value.gameObject.SetActive(building.ShownProperties.Contains(keyValuePair.Key)); } this._marginAffector.Recalculate(); } public void HideUpgradeButton() { this._costButton.SetActive(false); } public void SetUpgradeCosts(Currencies cost) { this._costButton.SetActive(true); if (cost.IsEmpty()) { this._costButtonCurrencyImage.gameObject.SetActive(false); this._costButtonText.LocalizedString = Localization.Key("free"); } else { string currency; UISpriteType key; if (cost.ContainsPositive("Gold")) { currency = "Gold"; key = UISpriteType.GoldSmall; } else { currency = "Cash"; key = UISpriteType.CashSmall; } this._costButtonText.LocalizedString = Localization.Integer(cost.GetValue(currency)); this._costButtonCurrencyImage.gameObject.SetActive(true); this._costButtonCurrencyImage.sprite = SingletonMonobehaviour.Instance.GetAsset(key); } } public void HideSubtitle() { this._subtitle.gameObject.SetActive(false); } public void SetSubtitle(ILocalizedString text) { this._subtitle.gameObject.SetActive(true); this._subtitle.LocalizedString = text; } public void SetInfoLine(BuildingProperty property, ILocalizedString value, ILocalizedString bonus) { BuildingInfoRow buildingInfoRow; if (property == BuildingProperty.Text) { this._textPropertyText.LocalizedString = value; } else if (this._buildingPropertyToInfoRowsMap.TryGetValue(property, out buildingInfoRow)) { buildingInfoRow.SetRowInfo(value, bonus); } else { UnityEngine.Debug.LogWarningFormat("Property Row `{0}` not set up!", new object[] { property }); } } public void SetBuildingSprites(Building building) { this._buildingImage.sprite = building.GetComponent().sprite; SpriteRenderer bottomRenderer = building.GetComponent().bottomRenderer; Sprite sprite = (!(bottomRenderer == null) && !(bottomRenderer.sprite == null)) ? bottomRenderer.sprite : null; this._buildingBottomImage.sprite = sprite; this._buildingBottomImage.gameObject.SetActive(sprite != null); } public void SetBuildingSize(GridSize size) { this._buildingSizeText.gameObject.SetActive(true); this._buildingSizeText.text = string.Format("{0} x {1}", size.u, size.v); } public void HideBuildingSize() { this._buildingSizeText.gameObject.SetActive(false); } public void OnRequestPurchaseButtonClicked() { if (!base.PopupState.Closed) { ((BuildingInfoPopupState)this.State).RequestPurchase(); } } private BuildingInfoRow CreateBuildingInfoRow(BuildingProperty property) { BuildingInfoRow buildingInfoRow = UnityEngine.Object.Instantiate(this._buildingRowInfoPrefab, this._rowsHolder, false); buildingInfoRow.Init(property); return buildingInfoRow; } [SerializeField] [Header("Property Resources")] private BuildingInfoRow _buildingRowInfoPrefab; [SerializeField] private GameObject _textPropertyTextHolder; [SerializeField] private LocalizedText _textPropertyText; [SerializeField] [Header("Links")] private Image _buildingImage; [SerializeField] private Image _buildingBottomImage; [SerializeField] private Text _buildingSizeText; [SerializeField] private LocalizedText _title; [SerializeField] private MarginsAffector _marginAffector; [SerializeField] private LocalizedText _subtitle; [SerializeField] private GameObject _costButton; [SerializeField] private LocalizedText _costButtonText; [SerializeField] private Image _costButtonCurrencyImage; [SerializeField] private Transform _rowsHolder; private Dictionary _buildingPropertyToInfoRowsMap = new Dictionary(); }