Files
3DBlobici-WorkingTitle/3D blobici/Assets/Scripts/Cards/CardManager.cs

97 lines
2.5 KiB
C#
Raw Normal View History

using UnityEngine;
using System.Collections.Generic;
using System.Linq;
using System;
public class CardManager : MonoBehaviour
{
public static CardManager Instance;
[SerializeField] private List<GameObject> 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<CardUI>())
.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<CardUI>();
if (cardUI.Skill == skill)
{
Destroy(child.gameObject);
}
}
cards.SetActive(false);
}
}