]> code.bitgloo.com Git - clyne/gamedev.git/commitdiff
Color Index can be used to color anything with a solid color
authordrumsetmonkey <abelleisle@roadrunner.com>
Tue, 19 Jan 2016 18:20:45 +0000 (13:20 -0500)
committerdrumsetmonkey <abelleisle@roadrunner.com>
Tue, 19 Jan 2016 18:20:45 +0000 (13:20 -0500)
include/entities.h
main.cpp
src/Texture.cpp
src/ui.cpp
xcf/player.xcf

index 51032efb1f9969e661c2a926532442ade04e341e..edf7022227d7339dc0de3444d8fad2437ce223ed 100644 (file)
@@ -88,15 +88,18 @@ public:
                //glColor3f(color.red,color.green,color.blue);
                glActiveTexture(GL_TEXTURE0);
                glBindTexture(GL_TEXTURE_2D, colorIndex);
+               glUseProgram(shaderProgram);
+               glUniform1i(glGetUniformLocation(shaderProgram, "sampler"), 0);
                glEnable(GL_TEXTURE_2D);
                glColor3ub(255,255,255);
                glBegin(GL_QUADS);
-                       glTexCoord2f(.25*index.x, .125*(index.y + 1));          glVertex2i(loc.x, loc.y);
-                       glTexCoord2f(.25*(index.x+1), .125*(index.y + 1));      glVertex2i(loc.x + width, loc.y);
-                       glTexCoord2f(.25*(index.x+1), .125*index.y);            glVertex2i(loc.x + width, loc.y + height);
-                       glTexCoord2f(.25*index.x, .125*index.y);                        glVertex2i(loc.x, loc.y + width);
+                       glTexCoord2f(.25*index.x, .126*index.y);        glVertex2i(loc.x, loc.y);
+                       glTexCoord2f(.26*index.x, .126*index.y);        glVertex2i(loc.x + width, loc.y);
+                       glTexCoord2f(.26*index.x, .125*index.y);        glVertex2i(loc.x + width, loc.y + height);
+                       glTexCoord2f(.25*index.x, .125*index.y);        glVertex2i(loc.x, loc.y + width);
                glEnd();
                glDisable(GL_TEXTURE_2D);
+               glUseProgram(0);
                //glRectf(loc.x,loc.y,loc.x+width,loc.y+height);
        }
        bool kill(float delta){
index c10faee59f2a93f016dc02f62251d2295fb22d13..fb13b5a6cc121326a4798efc580f9dbde0317bbd 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -959,7 +959,15 @@ void logic(){
                switch(b->bsubtype){
                        case FOUNTAIN:
                                for(int r = 0; r < (rand()%25)+10;r++){
-                                       currentWorld->addParticle(rand()%HLINE*3 + b->loc.x + b->width/2,b->loc.y + b->height, HLINE,HLINE, rand()%2 == 0?-(rand()%7)*.01:(rand()%7)*.01,((4+rand()%6)*.05), {0,0,255}, 2500);
+                                       currentWorld->addParticle(      rand()%HLINE*3 + b->loc.x + b->width/2,
+                                                                                               b->loc.y + b->height, 
+                                                                                               HLINE*1.25,
+                                                                                               HLINE*1.25, 
+                                                                                               rand()%2 == 0?-(rand()%7)*.01:(rand()%7)*.01,
+                                                                                               ((4+rand()%6)*.05), 
+                                                                                               {0.0f,0.0f,255.0f}, 
+                                                                                               2500);
+
                                        currentWorld->particles.back()->fountain = true;
                                }
                                break;
index 296595930d12704e67fb34860513d13077a23a73..f688327b81e33f3ba2fdfea46f15822dd8f96882 100644 (file)
@@ -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])};
        }
index eecd7ef57237572f588149d419e97f1fe1397d9c..6dd5cd7e95f356c308da3948bd8375382f6a0c20 100644 (file)
@@ -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;
index 8815a08fd51ac0d85ba6fa0b41f4da670f922119..c99fb42ef3c804f91e7bc05c8d68a0504fbced2c 100644 (file)
Binary files a/xcf/player.xcf and b/xcf/player.xcf differ