Esempio n. 1
0
void newfont(char *name, char *tex, int *defaultw, int *defaulth, int *offsetx, int *offsety, int *offsetw, int *offseth)
{
    if(*defaulth < 10) return;          // (becomes FONTH)
    Texture *_tex = textureload(tex);
    if(_tex == notexture || !_tex->xs || !_tex->ys) return;
    font *f = fonts.access(name);
    if(!f)
    {
        name = newstring(name);
        f = &fonts[name];
        f->name = name;
    }

    f->tex = _tex;
    f->chars.shrink(0);
    f->defaultw = *defaultw;
    f->defaulth = *defaulth;
    f->offsetx = *offsetx;
    f->offsety = *offsety;
    f->offsetw = *offsetw;
    f->offseth = *offseth;
    f->skip = 33;

    fontdef = f;
}
Esempio n. 2
0
 int playerpreview(int model, int team, int weap, float sizescale, bool overlaid)
 {
     autotab();
     if(sizescale==0) sizescale = 1;
     int size = (int)(sizescale*2*FONTH)-SHADOW;
     if(visible())
     {
         bool hit = ishit(size+SHADOW, size+SHADOW);
         float xs = size, ys = size, xi = curx, yi = cury;
         if(overlaid && hit && actionon)
         {
             glDisable(GL_TEXTURE_2D);
             notextureshader->set();
             glColor4f(0, 0, 0, 0.75f);
             rect_(xi+SHADOW, yi+SHADOW, xs, ys);
             glEnable(GL_TEXTURE_2D);
             defaultshader->set();
         }
         int x1 = int(floor(screenw*(xi*scale.x+origin.x))), y1 = int(floor(screenh*(1 - ((yi+ys)*scale.y+origin.y)))),
             x2 = int(ceil(screenw*((xi+xs)*scale.x+origin.x))), y2 = int(ceil(screenh*(1 - (yi*scale.y+origin.y))));
         glViewport(x1, y1, x2-x1, y2-y1);
         glScissor(x1, y1, x2-x1, y2-y1);
         glEnable(GL_SCISSOR_TEST);
         glDisable(GL_BLEND);
         modelpreview::start(overlaid);
         game::renderplayerpreview(model, team, weap);
         glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
         glEnable(GL_BLEND);
         modelpreview::end();
         glDisable(GL_SCISSOR_TEST);
         glViewport(0, 0, screenw, screenh);
         if(overlaid)
         {
             if(hit)
             {
                 glDisable(GL_TEXTURE_2D);
                 notextureshader->set();
                 glBlendFunc(GL_ZERO, GL_SRC_COLOR);
                 glColor3f(1, 0.5f, 0.5f);
                 rect_(xi, yi, xs, ys);
                 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
                 glEnable(GL_TEXTURE_2D);
                 defaultshader->set();
             }
             if(!overlaytex) {
                 string otname;
                 inexor::filesystem::appendmediadir(otname, "guioverlay.png", DIR_UI);
                 overlaytex = textureload(otname, 3);
             }
             glColor3fv(light.v);
             glBindTexture(GL_TEXTURE_2D, overlaytex->id);
             rect_(xi, yi, xs, ys, 0);
         }
     }
     return layout(size+SHADOW, size+SHADOW);
 }
Esempio n. 3
0
 int modelpreview(const char *name, int anim, float sizescale, bool overlaid)
 {
     autotab();
     if(sizescale==0) sizescale = 1;
     int size = (int)(sizescale*2*FONTH)-SHADOW;
     if(visible())
     {
         bool hit = ishit(size+SHADOW, size+SHADOW);
         float xs = size, ys = size, xi = curx, yi = cury;
         if(overlaid && hit && actionon)
         {
             hudnotextureshader->set();
             gle::colorf(0, 0, 0, 0.75f);
             rect_(xi+SHADOW, yi+SHADOW, xs, ys);
             hudshader->set();
         }
         int x1 = int(floor(screen->w*(xi*scale.x+origin.x))), y1 = int(floor(screen->h*(1 - ((yi+ys)*scale.y+origin.y)))),
             x2 = int(ceil(screen->w*((xi+xs)*scale.x+origin.x))), y2 = int(ceil(screen->h*(1 - (yi*scale.y+origin.y))));
         glDisable(GL_BLEND);
         modelpreview::start(x1, y1, x2-x1, y2-y1, overlaid);
         model *m = loadmodel(name);
         if(m)
         {
             entitylight light;
             light.color = vec(1, 1, 1);
             light.dir = vec(0, -1, 2).normalize();
             vec center, radius;
             m->boundbox(center, radius);
             float yaw;
             vec o = calcmodelpreviewpos(radius, yaw).sub(center);
             rendermodel(&light, name, anim, o, yaw, 0, 0, NULL, NULL, 0);
         }
         modelpreview::end();
         hudshader->set();
         glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
         glEnable(GL_BLEND);
         if(overlaid)
         {
             if(hit)
             {
                 hudnotextureshader->set();
                 glBlendFunc(GL_ZERO, GL_SRC_COLOR);
                 gle::colorf(1, 0.5f, 0.5f);
                 rect_(xi, yi, xs, ys);
                 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
                 hudshader->set();
             }
             if(!overlaytex) overlaytex = textureload("data/guioverlay.png", 3);
             gle::color(light);
             glBindTexture(GL_TEXTURE_2D, overlaytex->id);
             rect_(xi, yi, xs, ys, 0);
         }
     }
     return layout(size+SHADOW, size+SHADOW);
 }
