Newer
Older
TheVengeance-Project-IADE-Unity2D / Assets / Scripts / Player / Stats / Stats.cs

namespace MyCollections.Stats
{
    public enum StatType
    {
        Attack,
        Defense,
        Health,
        Mana
    }

    public class Stats
    {
        private readonly BaseStats baseStats;
        private readonly StatsMediator mediator;

        public StatsMediator Mediator => mediator;

        public int Attack
        {
            get
            {
                Query query = new Query(StatType.Attack, baseStats.attack);
                mediator.PerformQuery(this, query);
                return (int)query.value;
            }
        }

        public int Defense
        {
            get
            {
                Query query = new Query(StatType.Defense, baseStats.defense);
                mediator.PerformQuery(this, query);
                return (int)query.value;

            }
        }

        public int Health
        {
            get
            {
                Query query = new Query(StatType.Health, baseStats.health);
                mediator.PerformQuery(this, query);
                return (int)query.value;
            }
        }

        public float Mana
        {
            get
            {
                Query query = new Query(StatType.Health, baseStats.mana);
                mediator.PerformQuery(this, query);
                return query.value;
            }
        }

        public Stats(StatsMediator mediator, BaseStats baseStats)
        {
            this.mediator = mediator;
            this.baseStats = baseStats;
        }

        //Debugging purposes
        public override string ToString() => $"Attack: {Attack}, Defende: {Defense}";
    }
}