registry.cpp 2.7 KB

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