Skill Logic
Implemented basic UI for skills to player
This commit is contained in:
97
3D blobici/Assets/Scripts/Cards/CardManager.cs
Normal file
97
3D blobici/Assets/Scripts/Cards/CardManager.cs
Normal file
@@ -0,0 +1,97 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
2
3D blobici/Assets/Scripts/Cards/CardManager.cs.meta
Normal file
2
3D blobici/Assets/Scripts/Cards/CardManager.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ac4402de23efee441a6fe1c443a1f3ed
|
||||
23
3D blobici/Assets/Scripts/Cards/CardUI.cs
Normal file
23
3D blobici/Assets/Scripts/Cards/CardUI.cs
Normal file
@@ -0,0 +1,23 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using TMPro;
|
||||
|
||||
public class CardUI : MonoBehaviour
|
||||
{
|
||||
[SerializeField] private string cardname;
|
||||
[SerializeField] private PlayerSkillTree.Skills skill;
|
||||
|
||||
public PlayerSkillTree.Skills Skill { get => skill; private set => skill = value; }
|
||||
public string Name { get => cardname; private set => cardname = value; }
|
||||
|
||||
private void Start()
|
||||
{
|
||||
Skill = skill;
|
||||
GetComponent<Button>().onClick.AddListener(OnCardClicked);
|
||||
}
|
||||
|
||||
private void OnCardClicked()
|
||||
{
|
||||
CardManager.Instance.SelectCard(Skill);
|
||||
}
|
||||
}
|
||||
2
3D blobici/Assets/Scripts/Cards/CardUI.cs.meta
Normal file
2
3D blobici/Assets/Scripts/Cards/CardUI.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0da9907611db3a04382aa4902957927c
|
||||
Reference in New Issue
Block a user