Files
2025TapTapGameJam/Assets/Script/Gameplay/Player/PlayerController.cs

100 lines
2.6 KiB
C#

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<Card> 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<PlayerMoveController>();
playerCameraController = GetComponent<PlayerCameraController>();
playerCardsController = GetComponent<PlayerCardsController>();
CurrentHealth = MaxHealth;
MyCardBook = new CardBook(cardBookData);
Cards = new List<Card>();
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();
}
}
}