using System;
using UnityEngine;

namespace Nox.Game {
    [CreateAssetMenu(fileName = "CharacterBaseSettings", menuName = "Nox/Database/Entities/CharacterBaseSettings")]
    public class StarterCharacterSettings: ScriptableObject {
        [Header("Character Creation Defaults")]
        public DistributionPointsPerClass[] distributionPointsPerClass;
        public EntityAttributes defaultEntityAttributes;
        public EntityStats defaultEntityStats;
        public PerksData defaultPerksData;
        public ModifiersData defaultModifiersData;

        [Header("General Racial Bonuses and Perks per Class")]
        public RacialBonuses [] racialBonuses;
        public ClassBonuses [] classBonuses;

        [Header("Party System Defaults")]
        public int maxPartySize = 4;
    }

    [Serializable]
    public sealed class RacialBonuses {
        public CharacterRace race;
        public EntityAttributes bonusAttributes;
        public EntityStats bonusStats;
        public PerksData startingPerks;
        public ModifiersData permanentModifiers;
    }

    [Serializable]
    public sealed class ClassBonuses {
        public CharacterClass @class;
        public EntityAttributes bonusAttributes;
        public EntityStats bonusStats;
        public PerksData startingPerks;
        public ModifiersData permanentModifiers;
    }

    [Serializable]
    public sealed class DistributionPointsPerClass {
        public CharacterClass @class;
        public int points;
    }
}
