registry.cpp 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #include "registry.h"
  2. #include "../scene_renderer.h"
  3. #include "ballista_renderer.h"
  4. #include "barracks_renderer.h"
  5. #include "catapult_renderer.h"
  6. #include "defense_tower_renderer.h"
  7. #include "nations/carthage/archer_renderer.h"
  8. #include "nations/carthage/ballista_renderer.h"
  9. #include "nations/carthage/builder_renderer.h"
  10. #include "nations/carthage/catapult_renderer.h"
  11. #include "nations/carthage/healer_renderer.h"
  12. #include "nations/carthage/horse_archer_renderer.h"
  13. #include "nations/carthage/horse_spearman_renderer.h"
  14. #include "nations/carthage/horse_swordsman_renderer.h"
  15. #include "nations/carthage/spearman_renderer.h"
  16. #include "nations/carthage/swordsman_renderer.h"
  17. #include "nations/roman/archer_renderer.h"
  18. #include "nations/roman/ballista_renderer.h"
  19. #include "nations/roman/builder_renderer.h"
  20. #include "nations/roman/catapult_renderer.h"
  21. #include "nations/roman/healer_renderer.h"
  22. #include "nations/roman/horse_archer_renderer.h"
  23. #include "nations/roman/horse_spearman_renderer.h"
  24. #include "nations/roman/horse_swordsman_renderer.h"
  25. #include "nations/roman/spearman_renderer.h"
  26. #include "nations/roman/swordsman_renderer.h"
  27. #include <string>
  28. #include <utility>
  29. namespace Render::GL {
  30. void EntityRendererRegistry::register_renderer(const std::string &type,
  31. RenderFunc func) {
  32. m_map[type] = std::move(func);
  33. }
  34. auto EntityRendererRegistry::get(const std::string &type) const -> RenderFunc {
  35. auto it = m_map.find(type);
  36. if (it != m_map.end()) {
  37. return it->second;
  38. }
  39. return {};
  40. }
  41. void registerBuiltInEntityRenderers(EntityRendererRegistry &registry) {
  42. Roman::register_archer_renderer(registry);
  43. Carthage::register_archer_renderer(registry);
  44. Roman::register_spearman_renderer(registry);
  45. Carthage::register_spearman_renderer(registry);
  46. Roman::register_knight_renderer(registry);
  47. Carthage::register_knight_renderer(registry);
  48. Roman::register_mounted_knight_renderer(registry);
  49. Carthage::register_mounted_knight_renderer(registry);
  50. Roman::register_horse_archer_renderer(registry);
  51. Carthage::register_horse_archer_renderer(registry);
  52. Roman::register_horse_spearman_renderer(registry);
  53. Carthage::register_horse_spearman_renderer(registry);
  54. Roman::register_healer_renderer(registry);
  55. Carthage::register_healer_renderer(registry);
  56. Roman::register_builder_renderer(registry);
  57. Carthage::register_builder_renderer(registry);
  58. register_catapult_renderer(registry);
  59. register_ballista_renderer(registry);
  60. register_barracks_renderer(registry);
  61. register_defense_tower_renderer(registry);
  62. }
  63. } // namespace Render::GL