aboutsummaryrefslogtreecommitdiff
path: root/examples/basic/src/enemy_creator.hpp
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2022-05-06 18:23:42 +0200
committerHampusM <hampus@hampusmat.com>2022-05-06 18:23:55 +0200
commit3957dfb9361e864f6362e59655c885f52b39371f (patch)
tree5ef55a5eb418664b4a5c0d2d9328ff4ca99a74a7 /examples/basic/src/enemy_creator.hpp
parentd8ea3721d83254e91c5617d83f2aac5a897107fb (diff)
docs: add tagging to basic examplev0.1.3
Diffstat (limited to 'examples/basic/src/enemy_creator.hpp')
-rw-r--r--examples/basic/src/enemy_creator.hpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/examples/basic/src/enemy_creator.hpp b/examples/basic/src/enemy_creator.hpp
new file mode 100644
index 0000000..a220008
--- /dev/null
+++ b/examples/basic/src/enemy_creator.hpp
@@ -0,0 +1,29 @@
+#pragma once
+
+#include "interfaces/enemy.hpp"
+#include "interfaces/enemy_creator.hpp"
+
+#include <yacppdic/auto_wirable.hpp>
+#include <yacppdic/tagged.hpp>
+
+class EnemyCreator : public IEnemyCreator,
+ public yacppdic::AutoWirable<
+ IEnemyCreator,
+ EnemyCreator,
+ yacppdic::Tagged<IEnemyFactory, SMALL_ENEMY_TAG>,
+ yacppdic::Tagged<IEnemyFactory, BIG_ENEMY_TAG>>
+{
+public:
+ EnemyCreator(
+ IEnemyFactory small_enemy_factory,
+ IEnemyFactory big_enemy_factory
+ ) noexcept;
+
+ std::unique_ptr<IEnemy> create_small_enemy() noexcept override;
+
+ std::unique_ptr<IEnemy> create_big_enemy() noexcept override;
+
+private:
+ IEnemyFactory _small_enemy_factory;
+ IEnemyFactory _big_enemy_factory;
+};