Implement Json loading for screens and fix a bug in widget-creation

This commit is contained in:
2021-01-16 16:49:26 +01:00
parent 2c183dc099
commit 938450ce75
13 changed files with 118 additions and 50 deletions

View File

@@ -1,20 +1,14 @@
#include "Screen.h"
Screen::Screen(screenType p_type, Framebuffer *framebuffer, ShaderProgram *shaderProgram) :
type(p_type), framebuffer(framebuffer), shaderProgram(shaderProgram)
{
switch(type) {
case loadingScreen: {
Texture *temp_loadingScreenTex = new Texture("res/textures/loading.png", textureType::texture_diffuse);
textures.push_back(temp_loadingScreenTex);
Widget *temp_loadingScreenWidget = new Widget(temp_loadingScreenTex, 0.f, 0.f, 1.f, 1.f);
widgets.push_back(temp_loadingScreenWidget);
break;
}
uint32_t Screen::id_counter = 0;
default:
break;
}
Screen::Screen(std::string &name, std::vector<Widget*> widgets, Framebuffer *framebuffer, ShaderProgram *shaderProgram) :
unique_name(name),
framebuffer(framebuffer),
shaderProgram(shaderProgram),
widgets(widgets)
{
id = id_counter++;
}
Screen::~Screen()
@@ -28,6 +22,11 @@ Screen::~Screen()
}
}
std::string Screen::getUniqueName()
{
return unique_name;
}
void Screen::addWidget(Widget *widget)
{
widgets.push_back(widget);
@@ -37,7 +36,6 @@ void Screen::draw()
{
framebuffer->setExposureCorrection(false);
framebuffer->bind();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
for(auto it = widgets.begin(); it != widgets.end(); it++) {
(*it)->draw(shaderProgram);