using System; using System.Collections.Generic; using System.Linq; using Gameplay; using Interface; using UnityEngine; using Core; namespace Gameplay.Player { public class PlayerController : MonoBehaviour, ICharacter { public int MaxHealth { get; set; } = 100; public int CurrentHealth { get; private set; } [SerializeField] private CardBookData cardBookData; public CardBook MyCardBook { get; private set; } public List Cards { get; private set; } private int currentCardIndex = 0; public bool IsFlight { get; private set; } public bool IsDead { get; private set; } private PlayerMoveController playerMoveController; private PlayerCameraController playerCameraController; public PlayerCardsController playerCardsController; private void Awake() { playerMoveController = GetComponent(); playerCameraController = GetComponent(); playerCardsController = GetComponent(); CurrentHealth = MaxHealth; MyCardBook = new CardBook(cardBookData); Cards = new List(); ControllerLocator.Instance.Register(this); } private void Start() { Cards.Add(CardLoader.GetCardByID(1)); Cards.Add(CardLoader.GetCardByID(2)); } public void TakeDamage(int damage) { CurrentHealth -= damage; } public void Heal(int heal) { CurrentHealth += heal; if (CurrentHealth > MaxHealth) { CurrentHealth = MaxHealth; } } public void StartCombat() { Debug.Log("Player StartCombat"); IsFlight = true; playerMoveController.SetSpeed(0.5f); playerCardsController.GenerateCards(Cards); } public void EndFlight() { Debug.Log("Player EndFlight"); IsFlight = false; playerMoveController.ResetSpeed(); playerCardsController.ClearCards(); } public bool HasCardsLeft() { return currentCardIndex < Cards.Count; } public Card GetNextCard() { if (!HasCardsLeft()) { return null; } return Cards[currentCardIndex++]; } public void InitializeDeckCycle() { Cards = MyCardBook.GetCards().ToList(); } } }