/* Load a team colour mask texturepage into memory */ static bool dataTexPageTCMaskLoad(const char *fileName, void **ppData) { char texpage[PATH_MAX] = {'\0'}; // This hackery is needed, because fileName will include the directory name, whilst the LastResourceFilename will not, and we need a short name to identify the texpage sstrcpy(texpage, GetLastResourceFilename()); // Check if a corresponding texpage exists, exit if no pie_MakeTexPageName(texpage); ASSERT_OR_RETURN(false, resPresent(DT_TEXPAGE, texpage), "Corresponding texpage %s doesn't exists!", texpage); pie_MakeTexPageTCMaskName(texpage); if (!dataImageLoad(fileName, ppData)) { return false; } // see if this texture page has already been loaded if (resPresent(DT_TCMASK, texpage)) { // replace the old texture page with the new one debug(LOG_TEXTURE, "replacing %s with new tcmask %s", texpage, fileName); pie_ReplaceTexPage((iV_Image *)*ppData, texpage, getTextureSize(), false); } else { debug(LOG_TEXTURE, "adding page %s with tcmask %s", texpage, fileName); SetLastResourceFilename(texpage); pie_AddTexPage((iV_Image *)*ppData, texpage, 0, getTextureSize(), false); } return true; }
/* Load a texturepage into memory */ static bool dataTexPageLoad(const char *fileName, void **ppData) { char texpage[PATH_MAX] = {'\0'}; // This hackery is needed, because fileName will include the directory name, whilst the LastResourceFilename will not, and we need a short name to identify the texpage sstrcpy(texpage, GetLastResourceFilename()); pie_MakeTexPageName(texpage); if (!dataImageLoad(fileName, ppData)) { return false; } // see if this texture page has already been loaded if (resPresent(DT_TEXPAGE, texpage)) { // replace the old texture page with the new one debug(LOG_TEXTURE, "replacing %s with new texture %s", texpage, fileName); (void) pie_ReplaceTexPage(*ppData, texpage, getTextureSize(), true); } else { debug(LOG_TEXTURE, "adding page %s with texture %s", texpage, fileName); SetLastResourceFilename(texpage); (void) pie_AddTexPage(*ppData, texpage, 0, getTextureSize(), true); } return true; }
static unsigned short LoadTextureFile(const char *FileName) { iV_Image *pSprite; unsigned int i; ASSERT_OR_RETURN( 0, resPresent("IMGPAGE", FileName), "Texture file \"%s\" not preloaded.", FileName); pSprite = (iV_Image*)resGetData("IMGPAGE", FileName); debug(LOG_TEXTURE, "Load texture from resource cache: %s (%d, %d)", FileName, pSprite->width, pSprite->height); /* Have we already uploaded this one? */ for (i = 0; i < _TEX_INDEX; ++i) { if (strcasecmp(FileName, _TEX_PAGE[i].name) == 0) { debug(LOG_TEXTURE, "LoadTextureFile: already uploaded"); return _TEX_PAGE[i].id; } } debug(LOG_TEXTURE, "LoadTextureFile: had to upload texture!"); return pie_AddTexPage(pSprite, FileName, 0, 0, true); }
int iV_TexLoadNew( char *path, char *filename, int type, iBool palkeep, iBool bColourKeyed ) { char fname[MAX_FILE_PATH]; int i; iSprite *s; TEXTUREPAGE *TextPage; // pointer to the resource texture page structure ... palette stuff is BACK !!!!! // If we are in the BSP or PIEBIN tool, then just added it into the array and exit #ifdef PIETOOL return pie_AddBMPtoTexPages(NULL, filename, type, bColourKeyed, TRUE); #endif /* If it's not a resource - use old way! - PSX does not need this check because it MUST have been loaded allready by the resource loader */ if(!resPresent("TEXPAGE",filename)) { DBERROR(("Texture not in resources; %s.\n", filename)); return(iV_TexLoad( path, filename, type, palkeep, bColourKeyed )); } /* Ensure upper case for tex file names */ ASSERT ((strlen(filename)<MAX_FILE_PATH,"Texture file path too long")); /* Get a copy of the name */ // if we convert it to upper case ... the resource loading will not work for (i = 0; i < (int)strlen(filename); i++) { fname[i] = filename[i]; } /* Terminate it */ fname[i] = '\0'; /* Back to beginning */ i = 0; /* Have we already loaded this one then? */ while (i<_TEX_INDEX) { if (stricmp(fname,_TEX_PAGE[i].name) == 0) { /* Send back 3dfx texpage number if we're on 3dfx - they're NOT the same */ if(rendSurface.usr == REND_GLIDE_3DFX) { return(_TEX_PAGE[i].textPage3dfx); } else { /* Otherwise send back the software one */ return i; } } i++; } /* Get a pointer to the texpage in memory - we KNOW it's there from the check at start */ TextPage = (TEXTUREPAGE *)resGetData("TEXPAGE",filename); s = TextPage->Texture; return pie_AddBMPtoTexPages(s, fname, type, bColourKeyed, TRUE); }