Refactoring the GUECS UI::render and the components so that it's just calling a .render on each one. This will then let me allow registering any components people want.
This commit is contained in:
parent
a9e219ea96
commit
4d71f552aa
7 changed files with 108 additions and 69 deletions
|
@ -66,12 +66,12 @@ namespace guecs {
|
|||
shader.init(cell);
|
||||
});
|
||||
|
||||
query<Rectangle, Meter>([](auto, auto& bg, auto &meter) {
|
||||
bg.shape->setFillColor(meter.color);
|
||||
});
|
||||
|
||||
query<lel::Cell, Meter>([](auto, auto &cell, auto& meter) {
|
||||
meter.init(cell);
|
||||
query<lel::Cell, Meter>([this](auto ent, auto &cell, auto& meter) {
|
||||
if(auto bg = get_if<Rectangle>(ent)) {
|
||||
meter.init(cell, *bg);
|
||||
} else {
|
||||
meter.init(cell);
|
||||
}
|
||||
});
|
||||
|
||||
query<lel::Cell, Textual>([this](auto, auto& cell, auto& text) {
|
||||
|
@ -98,34 +98,46 @@ namespace guecs {
|
|||
});
|
||||
}
|
||||
|
||||
sf::Shader* UI::find_shader(Entity ent, bool is_shape) {
|
||||
if(auto shader = get_if<Effect>(ent)) {
|
||||
return shader->get_shader(is_shape);
|
||||
} else {
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
void UI::render(sf::RenderWindow& window) {
|
||||
if(auto bg = get_if<Background>(MAIN)) {
|
||||
window.draw(*(bg->shape));
|
||||
bg->render(window);
|
||||
}
|
||||
|
||||
query<Effect>([&](auto, auto& shader) {
|
||||
if(shader.$active) shader.step();
|
||||
if(shader.$active) shader.render();
|
||||
});
|
||||
|
||||
query<Rectangle>([&](auto ent, auto& rect) {
|
||||
render_helper(window, ent, true, rect.shape);
|
||||
auto shader_ptr = find_shader(ent, true);
|
||||
rect.render(window, shader_ptr);
|
||||
});
|
||||
|
||||
query<lel::Cell, Meter>([&](auto ent, auto& cell, auto &meter) {
|
||||
meter.render(cell);
|
||||
render_helper(window, ent, true, meter.bar.shape);
|
||||
auto shader_ptr = find_shader(ent, true);
|
||||
meter.render(cell, window, shader_ptr);
|
||||
});
|
||||
|
||||
query<Sprite>([&](auto ent, auto& sprite) {
|
||||
render_helper(window, ent, false, sprite.sprite);
|
||||
auto shader_ptr = find_shader(ent, false);
|
||||
sprite.render(window, shader_ptr);
|
||||
});
|
||||
|
||||
query<Label>([&](auto ent, auto& text) {
|
||||
render_helper(window, ent, false, text.text);
|
||||
auto shader_ptr = find_shader(ent, false);
|
||||
text.render(window, shader_ptr);
|
||||
});
|
||||
|
||||
query<Textual>([&](auto ent, auto& text) {
|
||||
render_helper(window, ent, false, text.text);
|
||||
auto shader_ptr = find_shader(ent, false);
|
||||
text.render(window, shader_ptr);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -157,8 +169,8 @@ namespace guecs {
|
|||
});
|
||||
|
||||
do_if<Sound>(ent, [hover](auto& sound) {
|
||||
// here set that it played then only play once
|
||||
sound.stop(hover);
|
||||
// here set that it played then only play once
|
||||
sound.stop(hover);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue