--- deliantra/Deliantra-Client/Client.xs 2006/06/15 08:29:16 1.116 +++ deliantra/Deliantra-Client/Client.xs 2006/06/15 15:33:57 1.117 @@ -1358,8 +1358,8 @@ glColor4ub (255, 255, 255, 255); - glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable (GL_BLEND); + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable (GL_TEXTURE_2D); glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); @@ -1410,6 +1410,63 @@ } void +draw_magicmap (CFClient::Map self, int dx, int dy, int w, int h, unsigned char *data) + CODE: +{ + static float color[16][3] = { + { 0.00, 0.00, 0.00 }, + { 1.00, 1.00, 1.00 }, + { 0.00, 0.00, 0.55 }, + { 1.00, 0.00, 0.00 }, + + { 1.00, 0.54, 0.00 }, + { 0.11, 0.56, 1.00 }, + { 0.93, 0.46, 0.00 }, + { 0.18, 0.54, 0.34 }, + + { 0.56, 0.73, 0.56 }, + { 0.80, 0.80, 0.80 }, + { 0.55, 0.41, 0.13 }, + { 0.99, 0.77, 0.26 }, + + { 0.74, 0.65, 0.41 }, + + { 0.00, 1.00, 1.00 }, + { 1.00, 0.00, 1.00 }, + { 1.00, 1.00, 0.00 }, + }; + + int x, y; + + glEnable (GL_TEXTURE_2D); + glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); + glEnable (GL_BLEND); + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glBegin (GL_QUADS); + + for (y = 0; y < h; y++) + for (x = 0; x < w; x++) + { + unsigned char m = data [x + y * w]; + + float *c = color [m & 15]; + + float tx1 = m & 0x40 ? 0.5 : m & 0x80 ? 0.25 : 0.; + float tx2 = tx1 + 0.25; + + glColor4f (c[0], c[1], c[2], 0.75); + glTexCoord2f (tx1, 0.); glVertex2i (x , y ); + glTexCoord2f (tx1, 1.); glVertex2i (x , y + 1); + glTexCoord2f (tx2, 1.); glVertex2i (x + 1, y + 1); + glTexCoord2f (tx2, 0.); glVertex2i (x + 1, y ); + } + + glEnd (); + glDisable (GL_BLEND); + glDisable (GL_TEXTURE_2D); +} + +void fow_texture (CFClient::Map self, int shift_x, int shift_y, int x0, int y0, int sw, int sh) PPCODE: {