CardGame
Rogue-like card videogame
Loading...
Searching...
No Matches
cardFactory.h
Go to the documentation of this file.
1#ifndef CARDFACTORY_H
2#define CARDFACTORY_H
3
4#include "ICardFactory.h"
5#include "cardsLoader.h"
6
7#include <string_view>
8#include <unordered_map>
9
10class CardDefinition;
11class CardInstance;
12
24{
25 public:
28
38 void registerDefinition(std::string_view cardId,
39 std::unique_ptr<CardDefinition> uniqueCardDefinition);
40
46 void registerCards();
47
57 std::unique_ptr<CardInstance> makeSingleCard(const std::string& cardId) const override;
58
61
62 private:
64 std::unordered_map<std::string, std::unique_ptr<CardDefinition>> m_cardMap;
65 CardsLoader m_cardsLoader;
66};
67
68#endif // CARDFACTORY_H
Immutable static data representing a card type.
Definition: cardDefinition.h:27
Factory responsible for creating runtime CardInstances.
Definition: cardFactory.h:24
void registerCards()
Populates the factory with all static card definitions.
Definition: cardFactory.cpp:36
CardFactory()
Constructs and registers all cards at startup.
Definition: cardFactory.cpp:18
~CardFactory()
Destructor.
Definition: cardFactory.cpp:20
std::unique_ptr< CardInstance > makeSingleCard(const std::string &cardId) const override
Creates a new CardInstance based on the registered definition.
Definition: cardFactory.cpp:64
void registerDefinition(std::string_view cardId, std::unique_ptr< CardDefinition > uniqueCardDefinition)
Registers a new card definition.
Definition: cardFactory.cpp:22
Represents a runtime instance of a card during combat.
Definition: cardInstance.h:21
Definition: cardsLoader.h:10
Interface for card instance creation.
Definition: ICardFactory.h:17