using UnityEngine; using System.Collections.Generic; using System.Linq; using System; public class CardManager : MonoBehaviour { public static CardManager Instance; [SerializeField] private List cardPrefabs; [SerializeField] private Transform cardsParent; private PlayerSkillTree playerSkillTree; private GameObject cards; private void Awake() { if (Instance == null) { Instance = this; } else { Destroy(gameObject); } } private void Start() { playerSkillTree = PlayerSkillTree.Instance; cards = GameObject.Find("Cards"); cards.SetActive(false); } public void Update() { if (Input.GetKeyDown(KeyCode.V)) { cards.SetActive(true); ShowRandomCards(3); } } public void ShowRandomCards(int count) { var unlockedSkills = playerSkillTree.GetPlayerSkills(); // Projdeme všechny prefaby a zkontrolujeme jejich skill var availableCards = cardPrefabs .Select(x => x.GetComponent()) .Where(x => x != null && !unlockedSkills.Contains(x.Skill)) .ToList(); // Vyčistíme staré karty foreach (Transform child in cardsParent) { Destroy(child.gameObject); } // Vybereme náhodné karty var shuffled = availableCards.OrderBy(x => UnityEngine.Random.value).Take(count).ToList(); Debug.Log($"Showing cards: {string.Join(", ", shuffled.Select(x => x.Skill))}"); Debug.Log($"Available cards: {string.Join(", ", availableCards.Select(x => x.Skill))}"); Debug.Log($"Unlocked skills: {string.Join(", ", unlockedSkills)}"); int xOffset = -800; if (availableCards.Count < 3) { xOffset = -400; } foreach (var cardUI in shuffled) { var newCard = Instantiate(cardUI.gameObject, cardsParent.position + new Vector3(xOffset, 0, 0), Quaternion.identity, cardsParent); xOffset += 800; } } public void SelectCard(PlayerSkillTree.Skills skill) { playerSkillTree.UnlockSkill(skill); foreach (Transform child in cardsParent) { var cardUI = child.GetComponent(); if (cardUI.Skill == skill) { Destroy(child.gameObject); } } cards.SetActive(false); } }