using System.ComponentModel.DataAnnotations;
using Pet.Companion.Models.Enums;

namespace Pet.Companion.Models
{
    public class Pet
    {
        [Key]
        public string Id { get; set; }
        public string Name { get; set; }
        public PetClass Class { get; set; }
        public PetStats Stats { get; set; }
        public Resources Resources { get; set; }
        public Inventory Inventory { get; set; }
        public int Level { get; set; }
        public int Experience { get; set; }
        public int Health { get; set; }
        public int MaxHealth { get; set; }
        public string UserId { get; set; }
        public bool IsDead { get; set; }

        public PetActionGather PetGatherAction { get; set; }
        public DateTime GatherActionSince { get; set; }

        public PetBasicAction PetBasicAction { get; set; }
        public DateTime BasicActionCooldown { get; set; }

        public Dictionary<EquipmentSlot, EquipableItem> Equipment { get; set; } = new();

        public Pet()
        {
            foreach (EquipmentSlot slot in Enum.GetValues(typeof(EquipmentSlot)))
            {
                Equipment[slot] = null;
            }
        }

        public void IncrementIntelligence(int amount)
        {
            var newValue = Stats.Intelligence + amount;
            Stats.Intelligence = Math.Min(newValue, Stats.MaxIntelligence);
        }

        public void IncrementStrength(int amount)
        {
            var newValue = Stats.Strength + amount;
            Stats.Strength = Math.Min(newValue, Stats.MaxStrength);
        }

        public void IncrementCharisma(int amount)
        {
            var newValue = Stats.Charisma + amount;
            Stats.Charisma = Math.Min(newValue, Stats.MaxCharisma);
        }
    }
}