namespace Nox.Game {

    public interface ICharacterSystems {
        IPerkFactory PerkFactory { get; }
        IModifiersFactory ModifiersFactory { get; }
        IModifierResolver ModifierResolver { get; }
        ICharacterFactory CharacterFactory { get; }
        IPartyFactory PartyFactory { get; }
    }

    public sealed class CharacterSystems : ICharacterSystems {
        public CharacterSystems(IPerkFactory perkFactory, IModifiersFactory modifiersFactory, IModifierResolver modifierResolver, ICharacterFactory characterFactory, IPartyFactory partyFactory) {
            ModifiersFactory = modifiersFactory;
            ModifierResolver = modifierResolver;
            PerkFactory = perkFactory;
            CharacterFactory = characterFactory;
            PartyFactory = partyFactory;
        }

        public IPerkFactory PerkFactory { get; }
        public IModifiersFactory ModifiersFactory { get; }
        public IModifierResolver ModifierResolver { get; }
        public ICharacterFactory CharacterFactory { get; }
        public IPartyFactory PartyFactory { get; }
    }
}
