factory.cpp 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #include "factory.h"
  2. #include "archer.h"
  3. #include "ballista.h"
  4. #include "barracks.h"
  5. #include "builder.h"
  6. #include "catapult.h"
  7. #include "defense_tower.h"
  8. #include "elephant.h"
  9. #include "healer.h"
  10. #include "home.h"
  11. #include "horse_archer.h"
  12. #include "horse_spearman.h"
  13. #include "horse_swordsman.h"
  14. #include "spearman.h"
  15. #include "swordsman.h"
  16. #include "units/spawn_type.h"
  17. #include "units/unit.h"
  18. namespace Game::Units {
  19. void registerBuiltInUnits(UnitFactoryRegistry &reg) {
  20. reg.registerFactory(SpawnType::Archer, [](Engine::Core::World &world,
  21. const SpawnParams &params) {
  22. return Archer::Create(world, params);
  23. });
  24. reg.registerFactory(SpawnType::Knight, [](Engine::Core::World &world,
  25. const SpawnParams &params) {
  26. return Swordsman::Create(world, params);
  27. });
  28. reg.registerFactory(SpawnType::MountedKnight, [](Engine::Core::World &world,
  29. const SpawnParams &params) {
  30. return MountedKnight::Create(world, params);
  31. });
  32. reg.registerFactory(SpawnType::Spearman, [](Engine::Core::World &world,
  33. const SpawnParams &params) {
  34. return Spearman::Create(world, params);
  35. });
  36. reg.registerFactory(SpawnType::HorseArcher, [](Engine::Core::World &world,
  37. const SpawnParams &params) {
  38. return HorseArcher::Create(world, params);
  39. });
  40. reg.registerFactory(SpawnType::HorseSpearman, [](Engine::Core::World &world,
  41. const SpawnParams &params) {
  42. return HorseSpearman::Create(world, params);
  43. });
  44. reg.registerFactory(SpawnType::Healer, [](Engine::Core::World &world,
  45. const SpawnParams &params) {
  46. return Healer::Create(world, params);
  47. });
  48. reg.registerFactory(SpawnType::Catapult, [](Engine::Core::World &world,
  49. const SpawnParams &params) {
  50. return Catapult::Create(world, params);
  51. });
  52. reg.registerFactory(SpawnType::Ballista, [](Engine::Core::World &world,
  53. const SpawnParams &params) {
  54. return Ballista::Create(world, params);
  55. });
  56. reg.registerFactory(SpawnType::Elephant, [](Engine::Core::World &world,
  57. const SpawnParams &params) {
  58. return Elephant::Create(world, params);
  59. });
  60. reg.registerFactory(SpawnType::Builder, [](Engine::Core::World &world,
  61. const SpawnParams &params) {
  62. return Builder::Create(world, params);
  63. });
  64. reg.registerFactory(SpawnType::Barracks, [](Engine::Core::World &world,
  65. const SpawnParams &params) {
  66. return Barracks::Create(world, params);
  67. });
  68. reg.registerFactory(SpawnType::DefenseTower, [](Engine::Core::World &world,
  69. const SpawnParams &params) {
  70. return DefenseTower::create(world, params);
  71. });
  72. reg.registerFactory(SpawnType::Home, [](Engine::Core::World &world,
  73. const SpawnParams &params) {
  74. return Home::Create(world, params);
  75. });
  76. }
  77. } // namespace Game::Units