diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Texture.cpp | 52 | ||||
-rw-r--r-- | src/ui.cpp | 1 |
2 files changed, 39 insertions, 14 deletions
diff --git a/src/Texture.cpp b/src/Texture.cpp index 2965959..f688327 100644 --- a/src/Texture.cpp +++ b/src/Texture.cpp @@ -6,6 +6,12 @@ struct texture_t { GLuint tex; } __attribute__ ((packed)); +struct index_t{ + Color color; + int indexx; + int indexy; +}; + struct texture_t *LoadedTexture[256]; unsigned int LoadedTextureCounter = 0; @@ -70,16 +76,21 @@ namespace Texture{ glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, colorIndex); GLubyte* buffer = new GLubyte[8*4*3]; - glGetTexImage(GL_TEXTURE_2D, 0, GL_RGBA, GL_UNSIGNED_BYTE, buffer); + glGetTexImage(GL_TEXTURE_2D, 0, GL_RGB, GL_UNSIGNED_BYTE, buffer); + GLfloat* bufferf = new GLfloat[8*4*3]; + for(uint iu = 0; iu < 8*4*3; iu++){ + bufferf[iu] = float(buffer[iu]) / 255.0f; + } uint i = 0; - for(uint o = 0; o < 8; o++){ - for(uint t = 0; t < 4; t++){ - for (int r = 0; r < 3; r++){ - pixels[o][t].red = buffer[i++]; - pixels[o][t].green = buffer[i++]; - pixels[o][t].blue = buffer[i++]; - std::cout << pixels[o][t].red << "," << pixels[o][t].green << "," << pixels[o][t].blue << std::endl; - } + for(uint y = 0; y < 8; y++){ + for(uint x = 0; x < 4; x++){ + if(i >= 8*4*3){ + return; + } + pixels[y][x].red = buffer[i++]; + pixels[y][x].green = buffer[i++]; + pixels[y][x].blue = buffer[i++]; + std::cout << pixels[y][x].red << "," << pixels[y][x].green << "," << pixels[y][x].blue << std::endl; //std::cout << std::endl; } } @@ -87,21 +98,34 @@ namespace Texture{ } //sqrt((255-145)^2+(90-145)^2+(0-0)^2); + std::vector<index_t>ind; vec2 getIndex(Color c){ + for(auto &i : ind){ + if(c.red == i.color.red && c.green == i.color.green && c.blue == i.color.blue){ + //std::cout << float(i.indexy) << "," << float(i.indexx) << std::endl; + return {float(i.indexx), float(i.indexy)}; + } + } uint buf[2]; float buff = 999; float shit = 999; - for(uint o = 0; o < 8; o++){ - for(uint t = 0; t < 4; t++){ - buff = sqrt(pow((c.red-pixels[o][t].red),2)+pow((c.green-pixels[o][t].green),2)+pow((c.blue-pixels[o][t].blue),2)); + for(uint y = 0; y < 8; y++){ + for(uint x = 0; x < 4; x++){ + std::cout << y << "," << x << ":" << pixels[y][x].red << "," << pixels[y][x].green << "," << pixels[y][x].blue << std::endl; + buff = sqrt(pow((pixels[y][x].red- c.red), 2)+ + pow((pixels[y][x].green-c.green),2)+ + pow((pixels[y][x].blue- c.blue), 2)); //std::cout << buff << std::endl; if(buff < shit){ shit = buff; - buf[0] = o; - buf[1] = t; + buf[0] = y; + buf[1] = x; } + // + //std::cout << shit << std::endl; } } + ind.push_back({c, (int)buf[1], (int)buf[0]}); std::cout << float(buf[1]) << ", " << float(buf[0]) << std::endl; return {float(buf[1]),float(buf[0])}; } @@ -835,6 +835,7 @@ DONE: break; case SDLK_b: currentWorld->addStructure(FIRE_PIT, player->loc.x, player->loc.y, NULL); + currentWorld->addLight({player->loc.x + SCREEN_WIDTH/2, player->loc.y},{1.0f,1.0f,1.0f}); break; case SDLK_F12: std::cout << "Took screenshot" << std::endl; |