Esempio n. 4
0
void loadcaustics(bool force)
{
    static bool needcaustics = false;
    if(force) needcaustics = true;
    if(!caustics || !needcaustics) return;
    useshaderbyname("caustics");
    if(caustictex[0]) return;
    loopi(NUMCAUSTICS)
    {
        defformatstring(name, "<grey><noswizzle>media/texture/mat_water/caustic/caust%.2d.png", i);
        caustictex[i] = textureload(name);
    }
}
Esempio n. 5
0
 mitemmaploadmanual(gmenu *parent, const char *filename, const char *altfontname, char *text, char *action, char *hoveraction, color *bgcolor, const char *desc = NULL) : mitemmanual(parent, text, action, NULL,        NULL,    NULL), filename(filename)
 {
     image = NULL;
     copystring(maptitle, filename ? filename : "-n/a-");
     if(filename)
     {
         // see worldio.cpp:setnames()
         string pakname, mapname, cgzpath;
         const char *slash = strpbrk(filename, "/\\");
         if(slash)
         {
             copystring(pakname, filename, slash-filename+1);
             copystring(mapname, slash+1);
         }
         else
         {
             copystring(pakname, "maps");
             copystring(mapname, filename);
         }
         formatstring(cgzpath)("packages/%s", pakname);
         char *d = getfiledesc(cgzpath, mapname, "cgz");
         if( d ) { formatstring(maptitle)("%s", d[0] ? d : "-n/a-"); }
         else
         {
             copystring(pakname, "maps/official");
             formatstring(cgzpath)("packages/%s", pakname);
             char *d = getfiledesc("packages/maps/official", mapname, "cgz");
             if( d ) { formatstring(maptitle)("%s", d[0] ? d : "-n/a-"); }
             else formatstring(maptitle)("-n/a-:%s", mapname);
         }
         defformatstring(p2p)("%s/preview/%s.jpg", cgzpath, mapname);
         silent_texture_load = true;
         image = textureload(p2p, 3);
         if(image==notexture) image = textureload("packages/misc/nopreview.jpg", 3);
         silent_texture_load = false;
     }
     else { formatstring(maptitle)("-n/a-:%s", filename); image = textureload("packages/misc/nopreview.png", 3); }
     copystring(mapstats, "");
 }
Esempio n. 6
0
 int prefabpreview(const char *prefab, const vec &color, float sizescale, bool overlaid)
 {
     autotab();
     if(sizescale==0) sizescale = 1;
     int size = (int)(sizescale*2*FONTH)-SHADOW;
     if(visible())
     {
         bool hit = ishit(size+SHADOW, size+SHADOW);
         float xs = size, ys = size, xi = curx, yi = cury;
         if(overlaid && hit && actionon)
         {
             hudnotextureshader->set();
             gle::colorf(0, 0, 0, 0.75f);
             rect_(xi+SHADOW, yi+SHADOW, xs, ys);
             hudshader->set();
         }
         int x1 = int(floor(screen->w*(xi*scale.x+origin.x))), y1 = int(floor(screen->h*(1 - ((yi+ys)*scale.y+origin.y)))),
             x2 = int(ceil(screen->w*((xi+xs)*scale.x+origin.x))), y2 = int(ceil(screen->h*(1 - (yi*scale.y+origin.y))));
         glDisable(GL_BLEND);
         modelpreview::start(x1, y1, x2-x1, y2-y1, overlaid);
         previewprefab(prefab, color);
         modelpreview::end();
         hudshader->set();
         glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
         glEnable(GL_BLEND);
         if(overlaid)
         {
             if(hit)
             {
                 hudnotextureshader->set();
                 glBlendFunc(GL_ZERO, GL_SRC_COLOR);
                 gle::colorf(1, 0.5f, 0.5f);
                 rect_(xi, yi, xs, ys);
                 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
                 hudshader->set();
             }
             if(!overlaytex) overlaytex = textureload("data/guioverlay.png", 3);
             gle::color(light);
             glBindTexture(GL_TEXTURE_2D, overlaytex->id);
             rect_(xi, yi, xs, ys, 0);
         }
     }
     return layout(size+SHADOW, size+SHADOW);
 }
