PlacedObjectEncyclopediaArticleUi.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. using Sirenix.OdinInspector;
  6. using TMPro;
  7. using KairoEngine.Core;
  8. using KairoEngine.UI.Encyclopedia;
  9. using KairoEngine.Stockpiles;
  10. namespace KairoEngine.Grids
  11. {
  12. public class PlacedObjectEncyclopediaArticleUi : MonoBehaviour, IEncyclopediaArticleDataView
  13. {
  14. public GameObject resourceUiPrefab;
  15. public TextMeshProUGUI titleText;
  16. public TextMeshProUGUI categoryText;
  17. public TextMeshProUGUI descriptionText;
  18. public Image iconImage;
  19. public Transform resourcesContainer;
  20. public void Setup(EncyclopediaArticle article)
  21. {
  22. if(titleText != null) titleText.text = article.title;
  23. article.content.TryGetValue("category", out string category);
  24. if(categoryText != null) categoryText.text = category;
  25. if(descriptionText != null) descriptionText.text = article.description;
  26. article.images.TryGetValue("image", out Sprite image);
  27. if(iconImage != null) iconImage.sprite = image;
  28. article.integers.TryGetValue("cost-slots", out int resourceCount);
  29. foreach (var item in resourcesContainer.transform.GetComponentsInChildren<VerticalLayoutGroup>())
  30. {
  31. if(item.transform != resourcesContainer) DestroyImmediate(item.gameObject);
  32. }
  33. for (int i = 0; i < resourceCount; i++)
  34. {
  35. article.content.TryGetValue($"cost-{i}-type", out string resourceName);
  36. article.images.TryGetValue($"cost-{i}-icon", out Sprite resourceSprite);
  37. article.integers.TryGetValue($"cost-{i}-value", out int resourceValue);
  38. var obj = Instantiate(resourceUiPrefab, resourcesContainer);
  39. obj.GetComponentInChildren<Image>().sprite = resourceSprite;
  40. obj.GetComponentInChildren<TextMeshProUGUI>().text = resourceValue.ToString();
  41. obj.name = resourceName;
  42. }
  43. }
  44. }
  45. }