#include "defense_tower_renderer.h" #include "../../game/core/component.h" #include "../../game/systems/nation_id.h" #include "nations/carthage/defense_tower_renderer.h" #include "nations/roman/defense_tower_renderer.h" #include "registry.h" namespace Render::GL { void register_defense_tower_renderer(EntityRendererRegistry ®istry) { Roman::register_defense_tower_renderer(registry); Carthage::register_defense_tower_renderer(registry); registry.register_renderer( "defense_tower", [®istry](const DrawContext &p, ISubmitter &out) { if (p.entity == nullptr) { return; } auto *unit = p.entity->get_component(); if (unit == nullptr) { return; } std::string renderer_key; switch (unit->nation_id) { case Game::Systems::NationID::Carthage: renderer_key = "defense_tower_carthage"; break; case Game::Systems::NationID::RomanRepublic: renderer_key = "defense_tower_roman"; break; default: renderer_key = "defense_tower_roman"; break; } auto renderer = registry.get(renderer_key); if (renderer) { renderer(p, out); } }); } } // namespace Render::GL