diff options
Diffstat (limited to 'archive/hgehelp/resources.cpp')
-rw-r--r-- | archive/hgehelp/resources.cpp | 958 |
1 files changed, 0 insertions, 958 deletions
diff --git a/archive/hgehelp/resources.cpp b/archive/hgehelp/resources.cpp deleted file mode 100644 index 33afcaa..0000000 --- a/archive/hgehelp/resources.cpp +++ /dev/null @@ -1,958 +0,0 @@ -/* -** Haaf's Game Engine 1.7 -** Copyright (C) 2003-2007, Relish Games -** hge.relishgames.com -** -** hgeResourceManager resources implementation -*/ - - -#include "hgeresource.h" -#include "parser.h" -#include "resources.h" - - -HGE *ResDesc::hge=0; - - -/////////////// COMMON // - -void AddRes(hgeResourceManager *rm, int type, ResDesc *resource) -{ - resource->next=rm->res[type]; - rm->res[type]=resource; -} - -ResDesc *FindRes(hgeResourceManager *rm, int type, const char *name) -{ - ResDesc *rc; - - rc=rm->res[type]; - while(rc) - { - if(!strcmp(name, rc->name)) return rc; - rc=rc->next; - } - - return 0; -} - -bool ScriptSkipToNextParameter(RScriptParser *sp, bool bIgnore) -{ - bool bToBeIgnored=bIgnore; - if(bIgnore) sp->put_back(); - - for(;;) - { - sp->get_token(); - if(sp->tokentype == TTCLOSEBLOCK) { if(bIgnore) {sp->put_back(); return true;} return false; } - if((sp->tokentype > TTRES__FIRST && sp->tokentype < TTRES__LAST) || sp->tokentype == TTEND) - { - sp->put_back(); - if(bIgnore) return true; - sp->ScriptPostError("'}' missed, "," encountered."); - return false; - } - if((sp->tokentype <= TTPAR__FIRST && sp->tokentype >= TTPAR__LAST) || bToBeIgnored) - { - bToBeIgnored=false; - sp->ScriptPostError("Unsupported resource parameter ","."); - do sp->get_token(); - while((sp->tokentype <= TTPAR__FIRST || sp->tokentype >= TTPAR__LAST) && - (sp->tokentype <= TTRES__FIRST || sp->tokentype >= TTRES__LAST) && - sp->tokentype != TTCLOSEBLOCK && sp->tokentype != TTEND); - sp->put_back(); - } - else - { - if(bIgnore) sp->put_back(); - return true; - } - } -} - -void ScriptParseFileResource(hgeResourceManager *rm, RScriptParser *sp, const char *name, const char *basename, ResDesc *rr, int restype) -{ - RResource *rc=(RResource *)rr, *base; - - base = (RResource *)FindRes(rm, restype, basename); - if(base) *rc=*base; else - { - rc->resgroup=0; - rc->filename[0]=0; - } - rc->handle=0; strcpy(rc->name, name); - - while(ScriptSkipToNextParameter(sp,false)) - { - switch(sp->tokentype) - { - case TTPAR_FILENAME: - sp->get_token(); sp->get_token(); - strcpy(rc->filename, sp->tkn_string()); - break; - - case TTPAR_RESGROUP: - sp->get_token(); sp->get_token(); - rc->resgroup=sp->tkn_int(); - break; - - default: - ScriptSkipToNextParameter(sp,true); - break; - } - } - - AddRes(rm, restype, rc); -} - -void ScriptParseBlendMode(RScriptParser *sp, int *blend) -{ - for(;;) - { - sp->get_token(); - if(sp->tokentype != TTEQUALS && sp->tokentype != TTSEPARATOR) { sp->put_back(); return; } - - switch(sp->get_token()) - { - case TTCON_COLORMUL: - *blend &= ~BLEND_COLORADD; - break; - - case TTCON_COLORADD: - *blend |= BLEND_COLORADD; - break; - - case TTCON_ALPHABLND: - *blend |= BLEND_ALPHABLEND; - break; - - case TTCON_ALPHAADD: - *blend &= ~BLEND_ALPHABLEND; - break; - - case TTCON_ZWRITE: - *blend |= BLEND_ZWRITE; - break; - - case TTCON_NOZWRITE: - *blend &= ~BLEND_ZWRITE; - break; - - default: - sp->ScriptPostError("Unsupported value ","."); - break; - } - } -} - -void ScriptParseSpriteAnim(RScriptParser *sp, RSprite *rc, bool anim) -{ - while(ScriptSkipToNextParameter(sp,false)) - { - switch(sp->tokentype) - { - case TTPAR_TEXTURE: - sp->get_token(); sp->get_token(); - strcpy(rc->texname,sp->tkn_string()); - break; - - case TTPAR_RECT: - sp->get_token(); sp->get_token(); - rc->tx=sp->tkn_float(); - sp->get_token(); sp->get_token(); - rc->ty=sp->tkn_float(); - sp->get_token(); sp->get_token(); - rc->w=sp->tkn_float(); - sp->get_token(); sp->get_token(); - rc->h=sp->tkn_float(); - break; - - case TTPAR_HOTSPOT: - sp->get_token(); sp->get_token(); - rc->hotx=sp->tkn_float(); - sp->get_token(); sp->get_token(); - rc->hoty=sp->tkn_float(); - break; - - case TTPAR_BLENDMODE: - ScriptParseBlendMode(sp, &rc->blend); - break; - - case TTPAR_COLOR: - sp->get_token(); sp->get_token(); - rc->color=sp->tkn_hex(); - break; - - case TTPAR_ZORDER: - sp->get_token(); sp->get_token(); - rc->z=sp->tkn_float(); - break; - - case TTPAR_FLIP: - sp->get_token(); sp->get_token(); - rc->bXFlip=sp->tkn_bool(); - sp->get_token(); sp->get_token(); - rc->bYFlip=sp->tkn_bool(); - break; - - case TTPAR_RESGROUP: - sp->get_token(); sp->get_token(); - rc->resgroup=sp->tkn_int(); - break; - - case TTPAR_FRAMES: - if(anim) - { - sp->get_token(); sp->get_token(); - ((RAnimation *)rc)->frames=sp->tkn_int(); - break; - } - - case TTPAR_FPS: - if(anim) - { - sp->get_token(); sp->get_token(); - ((RAnimation *)rc)->fps=sp->tkn_float(); - break; - } - - case TTPAR_MODE: - if(anim) - { - for(;;) - { - sp->get_token(); - if(sp->tokentype != TTEQUALS && sp->tokentype != TTSEPARATOR) { sp->put_back(); break; } - - switch(sp->get_token()) - { - case TTCON_FORWARD: - ((RAnimation *)rc)->mode &= ~HGEANIM_REV; - break; - - case TTCON_REVERSE: - ((RAnimation *)rc)->mode |= HGEANIM_REV; - break; - - case TTCON_NOPINGPONG: - ((RAnimation *)rc)->mode &= ~HGEANIM_PINGPONG; - break; - - case TTCON_PINGPONG: - ((RAnimation *)rc)->mode |= HGEANIM_PINGPONG; - break; - - case TTCON_NOLOOP: - ((RAnimation *)rc)->mode &= ~HGEANIM_LOOP; - break; - - case TTCON_LOOP: - ((RAnimation *)rc)->mode |= HGEANIM_LOOP; - break; - - default: - sp->ScriptPostError("Unsupported value ","."); - break; - } - } - break; - } - - default: - ScriptSkipToNextParameter(sp,true); - break; - } - } -} - - -/////////////// RScript // - -void RScript::Parse(hgeResourceManager *rm, RScriptParser *sp, const char *sname, const char *sbasename) -{ - RScriptParser *np; - RScript *res_script; - void *data; - DWORD size; - char *script, name[MAXRESCHARS], basename[MAXRESCHARS]; - int restype; - - if(!FindRes(rm, RES_SCRIPT, sname)) - { - res_script = new RScript(); // hack! we need an instance of RScript to access hge - // if all ok, this object is used later to keep the script - - data=hge->Resource_Load(sname, &size); - if(!data) - { - if(sp) sp->ScriptPostError("Script "," not found."); - else hge->System_Log("Script '%s' not found.",sname); - delete res_script; - return; - } - else - { - script= new char[size+1]; - memcpy(script, data, size); - script[size]=0; - hge->Resource_Free(data); - - strcpy(res_script->name, sname); - AddRes(rm, RES_SCRIPT, res_script); - np = new RScriptParser(res_script->name, script); - - for(;;) - { - np->get_token(); - if(np->tokentype == TTEND) break; - - else if(np->tokentype == TTRES_INCLUDE) - { - np->get_token(); - RScript::Parse(rm, np, np->tkn_string(), NULL); - } - - else if(np->tokentype > TTRES__FIRST && np->tokentype < TTRES__LAST) - { - restype=np->tokentype-TTRES__FIRST-1; - name[0]=basename[0]=0; - - np->get_token(); - if(FindRes(rm, restype, np->tkn_string())) - { - np->ScriptPostError("Resource "," of the same type already has been defined."); - while((np->tokentype <= TTRES__FIRST || np->tokentype >= TTRES__LAST) && np->tokentype != TTEND) np->get_token(); - np->put_back(); - continue; - } - strcpy(name, np->tkn_string()); - - np->get_token(); - - if(np->tokentype == TTBASED) - { - np->get_token(); - if(!FindRes(rm, restype, np->tkn_string())) np->ScriptPostError("Base resource "," is not defined."); - else strcpy(basename, np->tkn_string()); - np->get_token(); - } - - if(np->tokentype == TTOPENBLOCK) - { - switch(restype) - { - case RES_RESOURCE: RResource::Parse(rm, np, name, basename); break; - case RES_TEXTURE: RTexture::Parse(rm, np, name, basename); break; - case RES_EFFECT: REffect::Parse(rm, np, name, basename); break; - case RES_TARGET: RTarget::Parse(rm, np, name, basename); break; - case RES_SPRITE: RSprite::Parse(rm, np, name, basename); break; - case RES_ANIMATION: RAnimation::Parse(rm, np, name, basename); break; - case RES_FONT: RFont::Parse(rm, np, name, basename); break; - case RES_PARTICLE: RParticle::Parse(rm, np, name, basename); break; - case RES_DISTORT: RDistort::Parse(rm, np, name, basename); break; - case RES_STRTABLE: RStringTable::Parse(rm, np, name, basename); break; - } - } - else - { - np->ScriptPostError("Illegal resource syntax, "," found; '{' expected."); - while((np->tokentype <= TTRES__FIRST || np->tokentype >= TTRES__LAST) && np->tokentype != TTEND) np->get_token(); - np->put_back(); - } - } - - else - { - np->ScriptPostError("Unrecognized resource specificator ","."); - while((np->tokentype <= TTRES__FIRST || np->tokentype >= TTRES__LAST) && np->tokentype != TTEND) np->get_token(); - np->put_back(); - } - } - - delete np; - delete[] script; - } - } - else sp->ScriptPostError("Script "," already has been parsed."); -} - -/////////////// RResource // - -void RResource::Parse(hgeResourceManager *rm, RScriptParser *sp, const char *name, const char *basename) -{ - ScriptParseFileResource(rm, sp, name, basename, new RResource(), RES_RESOURCE); -} - -DWORD RResource::Get(hgeResourceManager *rm) -{ - if(!handle) handle=(size_t)hge->Resource_Load(filename); - return handle; -} - -void RResource::Free() -{ - if(handle) hge->Resource_Free((void *)handle); - handle=0; -} - -/////////////// RTexture // - -void RTexture::Parse(hgeResourceManager *rm, RScriptParser *sp, const char *name, const char *basename) -{ - RTexture *rc, *base; - - rc=new RTexture(); - base = (RTexture *)FindRes(rm, RES_TEXTURE, basename); - if(base) *rc=*base; - else - { - rc->resgroup=0; - rc->mipmap=false; - } - rc->handle=0; strcpy(rc->name, name); - - while(ScriptSkipToNextParameter(sp,false)) - { - switch(sp->tokentype) - { - case TTPAR_FILENAME: - sp->get_token(); sp->get_token(); - strcpy(rc->filename, sp->tkn_string()); - break; - - case TTPAR_RESGROUP: - sp->get_token(); sp->get_token(); - rc->resgroup=sp->tkn_int(); - break; - - case TTPAR_MIPMAP: - sp->get_token(); sp->get_token(); - rc->mipmap=sp->tkn_bool(); - break; - - default: - ScriptSkipToNextParameter(sp,true); - break; - } - } - - AddRes(rm, RES_TEXTURE, rc); -} - -DWORD RTexture::Get(hgeResourceManager *rm) -{ - if(!handle) handle=(DWORD)hge->Texture_Load(filename, 0, mipmap); - return handle; -} - -void RTexture::Free() -{ - if(handle) hge->Texture_Free((HTEXTURE)handle); - handle=0; -} - -/////////////// REffect // - -void REffect::Parse(hgeResourceManager *rm, RScriptParser *sp, const char *name, const char *basename) -{ - ScriptParseFileResource(rm, sp, name, basename, new REffect(), RES_EFFECT); -} - -DWORD REffect::Get(hgeResourceManager *rm) -{ - if(!handle) handle=(DWORD)hge->Effect_Load(filename); - return handle; -} - -void REffect::Free() -{ - if(handle) hge->Effect_Free((HEFFECT)handle); - handle=0; -} - -/////////////// RTarget // - -void RTarget::Parse(hgeResourceManager *rm, RScriptParser *sp, const char *name, const char *basename) -{ - RTarget *rc, *base; - - rc = new RTarget(); - base = (RTarget *)FindRes(rm, RES_TARGET, basename); - if(base) *rc=*base; - else - { - rc->resgroup=0; - rc->width=256; - rc->height=256; - rc->zbuffer=false; - } - rc->handle=0; strcpy(rc->name, name); - - while(ScriptSkipToNextParameter(sp, false)) - { - switch(sp->tokentype) - { - case TTPAR_SIZE: - sp->get_token(); sp->get_token(); - rc->width=sp->tkn_int(); - sp->get_token(); - sp->get_token(); - rc->height=sp->tkn_int(); - break; - - case TTPAR_ZBUFFER: - sp->get_token(); sp->get_token(); - rc->zbuffer=sp->tkn_bool(); - break; - - case TTPAR_RESGROUP: - sp->get_token(); sp->get_token(); - rc->resgroup=sp->tkn_int(); - break; - - default: - ScriptSkipToNextParameter(sp, true); - break; - } - } - - AddRes(rm, RES_TARGET, rc); -} - -DWORD RTarget::Get(hgeResourceManager *rm) -{ - if(!handle) handle=(DWORD)hge->Target_Create(width, height, zbuffer); - return handle; -} - -void RTarget::Free() -{ - if(handle) hge->Target_Free((HTARGET)handle); - handle=0; -} - -/////////////// RSprite // - -void RSprite::Parse(hgeResourceManager *rm, RScriptParser *sp, const char *name, const char *basename) -{ - RSprite *rc, *base; - - rc = new RSprite(); - base = (RSprite *)FindRes(rm, RES_SPRITE, basename); - if(base) *rc=*base; - else - { - rc->resgroup=0; - rc->texname[0]=0; - rc->tx=rc->ty=0; - rc->w=rc->h=0; - rc->hotx=rc->hoty=0; - rc->blend=BLEND_COLORMUL | BLEND_ALPHABLEND | BLEND_NOZWRITE; - rc->color=0xFFFFFFFF; - rc->z=0.5f; - rc->bXFlip=false; - rc->bYFlip=false; -// rc->x=rc->y=0; -// rc->scale=1.0f; -// rc->rotation=0.0f; -// rc->collision=HGECOL_RECT; - } - - rc->handle=0; - strcpy(rc->name, name); - - ScriptParseSpriteAnim(sp, rc, false); - AddRes(rm, RES_SPRITE, rc); -} - -DWORD RSprite::Get(hgeResourceManager *rm) -{ - hgeSprite *spr; - if(!handle) - { - spr = new hgeSprite(rm->GetTexture(texname, resgroup), tx, ty, w, h); - spr->SetColor(color); - spr->SetZ(z); - spr->SetBlendMode(blend); - spr->SetHotSpot(hotx,hoty); - spr->SetFlip(bXFlip, bYFlip); -// spr->MoveTo(x,y); -// spr->SetScale(scale); -// spr->SetRotation(rotation); -// spr->SetCollisionType(collision); - - handle=(size_t)spr; - } - return handle; -} - -void RSprite::Free() -{ - if(handle) delete (hgeSprite *)handle; - handle=0; -} - -/////////////// RAnimation // - -void RAnimation::Parse(hgeResourceManager *rm, RScriptParser *sp, const char *name, const char *basename) -{ - RAnimation *rc, *base; - - rc = new RAnimation(); - base = (RAnimation *)FindRes(rm, RES_ANIMATION, basename); - if(base) *rc=*base; - else - { - rc->resgroup=0; - rc->texname[0]=0; - rc->tx=rc->ty=0; - rc->w=rc->h=0; - rc->hotx=rc->hoty=0; - rc->blend=BLEND_COLORMUL | BLEND_ALPHABLEND | BLEND_NOZWRITE; - rc->color=0xFFFFFFFF; - rc->z=0.5f; - rc->bXFlip=false; - rc->bYFlip=false; -// rc->x=rc->y=0; -// rc->scale=1.0f; -// rc->rotation=0.0f; -// rc->collision=HGECOL_RECT; - rc->frames=1; - rc->fps=12.0f; - rc->mode=HGEANIM_FWD | HGEANIM_LOOP; - } - - rc->handle=0; - strcpy(rc->name, name); - - ScriptParseSpriteAnim(sp, rc, true); - AddRes(rm, RES_ANIMATION, rc); -} - -DWORD RAnimation::Get(hgeResourceManager *rm) -{ - hgeAnimation *spr; - if(!handle) - { - spr = new hgeAnimation(rm->GetTexture(texname, resgroup), frames, fps, tx, ty, w, h); - spr->SetColor(color); - spr->SetZ(z); - spr->SetBlendMode(blend); - spr->SetHotSpot(hotx,hoty); - spr->SetFlip(bXFlip, bYFlip); -// spr->MoveTo(x,y); -// spr->SetScale(scale); -// spr->SetRotation(rotation); -// spr->SetCollisionType(collision); - spr->SetMode(mode); - - handle=(size_t)spr; - } - return handle; -} - -void RAnimation::Free() -{ - if(handle) delete (hgeAnimation *)handle; - handle=0; -} - -/////////////// RFont // - -void RFont::Parse(hgeResourceManager *rm, RScriptParser *sp, const char *name, const char *basename) -{ - RFont *rc, *base; - - rc = new RFont(); - base = (RFont *)FindRes(rm, RES_FONT, basename); - if(base) *rc=*base; - else - { - rc->resgroup=0; - rc->mipmap=false; - rc->filename[0]=0; - rc->blend=BLEND_COLORMUL | BLEND_ALPHABLEND | BLEND_NOZWRITE; - rc->color=0xFFFFFFFF; - rc->z=0.5f; - rc->scale=1.0f; - rc->proportion=1.0f; - rc->tracking=0.0f; - rc->spacing=1.0f; - rc->rotation=0.0f; - } - rc->handle=0; strcpy(rc->name, name); - - while(ScriptSkipToNextParameter(sp,false)) - { - switch(sp->tokentype) - { - case TTPAR_FILENAME: - sp->get_token(); sp->get_token(); - strcpy(rc->filename, sp->tkn_string()); - break; - - case TTPAR_BLENDMODE: - ScriptParseBlendMode(sp, &rc->blend); - break; - - case TTPAR_COLOR: - sp->get_token(); sp->get_token(); - rc->color=sp->tkn_hex(); - break; - - case TTPAR_ZORDER: - sp->get_token(); sp->get_token(); - rc->z=sp->tkn_float(); - break; - - case TTPAR_SCALE: - sp->get_token(); sp->get_token(); - rc->scale=sp->tkn_float(); - break; - - case TTPAR_PROPORTION: - sp->get_token(); sp->get_token(); - rc->proportion=sp->tkn_float(); - break; - - case TTPAR_ROTATION: - sp->get_token(); sp->get_token(); - rc->rotation=sp->tkn_float(); - break; - - case TTPAR_TRACKING: - sp->get_token(); sp->get_token(); - rc->tracking=sp->tkn_float(); - break; - - case TTPAR_SPACING: - sp->get_token(); sp->get_token(); - rc->spacing=sp->tkn_float(); - break; - - case TTPAR_RESGROUP: - sp->get_token(); sp->get_token(); - rc->resgroup=sp->tkn_int(); - break; - - case TTPAR_MIPMAP: - sp->get_token(); sp->get_token(); - rc->mipmap=sp->tkn_bool(); - break; - - default: - ScriptSkipToNextParameter(sp, true); - break; - } - } - - AddRes(rm, RES_FONT, rc); -} - -DWORD RFont::Get(hgeResourceManager *rm) -{ - hgeFont *fnt; - if(!handle) - { - fnt = new hgeFont(filename, mipmap); - fnt->SetColor(color); - fnt->SetZ(z); - fnt->SetBlendMode(blend); - fnt->SetScale(scale); - fnt->SetProportion(proportion); - fnt->SetTracking(tracking); - fnt->SetSpacing(spacing); - fnt->SetRotation(rotation); - - handle=(size_t)fnt; - } - return handle; -} - -void RFont::Free() -{ - if(handle) delete (hgeFont *)handle; - handle=0; -} - -/////////////// RParticle // - -void RParticle::Parse(hgeResourceManager *rm, RScriptParser *sp, const char *name, const char *basename) -{ - RParticle *rc, *base; - - rc = new RParticle(); - base = (RParticle *)FindRes(rm, RES_PARTICLE, basename); - if(base) *rc=*base; - else - { - rc->resgroup=0; - rc->filename[0]=0; - rc->spritename[0]=0; - } - rc->handle=0; strcpy(rc->name, name); - - while(ScriptSkipToNextParameter(sp, false)) - { - switch(sp->tokentype) - { - case TTPAR_FILENAME: - sp->get_token(); sp->get_token(); - strcpy(rc->filename, sp->tkn_string()); - break; - - case TTPAR_SPRITE: - sp->get_token(); sp->get_token(); - strcpy(rc->spritename, sp->tkn_string()); - break; - - case TTPAR_RESGROUP: - sp->get_token(); sp->get_token(); - rc->resgroup=sp->tkn_int(); - break; - - default: - ScriptSkipToNextParameter(sp, true); - break; - } - } - - AddRes(rm, RES_PARTICLE, rc); -} - -DWORD RParticle::Get(hgeResourceManager *rm) -{ - hgeParticleSystem *par; - if(!handle) - { - par = new hgeParticleSystem(filename, rm->GetSprite(spritename)); - - handle=(size_t)par; - } - return handle; -} - -void RParticle::Free() -{ - if(handle) delete (hgeParticleSystem *)handle; - handle=0; -} - -/////////////// RDistort // - -void RDistort::Parse(hgeResourceManager *rm, RScriptParser *sp, const char *name, const char *basename) -{ - RDistort *rc, *base; - - rc = new RDistort(); - base = (RDistort *)FindRes(rm, RES_DISTORT, basename); - if(base) *rc=*base; - else - { - rc->resgroup=0; - rc->texname[0]=0; - rc->tx=rc->ty=0; - rc->w=rc->h=0; - rc->cols=rc->rows=2; - rc->blend=BLEND_COLORMUL | BLEND_ALPHABLEND | BLEND_NOZWRITE; - rc->color=0xFFFFFFFF; - rc->z=0.5f; - } - rc->handle=0; strcpy(rc->name, name); - - while(ScriptSkipToNextParameter(sp, false)) - { - switch(sp->tokentype) - { - case TTPAR_TEXTURE: - sp->get_token(); sp->get_token(); - strcpy(rc->texname, sp->tkn_string()); - break; - - case TTPAR_RECT: - sp->get_token(); sp->get_token(); - rc->tx=sp->tkn_float(); - sp->get_token(); sp->get_token(); - rc->ty=sp->tkn_float(); - sp->get_token(); sp->get_token(); - rc->w=sp->tkn_float(); - sp->get_token(); sp->get_token(); - rc->h=sp->tkn_float(); - break; - - case TTPAR_MESH: - sp->get_token(); sp->get_token(); - rc->cols=sp->tkn_int(); - sp->get_token(); sp->get_token(); - rc->rows=sp->tkn_int(); - break; - - case TTPAR_BLENDMODE: - ScriptParseBlendMode(sp, &rc->blend); - break; - - case TTPAR_COLOR: - sp->get_token(); sp->get_token(); - rc->color=sp->tkn_hex(); - break; - - case TTPAR_ZORDER: - sp->get_token(); sp->get_token(); - rc->z=sp->tkn_float(); - break; - - case TTPAR_RESGROUP: - sp->get_token(); sp->get_token(); - rc->resgroup=sp->tkn_int(); - break; - - default: - ScriptSkipToNextParameter(sp, true); - break; - } - } - - AddRes(rm, RES_DISTORT, rc); -} - -DWORD RDistort::Get(hgeResourceManager *rm) -{ - hgeDistortionMesh *dis; - if(!handle) - { - dis = new hgeDistortionMesh(cols, rows); - dis->SetTexture(rm->GetTexture(texname, resgroup)); - dis->SetTextureRect(tx,ty,w,h); - dis->SetBlendMode(blend); - dis->Clear(color,z); - - handle=(size_t)dis; - } - return handle; -} - -void RDistort::Free() -{ - if(handle) delete (hgeDistortionMesh *)handle; - handle=0; -} - -/////////////// RStringTable // - -void RStringTable::Parse(hgeResourceManager *rm, RScriptParser *sp, const char *name, const char *basename) -{ - ScriptParseFileResource(rm, sp, name, basename, new RStringTable(), RES_STRTABLE); -} - -DWORD RStringTable::Get(hgeResourceManager *rm) -{ - if(!handle) handle = (size_t)new hgeStringTable(filename); - return handle; -} - -void RStringTable::Free() -{ - if(handle) delete (hgeStringTable *)handle; - handle=0; -} |