chainreaction/layer.cpp

46 lines
887 B
C++

#include <typeinfo>
#include "layer.hpp"
using namespace game;
using namespace std;
using namespace bwidgets;
ui::Layer::Layer(widget::Widget* parent)
: Widget(parent)
{
}
void ui::Layer::_handle_font_change(core::Font* f)
{
_for_widgets([f](Widget& w) {
try {
auto& handler = dynamic_cast<FontHandler&>(w);
handler.font(f);
} catch (const std::bad_cast&) {}
});
}
ui::Layer* ui::Layer::handle_event(const SDL_Event& e)
{
_for_widgets([e](Widget& w) {
w.handle_event(e);
});
return this;
}
void ui::Layer::_handle_renderer_change(core::Renderer* r)
{
_for_widgets([r](Widget& w) {
w.renderer(r);
});
}
void ui::Layer::_handle_rendering()
{
_for_widgets([](Widget& w) {
w.render();
});
}