/* mat.h */
/* definitions of Videoscape3D-Materials */

void createmat(int matcode)
{
    int diff_amb;

    if (matcode>191)  /* smooth surfaces */
    {
        matcode=matcode-128;
    }

    if (matcode>63)   /* haven't an idea for transparent surfaces yet */
    {
        matcode=matcode-64;
    }

    glEnable(GL_COLOR_MATERIAL);
    glColorMaterial(GL_FRONT_AND_BACK, GL_SPECULAR); /* first set specularity */
    if (matcode < 16)
    {
        glColor3f(0.1,0.1,0.1);
        diff_amb=matcode;
    }
    else if (matcode < 32)
    {
        glColor3f(0.6,0.6,0.6);
        diff_amb=matcode-16;
    }
    else
    {
        glColor3f(0.0,0.0,0.0);
        diff_amb=matcode-32;
    }

    glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE); /* now set 'real' color */

    switch(diff_amb)
    {
        /* dull surfaces */

        case  0: /* black */
                glColor3f(0.0,0.0,0.0);
                break;
        case  1: /* dark-blue */
                glColor3f(0.0,0.0,0.3);
                break;
        case  2: /* dark-green */
                glColor3f(0.0,0.3,0.0);
                break;
        case  3: /* dark-bluegreen */
                glColor3f(0.0,0.3,0.3);
                break;
        case  4: /* dark-red */
                glColor3f(0.3,0.0,0.0);
                break;
        case  5: /* ?? */
                glColor3f(1.0,1.0,1.0);
                break;
        case  6: /* brown */
                glColor3f(0.5,0.3,0.2);
                break;
        case  7: /* grey/gray */
                glColor3f(0.5,0.5,0.5);
                break;
        case  8: /* black, again */
                glColor3f(0.0,0.0,0.0);
                break;
        case  9: /* bright blue */
                glColor3f(0.0,0.0,1.0);
                break;
        case 10: /* bright green */
                glColor3f(0.0,1.0,0.0);
                break;
        case 11: /* bright bluegreen */
                glColor3f(0.0,1.0,1.0);
                break;
        case 12: /* bright red */
                glColor3f(1.0,0.0,0.0);
                break;
        case 13: /* ?? */
                glColor3f(1.0,1.0,1.0);
                break;
        case 14: /* yellow */
                glColor3f(1.0,1.0,0.0);
                break;
        case 15: /* white */
                glColor3f(1.0,1.0,1.0);
                break;

        /* shiny surfaces 16...31 */

        /* unshaded surfaces 32...47*/

        /* outlined surfaces 48...63 */

        default: /* white as default */
                glColor3f(1.0,1.0,1.0);
    }
    glDisable(GL_COLOR_MATERIAL);
}