Esempio n. 7
0
void newfont(char *name, char *tex, int *defaultw, int *defaulth, int *offsetx, int *offsety, int *offsetw, int *offseth)
{
    font *f = fonts.access(name);
    if(!f)
    {
        name = newstring(name);
        f = &fonts[name];
        f->name = name;
    }

    f->tex = textureload(tex);
    f->chars.setsize(0);
    f->defaultw = *defaultw;
    f->defaulth = *defaulth;
    f->offsetx = *offsetx;
    f->offsety = *offsety;
    f->offsetw = *offsetw;
    f->offseth = *offseth;

    fontdef = f;
}
Esempio n. 8
0
 mitemimagemanual(gmenu *parent, const char *filename, const char *altfontname, char *text, char *action, char *hoveraction, color *bgcolor, const char *desc = NULL) : mitemmanual(parent, text, action, hoveraction, bgcolor, desc), filename(filename)
 {
     image = filename ? textureload(filename, 3) : NULL;
     altfont = altfontname ? getfont(altfontname) : NULL;
 }
Esempio n. 9
0
 int modelpreview(const char *name, int anim, float sizescale, bool overlaid)
 {
     autotab();
     if(sizescale==0) sizescale = 1;
     int size = (int)(sizescale*2*FONTH)-SHADOW;
     if(visible())
     {
         bool hit = ishit(size+SHADOW, size+SHADOW);
         float xs = size, ys = size, xi = curx, yi = cury;
         if(overlaid && hit && actionon)
         {
             glDisable(GL_TEXTURE_2D);
             notextureshader->set();
             glColor4f(0, 0, 0, 0.75f);
             rect_(xi+SHADOW, yi+SHADOW, xs, ys);
             glEnable(GL_TEXTURE_2D);
             defaultshader->set();
         }
         int x1 = int(floor(screenw*(xi*scale.x+origin.x))), y1 = int(floor(screenh*(1 - ((yi+ys)*scale.y+origin.y)))),
             x2 = int(ceil(screenw*((xi+xs)*scale.x+origin.x))), y2 = int(ceil(screenh*(1 - (yi*scale.y+origin.y))));
         glViewport(x1, y1, x2-x1, y2-y1);
         glScissor(x1, y1, x2-x1, y2-y1);
         glEnable(GL_SCISSOR_TEST);
         glDisable(GL_BLEND);
         modelpreview::start(overlaid);
         model *m = loadmodel(name);
         if(m)
         {
             entitylight light;
             light.color = vec(1, 1, 1);
             light.dir = vec(0, -1, 2).normalize();
             vec center, radius;
             m->boundbox(center, radius);
             float dist =  2.0f*max(radius.magnitude2(), 1.1f*radius.z),
                   yaw = fmod(lastmillis/10000.0f*360.0f, 360.0f);
             vec o(-center.x, dist - center.y, -0.1f*dist - center.z);
             rendermodel(&light, name, anim, o, yaw, 0, 0, NULL, NULL, 0);
         }
         modelpreview::end();
         glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
         glEnable(GL_BLEND);
         glDisable(GL_SCISSOR_TEST);
         glViewport(0, 0, screenw, screenh);
         if(overlaid)
         {
             if(hit)
             {
                 glDisable(GL_TEXTURE_2D);
                 notextureshader->set();
                 glBlendFunc(GL_ZERO, GL_SRC_COLOR);
                 glColor3f(1, 0.5f, 0.5f);
                 rect_(xi, yi, xs, ys);
                 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
                 glEnable(GL_TEXTURE_2D);
                 defaultshader->set();
             }
             if(!overlaytex) {
                 string otname;
                 inexor::filesystem::appendmediadir(otname, "guioverlay.png", DIR_UI);
                 overlaytex = textureload(otname, 3);
             }
             glColor3fv(light.v);
             glBindTexture(GL_TEXTURE_2D, overlaytex->id);
             rect_(xi, yi, xs, ys, 0);
         }
     }
     return layout(size+SHADOW, size+SHADOW);
 }
Esempio n. 10
0
Contentmgr::Contentmgr(SDL_Renderer* renderer)
{
	textureload(renderer);
}